代码之家  ›  专栏  ›  技术社区  ›  Sklivvz

哪些因素决定了开源项目的成功?[关闭]

  •  6
  • Sklivvz  · 技术社区  · 18 年前

    我们有一系列闭源应用程序和库,我们认为开放源代码是有意义的。

    到目前为止,阻碍我们的是在开放之前清理代码库和记录源代码所需的努力。

    只有当我们有合理的机会使项目成功时,我们才想开放源代码,即有贡献者。我们相信,这段代码会引起广大开发人员的兴趣。

    哪些因素, 不包括项目的“趣味性”和“实用性”, 决定一个开源项目的成功与否?

    示例:

    • 代码的清洁度
    • 源代码注释的可用性
    • 完全或部分记录的API
    • 许可证的选择(GPL、LGPL、BSD等)
    • 公共存储库的选择
    • 投资公共网站
    10 回复  |  直到 11 年前
        1
  •  5
  •   Sargun Dhillon    18 年前

    有几件事决定了代码的成功。为了获得通过的最小机会,必须实现所有这些目标。

    • 市场-你的开源项目必须有市场。如果你的项目是太空中的橘子榨汁机,我怀疑你会非常成功。您必须确保您的项目在用户和开发人员中得到广泛采用。如果你能让其他公司也采用它,那么成功的可能性是它的两倍。
    • 文档——正如您之前提到的,文档是关键。这些文档包括注释代码、体系结构决策和API注释。即使你的文档包含错误,或者关于你的软件的错误,也没关系。记住,透明度是关键。
    • 自由——你必须允许你的代码是“自由的”——我的意思是言论自由,而不是啤酒自由。如果你觉得你的市场是其他公司的库,BSD许可证是最好的。如果你的软件要在台式机上运行,那么GPL就是你的选择。
    • 透明度-您必须在透明的环境中编写软件。一旦你开源,就没有隐藏的秘密。你必须解释你所做的一切,以及你正在做什么。这会让开发人员感到愤怒
    • 开发者社区-需要一个强大的开发者社区。这必须存在。只有大约5%的用户对项目做出了贡献。如果有人注意到一年没有发布任何版本,他们不会认为“哇,这件软件已经完成了”,他们会认为“开发人员一定是抛弃了它”。让你的开发人员继续工作,即使这意味着他们要花你的钱。
    • 沟通——你必须确保你的社区能够沟通。他们必须能够提交错误、讨论解决方法并发布补丁。没有反馈,开源项目毫无意义
    • 可用性——让你的代码易于获取是必要的,即使这意味着惹恼律师。你必须确保你的项目易于下载和使用。你不希望用户必须跳过18个唠叨的屏幕并签署合同才能做到这一点。你必须把事情变得简单、干净
        2
  •  1
  •   Jan Hančič    18 年前

    我认为最重要的因素是使用你的项目的用户数量。 否则,它只是一堆写得很好、有用且记录良好的东西,放在服务器上做得不多。..

        3
  •  1
  •   jwanagel    18 年前

    要获得贡献者,首先需要用户,然后需要一些不完整性。你需要触发“这很酷,但我真的希望它有这个或以这种方式不同。”如果你缺少一个明显的功能,用户很可能会成为添加它的贡献者。

        4
  •  1
  •   Dark Shikari    18 年前

    最重要的是节目要好。如果它不好,没有人会使用它。你不能指望鸡和蛋会颠倒过来,人们会认为它是理所当然的,直到它变得好为止。

    当然,“好”仅仅意味着“对很多人来说,它比任何其他实用的选择都要好”,这并不意味着它是严格意义上最好的,只是它有一些功能,使它对许多人来说比其他选择更好。有时程序 其他任何地方都没有类似的东西,在这种情况下,在这方面几乎没有要求。

    当一个程序好的时候,人们就会使用它。显然,它必须在用户中有一个市场——一个好的程序做了没有人想要的事情,无论它的设计有多好,它都不是真正好的。人们可能会对营销提出一个观点,但真正好的产品在一定程度上有自我营销的倾向。推广不好的东西要困难得多,所以很明显,一个人的首要任务应该是产品本身,而不是推广产品。

    那么,真正的问题是——你如何把它做好?解决这个问题的答案是一个敬业、熟练的开发团队。一个人很少能自己创造出好的产品;即使他们比其他开发人员好得多,多个视角对项目也有非常有用的影响。这就是为什么有企业赞助商是如此有用——它让其他开发人员(来自公司)对这个问题有自己的看法。这在开发程序需要社区中不常见的大量专业知识的情况下尤其有用。

    当然,我这么说都是凭经验。我是x264(目前最活跃的一个)的主要开发人员之一,x264是最受欢迎的视频编码器之一。我们有两个主要的开发人员,社区中贡献补丁的各种次要开发人员,以及Joost(Gabriel Bouvigne,负责维护速率控制算法)、Avail Media(我有时与Avail Media签订合同,目前正在雇佣合同编码员以添加MBAFF交错支持)和不时出现的其他一些公司的赞助。

    一个好的开发人员并不能完成一个项目,许多好的开发员会完成。最终的结果是,一个程序可以比大多数商业竞争对手、硬件或软件更快、质量更好地编码视频,即使是那些拥有巨大开发预算的竞争对手。

        5
  •  1
  •   Will M    17 年前

    在研究这些问题时,您可能有兴趣查看 course on open source at UC Berkeley 《数字信息的开源开发和分发:技术、经济、社会和法律视角》。它由Mitch Kapur(莲花创始人)和法学院教授Paula Samuelson共同教授。我通勤时间很长,去年我把课程的音频放在了我的iPod上,他们从非常广泛的(尽管显然是学术性的)角度谈论了很多关于什么有效、什么无效以及为什么有效的话题。

        6
  •  1
  •   Jason Baker    17 年前

    关于这个主题已经写了很多书。事实上,你可以在这里找到一本免费的书: producing open source software

        7
  •  0
  •   Jonathon Reinhart    18 年前

    真的,我认为答案是“你如何运行这个项目”。

    是的,你所有的例子都很重要,但关键是如何管理开发人员之间的交互,如何处理/接受补丁等,谁“负责”以及他们如何处理这一责任,等等。

    比较和对比(历史不难追溯!)Perl中Class::DBI和DBIx::Class的开发管理。

        8
  •  0
  •   micahwittman    18 年前

    我今晚刚刚读到一篇关于成功与失败的开源项目的可用性方面的优秀文章。

    摘录:

    关于开源软件/自由软件(以下简称OSS)缺乏可用性的争论浪费了大量带宽。目前,博客、论坛和Slashdot评论线程上的争论仍在继续。有人说,糟糕的可用性是整个开源软件世界的普遍现象,而另一些人则说开源软件的可用性很好,但真正的问题是那些思想封闭的用户,他们希望每个程序都能克隆微软。有些人认为UI问题是暂时的成长之痛,而另一些人则认为OSS开发模式系统地产生了糟糕的UI。有些人甚至认为GPL间接奖励了难以使用的软件!(郑重声明,我不同意。)

    http://humanized.com/weblog/2007/10/05/make_oss_humane/

        9
  •  0
  •   user11104    18 年前

    只要开源就行了。很可能还没有人会开始贡献。但至少你可以在新闻稿上写下你的产品是GPL或其他什么。

    第一步是人们开始使用它。。。
    也许到那时,当用户感到舒适后,他们会开始做出贡献。

        10
  •  0
  •   MattC    17 年前

    到目前为止,每个人的答案都很好,但还有一点缺失,那就是良好的监督。没有什么比没有某种项目管理更快地扼杀开源项目了。不要告诉人们该做什么,而只是为你希望吸引的开发人员添加一些结构和任务。

    混乱的项目很快就会崩溃。这不是一只你放手看着它飞走的鸟。

    推荐文章