关于不可知语言:哪些因素决定了开源项目的成功?

关于不可知语言:哪些因素决定了开源项目的成功?

Which factors determine the success of an open source project?

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

到目前为止,阻碍我们前进的是在开放代码之前需要清理代码库并记录源代码。

只有在我们有合理的机会成功完成项目时(即有贡献者),我们才希望开放资源。 我们坚信该代码对于大量开发人员而言将是有趣的。

哪些因素(不包括项目的"有趣性"和"有用性")决定了开源项目的成功?

例子:

  • 代码清洁度
  • 源代码注释的可用性
  • 完整或部分记录的API
  • 许可选择(GPL,LGPL,BSD等)
  • 选择公共仓库
  • 投资公共网站

有几件事控制着代码的成功。所有这些都必须获得通过的最小机会。

  • 市场-您的开源项目必须有一个市场。如果您的项目是太空榨汁机,那么我怀疑您会成功。您必须确保您的项目在用户和开发人员中得到广泛采用。如果您也可以让其他公司也采用它,那么成功的可能性是后者的两倍。
  • 文档-涉及到较早的文档是关键。本文档中包括注释的代码,体系结构决策和API注释。即使您的文档中包含错误或有关软件的错误,也可以。记住,透明度是关键。
  • 自由-您必须允许您的代码"自由"-所谓自由,是指言论自由,而不是啤酒自由。如果您感觉自己的市场正在成为其他公司的图书馆,那么BSD许可证是最佳选择。如果您的软件要在台式机上运行,??那么GPL是您的选择。
  • 透明度-您必须在透明环境中编写软件。一旦开源,就没有隐藏的秘密。您必须说明您所做的一切以及您在做什么。这会让开发人员大为恼火
  • 开发者社区-需要一个强大的开发者社区。这必须存在。只有大约5%的用户回馈该项目。如果有人注意到一年没有发布任何版本,他们会认为"哇,这件软件已经完成了",他们会认为"开发人员必须丢弃它"。让开发人员继续努力,即使这意味着他们要花钱。
  • 交流-您必须确保您的社区能够交流。他们必须能够提交错误,讨论解决方法以及发布补丁。没有反馈,将项目开源是没有意义的
  • 可用性-使代码易于获取是必要的,即使这意味着惹恼律师。您必须确保您的项目易于下载和使用。您不希望用户必须跳过18个nag屏幕并签署合同才能执行此操作。您必须使事情简单,整洁

关于这个主题的书已经写好了。实际上,您可以在这里找到一本免费的书:生产开源软件


在研究这些问题时,您可能有兴趣查看UC Berkeley的开源课程的在线版本,该课程称为"数字信息的开源开发和发行:技术,经济,社会和法律观点"。它由莲花创始人Mitch Kapur和法学院教授Paula Samuelson共同讲授。我的通勤时间很长,去年在我的iPod上播放了该课程的音频-他们从非常广泛的(尽管显然是学术的)角度谈论了什么有效,什么无效以及为什么。


最重要的是程序要好。如果它不好,没有人会使用它。您不能指望鸡和鸡蛋会逆转,人们会视之为理,直到它变好为止。

当然,"好"仅意味着"比许多人的任何其他实际选择都要好",这并不意味着它严格地是最好的,只是它具有使许多人比其他人更好的功能。其他选择。有时,该程序在其他任何地方都没有等效项,因此在这方面几乎没有要求。

当一个程序很好时,人们就会使用它。显然,它必须在用户中占有一席之地-一个好的程序,不管设计得多么好,它所做的任何事都不是好事。人们可以对市场营销发表看法,但是真正好的产品在某种程度上具有推销自己的趋势。推广不好的东西要困难得多,因此很明显,一个人的首要任务应该是产品本身,而不是推广产品。

那么,真正的问题是:如何使它变得更好?对此的答案是一支敬业,技术精湛的开发团队。一个人很少能自己创造出好的产品。即使他们远胜于其他开发人员,多种观点对项目也有非常有用的影响。这就是为什么拥有公司赞助商如此有用的原因-它使其他开发人员(来自公司)对问题提出了自己的想法。如果开发该程序需要社区中通常不具备的大量专业知识,则此功能特别有用。

