哪些因素决定了开源项目的成功?

6
我们有一系列闭源应用程序和库,我们认为开放源代码是有意义的。迄今为止阻碍我们的问题是在开放之前需要清理代码并记录源代码。
我们只有在项目有贡献者时才想要开放源代码——即使项目有合理的成功机会。我们相信这些代码对广大开发人员很有趣。
除了“有趣性”和“实用性”之外,哪些因素决定了开源项目的成功?
例如:
- 代码的规范性 - 源代码注释的可获得性 - 完全或部分记录的API - 许可证选择(GPL vs. LGPL vs. BSD等) - 公共存储库的选择 - 投资于公共网站
10个回答

5
有几个因素影响代码的成功性。为了使开源项目被采用,所有这些因素都必须达到。
  • 市场 - 必须有市场需求才能成功。如果你的项目是太空中的橙汁机,那么你很可能不会非常成功。你必须确保你的项目在用户和开发者中得到广泛采用。如果其他公司也采用它,成功的可能性将增加一倍。
  • 文档 - 正如你之前提到的,文档至关重要。其中包括注释代码、架构决策和API说明。即使你的文档包含有关软件的错误或漏洞,也没关系。记住,透明度至关重要。
  • 自由 - 你必须允许你的代码是“自由”的 - 我的意思是言论自由,而不是免费的啤酒。如果你觉得你的市场是成为其他公司的库,那么BSD许可证是最优选择。如果你的软件将在桌面上运行,那么GPL是你的选择。
  • 透明度 - 你必须在透明的环境中编写软件。一旦你开源了,就没有隐藏的秘密。你必须解释你所做的每件事情以及你正在做的事情。这会让开发者非常生气。
  • 开发者社区 - 必须有一个强大的开发者社区。这必须是现有的。只有约5%的用户会向项目做出贡献。如果有人注意到一年没有发布任何版本,他们不会认为“哇,这个软件已经完成了”,而是会认为“开发者可能已经放弃它了”。让你的开发者继续工作,即使这意味着他们会花费你的金钱。
  • 沟通 - 你必须确保你的社区能够进行沟通。他们必须能够提交错误报告、讨论解决方法并发布补丁。没有反馈,开源项目就是毫无意义的。
  • 可用性 - 让你的代码易于获取是必要的,即使这意味着惹恼律师。你必须确保你的项目易于下载和使用。你不希望用户在执行此操作时必须通过18个提示屏幕并签署合同。你必须让事情变得简单、干净。

1

我认为最重要的因素是使用你的项目的用户数量。 否则,它只是一堆写得很好、有用且文档完备的东西,闲置在服务器上没有什么作用...


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

1
最重要的是程序要好。如果不好,没人会使用它。你不能指望鸡生蛋、蛋生鸡的情况会逆转,人们会默认它好到一定程度。
当然,“好”只是指“对大多数人来说比其他实际选择更好”,并不意味着严格意义上的最好,只是它具有一些特点,使得对许多人来说比其他选择更好。有时候,这个程序在其他地方根本没有相应的替代品,这种情况下几乎没有这方面的要求。
当一个程序很好时,人们会使用它。显然,它必须在用户中有市场 - 一个好的程序如果没有人想要的功能,那么无论设计得多好都不算真正好。可以提到营销的重要性,但真正好的产品在一定程度上往往能够自我推广。推广不好的东西要困难得多,所以首要任务应该是产品本身,而不是推销产品。
那么真正的问题是——如何让它变得优秀?答案是一个专注、熟练的开发团队。一个人很难独自创造出一个好的产品;即使他们比其他开发者更优秀,多个视角对项目有着极其有用的影响。这就是为什么拥有企业赞助商如此有用——它可以让其他开发者(来自公司)的思想参与其中,给出自己的意见。特别是在开发程序需要社区中普遍不可用的重要专业知识的情况下,这一点尤其有用。
当然,我说这些都是基于经验的。我是x264的主要开发人员之一(目前最活跃的开发人员之一),这是最受欢迎的视频编码器之一。我们有两个主要开发人员,在社区中有各种贡献补丁的次要开发人员,以及来自Joost(维护速率控制算法的Gabriel Bouvigne)、Avail Media(我有时会在合同上为他们工作,他们目前正在聘请合同程序员添加MBAFF交错支持)和其他一些偶尔出现的赞助商的企业赞助。
一个好的开发人员不能成就一个项目——许多好的开发人员才能。这样做的最终结果是,该程序比大多数商业竞争对手(无论是硬件还是软件,即使是那些拥有极其庞大的开发预算的竞争对手)更快地编码视频,并且质量更好。

1
在查看这些问题时,您可能会对加州大学伯克利分校的开放源代码课程在线版感到感兴趣,该课程名为数字信息的开源开发和分发:技术、经济、社会和法律视角。它由Mitch Kapur(Lotus创始人)和法学教授Paula Samuelson共同授课。去年我长途跋涉并将课程音频放在了iPod上 - 他们从非常广泛的(尽管显然是学术的)角度讨论了什么起作用,什么不起作用以及为什么。

1

这个主题已经有很多书籍写过了。事实上,你可以在这里找到一本免费的书:开源软件的生产


0

实际上,我认为答案在于“你如何运行项目”。

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

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


0

我刚刚阅读了一篇有关成功与失败的开源项目可用性方面的优秀文章。

摘录:

大量的带宽已经被浪费在争论开源软件/免费软件(以下简称“OSS”)中缺乏可用性上。这场辩论正在博客、论坛和 Slashdot 评论中继续。有些人认为糟糕的可用性是整个 OSS 世界的问题,而另一些人则认为 OSS 的可用性很棒,但真正的问题是那些思维闭塞的用户,他们期望每个程序都能克隆 Microsoft。有些人认为 UI 问题只是暂时的成长烦恼,而其他人则说 OSS 开发模式系统地产生了糟糕的 UI。甚至有些人认为 GPL 间接地奖励难以使用的软件!(声明一下,我不同意这种观点。)

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


0

只需开源它。很可能,没有人会开始贡献。但至少你可以在新闻稿上写明你的产品是GPL或其他。

第一步是让人们开始使用它...
也许在用户感到舒适之后,他们会开始贡献。


0

到目前为止,大家的回答都很好,但缺少一件事,那就是良好的监督。没有某种项目管理,没有什么比这更能够迅速扼杀开源项目了。并不是要告诉人们该做什么,而是为了为你希望吸引的开发人员添加一些结构和任务。

组织混乱的项目很快就会崩溃。它不是一只鸟,你可以放手让它飞走。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接