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

时间:2008-09-17 08:05:55

标签: language-agnostic open-source project-management

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

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

我们希望只有在项目成功的合理机会 - 即有贡献者的情况下才开放源代码。我们确信代码对于大量开发人员来说会很有趣。

哪些因素不包括项目的“趣味性”和“有用性”,确定开源项目是否成功?

示例:

  • 代码的清洁度
  • 源代码评论的可用性
  • 完全或部分记录的API
  • 许可证的选择(GPL与LGPL vs. BSD等......)
  • 选择公共存储库
  • 投资公共网站

10 个答案:

答案 0 :(得分:5)

有几个因素决定了代码的成功。所有这些必须通过最轻微的采用机会来实现。

  • 市场 - 您的开源项目必须有市场。如果你的项目是太空中的橙色榨汁机,我怀疑你会非常成功。您必须确保您的项目在用户和开发人员中得到广泛采用。如果你能让其他公司也采用它,它的成功率是成功的两倍。
  • 文档 - 如前所述,文档是关键。本文档包括注释代码,架构决策和API说明。即使您的文档包含有关软件的错误或错误,也可以。请记住,透明度是关键。
  • 自由 - 你必须允许你的代码“免费” - 我的意思是在言论中自由,而不是在啤酒中。如果您觉得您的市场是其他公司的图书馆,那么BSD许可证是最佳选择。如果您的软件将在桌面上运行,那么GPL是您的选择。
  • 透明度 - 您必须在透明的环境中编写软件。一旦你开源,就没有隐藏的秘密。你必须解释你所做的一切,以及你在做什么。这会让开发人员像其他人一样惹恼。
  • 开发人员社区 - 需要强大的开发人员社区。这必须存在。只有约5%的用户回馈该项目。如果有人注意到一年没有任何发布,他们就不会想“哇,这件软件已经完成”,他们会认为“开发商必须抛弃它”。让你的开发人员继续努力,即使这意味着他们花了你的钱。
  • 通讯 - 您必须确保社区能够沟通。他们必须能够提交错误,讨论解决方法并发布补丁。没有反馈,开源项目是没有意义的
  • 可用性 - 使代码易于获取是必要的,即使这意味着惹恼了律师。您必须确保您的项目易于下载和使用。您不希望用户必须跳过18个唠叨屏幕并签署合同才能执行此操作。你必须简单,干净

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

最重要的是该计划是好的。如果它不好,没有人会使用它。你不能指望鸡蛋和鸡蛋会逆转,人们会把它视为理所当然,直到变好为止。

当然,“好”仅仅意味着“比许多人的任何其他实用选择更好”,并不意味着它绝对是最好的,只是它具有一些特征,对很多人而言,比其他选择更好。有时程序 在其他地方没有等价物,在这种情况下几乎没有这方面的要求。

当程序良好时,人们会使用它。显然,它必须在用户之间建立一个市场 - 一个好的程序可以做任何人无法想象的事情,无论它的设计有多好。人们可以指出营销,但真正优秀的产品,在某种程度上,倾向于推销自己。它更难以推广不好的东西,所以显然首要任务应该是产品本身,而不是推广产品。

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

当然,我是根据经验说的。我是x264(目前最活跃的)的主要开发者之一,是最受欢迎的视频编码器之一。我们有两个主要开发人员,社区中的各种小型开发人员,提供补丁,以及来自Avail Media的Joost(Gabriel Bouvigne,负责维护速率控制算法)的公司赞助(我有时在合同工作,目前正在雇用合同添加MBAFF隔行扫描支持),以及其他一些不时出现的隔行扫描支持。

一个优秀的开发人员不会创建项目 - 许多优秀的开发人员都会这样做。最终的结果是一个程序,可以比大多数商业竞争对手,硬件或软件更快,更好地编码视频,甚至是那些具有极高开发预算的视频。

答案 4 :(得分:1)

在查看这些问题时,您可能有兴趣查看course on open source at UC Berkeley的在线版本,称为开源开发和数字信息分发:技术,经济,社会和法律视角。它由Mitch Kapur(莲花创始人)和法学院教授Paula Samuelson共同教授。去年我通勤了很长时间,并将课程的音频放在我的iPod上 - 他们从非常广泛(虽然显然是学术性的)的角度讲述了很多关于什么有用,有什么不可以以及为什么有用的。

答案 5 :(得分:1)

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

答案 6 :(得分:0)

真的,我认为答案是'你如何运行项目'。

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

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

答案 7 :(得分:0)

今晚我正在阅读关于成功与不成功的开源项目的可用性方面的优秀文章。

摘录:

  

许多带宽被浪费在争论开源软件/自由软件(以下简称“OSS”)缺乏可用性。此时辩论仍在博客,论坛和Slashdot评论主题上继续进行。有些人说恶劣的可用性是整个OSS世界的特有情况,而另一些人则说OSS的可用性很好,但真正的问题是那些期望每个程序都能克隆微软的封闭式用户。有些人认为UI问题是暂时成长的痛苦,而另一些人则认为OSS开发模型系统地产生了糟糕的UI。有些人甚至认为GPL间接奖励难以使用的软件! (为了记录,我不同意。)

     

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

答案 8 :(得分:0)

开源吧。最有可能的是,没有人会开始贡献。但至少你可以在新闻稿上写下你的产品是GPL或其他什么。

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

答案 9 :(得分:0)

到目前为止,每个人的答案都很好,但有一件事缺失了,这是一个很好的疏忽。没有什么比没有某种项目管理更快地杀死开源项目。不要告诉别人该做什么,只为想要吸引的开发者添加一些结构和任务。

混乱的项目快速崩溃。它不是一只鸟,你只是放开它看着它飞走。