当然,我说的都是经验。我是x264(目前最活跃)的主要开发人员之一,这是最受欢迎的视频编码器之一。我们有两个主要的开发人员,社区中的各个小开发人员提供补丁,以及Joost(负责维护费率控制算法的Gabriel Bouvigne),Avail Media(我有时是按合同工作,目前正在按合同聘请编码员)的公司赞助。以添加MBAFF隔行支持),以及不时弹出的其他一些信息。

一个好的开发人员不会做一个项目-许多好的开发人员会做。最终的结果是,该程序可以比大多数商业竞争对手,硬件或软件,甚至那些拥有巨大开发预算的竞争对手,更快地以更高的质量对视频进行编码。


要获取贡献者,您首先需要用户,然后需要一些不完整之处。您需要触发"这很酷,但是我真的希望它具有这种或不同的方式。"如果您缺少明显的功能,则用户很可能会成为添加该功能的参与者。


我认为最重要的一个因素是正在使用您的项目的用户数量。
否则,它只是一堆写得很好,有用且有据可查的东西,它们坐在服务器上做得并不多。


到目前为止,每个人的答案都不错,但是缺少一件事,那就是很好的监督。没有某种项目管理,没有比杀死开源项目更快的了。不要告诉别人要做什么,而只是为您希望吸引的开发人员添加一些结构和任务。

杂乱无章的项目迅速瓦解。这不是只鸟,您只是放开它,看着它飞走。


只是开源。最有可能的是,没人会开始捐款。但是至少您可以在新闻稿上写到您的产品是GPL或其他任何产品。

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


今晚我只是读了一篇关于成功与不成功的开源项目的可用性方面的精彩文章。

摘抄:

A lot of bandwidth has been wasted arguing over the lack of usability in open-source software/free software (henceforth"OSS"). The debate continues at this moment on blogs, forums, and Slashdot comment threads. Some people say that bad usability is endemic to the entire OSS world, while others say that OSS usability is great but that the real problem is the closed-minded users who expect every program to clone Microsoft. Some people contend that UI problems are temporary growing pains, while others say that the OSS development model systematically produces bad UI. Some people even argue that the GPL indirectly rewards software that’s difficult to use! (For the record, I disagree.)

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


确实,我认为答案是"您如何运行项目"。

您的所有示例都很重要,是的,但关键的事情是如何管理开发人员之间的交互,如何处理/接受补丁等,由谁"负责"以及他们如何承担这种责任等等。

比较和对比(不难找到历史!)在Perl中对Class :: DBI和DBIx :: Class的开发进行管理。


推荐阅读

    探探语言设置|探探怎么设置语言

    探探语言设置|探探怎么设置语言,,1. 探探怎么设置语言打开探探软件,然后就有消息提示的红点,点开就行了!其实这些软件都是挺简单的操作的,都是

    git设置编码|git语言设置

    git设置编码|git语言设置,,git设置编码点击cap4j搜索从git直接链接上拉代码。git语言设置Git是一个开源的分布式版本控制系统,可以有效、高

    vue项目一些常见问题

    vue项目一些常见问题,组件,样式,**样式污染问题**同样的样式不需要在每个组件都复制组件内单独的样式加外层class包裹。加scope。否则只是

    未知软件异常应用程序错误解决方案

    未知软件异常应用程序错误解决方案,,我有很多朋友的电脑未知软件异常应用程序错误的问题,对于异常未知的软件异常中的应用一般提示(0xc00000

    小米手机安装的应用程序包在哪里

    小米手机安装的应用程序包在哪里,,问题: 下载小米手机系统的安装文件在哪里 答案uff1a 下载应用程序包位置:SD卡>下载。 (摘自:小米手册:米

    应用程序对象

    应用程序对象,,应用程序对象是一个应用程序级对象,用于在所有用户之间共享信息,并且在Web应用程序运行期间可以保存数据。 应用的性质: 方法