我提出这个问题的主要动机是this uservoice suggestion。杰夫拒绝了这张SO软件开源的说法,说它需要更多的时间。
我之前已经在从专有到开源的各种其他软件中看到了这一点。所以,我的问题是:为什么制作软件开源需要这么长时间?对我来说,这似乎很简单:将你的代码放在sourceforge和google代码上并完成它。但显然我在整个过程中都缺少一些东西。
(在任何人得到的印象是我试图批评杰夫或其他任何推迟开源软件的人之前,我不是。我只是想了解开源的过程和它的成本。)
答案 0 :(得分:5)
通常它需要所有贡献者同意,对于某些项目来说,这意味着你必须问很多人是否可以打开他们的代码。
对于其他项目,它要求您以前使用的库是开源的,或者从您使用它们的项目中取出。 IIRC孙说他们不能open Java这么长时间,因为他们使用了一些无法打开的第三方代码。
答案 1 :(得分:5)
您的问题的主要答案已由其他人提供 - 获得法律许可(参见Reverse Engineering the WMD Editor上的SO博客条目,了解与SO相关的问题儿童)通常非常困难,甚至是不可能的。
所以,我的问题是:为什么软件开源需要这么长时间?对我来说,这似乎很简单:将您的代码放在Sourceforge和Google Code上并完成它。但显然我在整个过程中都缺少一些东西。
你所描述的 - 倾销源 - 并不是真正的开源。它更像是AbandonWare或者也许是“可用来源”。开源项目需要接受来自外部的输入,并建立社区。 Apache Software Foundation用于其孵化器项目的标准之一是“它是否从原作者之外获得了大量的贡献者?”。这是一个有效的问题。
请注意,AbandonWare和“可用来源”都不一定是坏事;两者都使代码可用,否则将无法使用(并提供开源的一些好处)。但开放源代码还有更多。
此外,处理真正的开源项目存在管理开销。这不可忽视。
最后,代码质量并不是闻所未闻的,作者宁愿不要因为害怕嘲笑而使源可用。我怀疑这是否适用于这种情况,但它可以在软件世界的其他领域。
答案 2 :(得分:3)
原因是:
关于第一个问题,请注意您可能正在使用第三方代码,因此您必须完成所有代码,确保您有权将其全部用于开源。
第二,它要求项目所有者想要开源项目。在某些情况下,他/她可能认为这不值得。
答案 3 :(得分:3)
打开源可能是好还是坏。在最好的情况下,他们只受益于社区的贡献,保持创造性的控制。在最坏的情况下,项目可以分叉,两个不同的代码库通常不利于社区。 p>
在SO的情况下,他们可能担心如果有足够的人不耐烦,那么过早地打开源是邀请项目的一个分支,因为其他开发人员比SO更快(或不同)地实现他们的“宠物”功能。也许那些人真的想要被拒绝的功能。
分叉也带来了肖恩提到的竞争方面。也许很久以后当SO拥有一个更加完善的社区时,开放源头将更容易被接受,因为SO将在任何潜在的竞争中占据先机。保守的做法是在做出决定之前先等一下,而不是现在就开放,希望能做到最好。
编辑:请注意,即使在最好的情况下,他们也承担着管理开源项目和处理任何想要贡献的人的额外角色。我想到了“放牧猫”的信息,他们可能希望立即专注于代码库而不是管理费用。
答案 4 :(得分:1)
在开源之前,需要考虑以下因素:
您是否合法地能够使代码成为开源代码?由于图书馆,其他贡献者等
你有商业模式/你需要吗?在像SO或Digg这样的项目中,边缘主要在社区中,那么它应该没问题,但在其他项目中部署在企业防火墙内部使得操作系统降低了赚钱以支付成本的能力。虽然有些公司通过支持来做到这一点,但是获得支持成本的能力取决于产品的性质以及对部署它的公司的重要程度。
您对社区的感受如何?有大量的开源项目有1或2个贡献者,而且没有多少用户贡献补丁。如果是这种情况,那么间接费用可能比任何福利都要大。
您准备好支持其他人在其他垂直行业甚至同一行业中部署您的产品吗?这意味着论坛,邮件列表,错误跟踪器,易于使用的升级脚本,文档等。
要使项目成功开源,必须妥善管理。把代码放在那里根本就不够。你最终会得到一个不愉快的社区,并且可能是一个你无法控制的分叉。