特别声明
本文拥有创作共用授权之相同方式共享授权4.0版国际许可协议(Creative Commons Attribution ShareAlike 4.0 International License)授权许可。 开源之道独立精心翻译分享,欢迎同道中人商讨。
一旦企业已经参与到开源社区足够长时间,而且也建立了一定的声誉,那么这个时候就有了创建自己的开源项目的资格了。处于此阶段的企业由于参与了开源,也已经意识到从开放的协作中可以获得的益处。那么就会考虑将专有的项目开源出来,社区也许会用得着。另外一个常见做法是从头开始创建新的开源项目,并从一开始就受益于外部开发人员之间的协作。
本文旨在帮助那些已经熟悉开源的企业,他们希望学习和了解更多信息,用以启动他们自己的开源项目。全文会带着读者完成整个开源的过程:从觉得开源什么、到预算和法律的考量等等,非常细致的各个方面。读者你可能觉得创建开源项目相对比较陌生,但是要知道,Google 、IBM 、FaceBook 、Twitter 、微软等公司已经开源了很多项目了,他们早已经为我们开辟好了开源这条道路。按照本文所提供的建议和提示做,你一定不会走偏。
项目启动,包括项目的编码部分,是不应该让企业成为该项目的权威的。更何况,开源本身就是希望有一大波来自全球的技术人员来帮助企业解决问题的。对于企业来讲,如果不是关键业务的代码,那么将之作为开源的备选是非常不错的选择。无论怎样,作为发起的企业,应该积极的进行使用和维护。这些代码一旦被其它企业所采用,形成商业上的依赖,那么就会有持续不断的反馈,如修复 bug 、打补丁、甚至是开发新的功能。
Facebook 开源出来的很多项目均是自己内部正在使用的项目,Facebook极力的推动正在生产中的代码开源,这也就意味着,正是由于Facebook的规模,说明了这些项目是经过了实际的考验的和验证的,Facebook贡献给社区的是专业级别的。还有另外一件重要的事情是,我们Facebook使用这些项目,所以不希望这些项目被遗弃或者不被支持,Facebook的工程师们太需要他们了。”
– Christine Abernathy, Facebook 开源开发者布道师
另外需要考虑的一个问题就是,贵司所开发的项目是否是独一无二的,亦或是其它公司因为遇到类似的问题已经开发了类似的项目。那么就要问问:此开源项目是否是贵司很重要的业务?贵司是否会作为公司的策略而进行支持和管理?是否有用户在寻求类似的问题解决方法?如果这些问题的答案都是肯定的话,那么就表明这个项目是非常有意义的。
还有,作为项目主管的你还要决定是否打算将项目捐赠给中立的、非营利性的组织,换句话说,你是否会将自己亲手打造的项目,从具有绝对控制权的位置上退下来。和以往的回答一样,我们给出的答案是这取决于你自己,以及你想要达到何种目的。
“你之所以去开源一个项目,大约是意识到潜在项目中的内容对于贵司来说不是特别的重要,但是你又不乐意放弃控制权,期望还能控制它未来的走向。这些都没有关系的,相信你明白了当其他开发者参与到项目中时,随着项目的发展和壮大,你自己会做出明智的决定的。所以,简单的平衡一下利弊,就开源吧!”
– John Mertic, Linux基金会项目管理总监
“作为 Facebook 的工程师决定要开源一个项目的时候,会琢磨很多事情。但是首先需要确定的是这几件事:这个项目将对 Facebook 公司以外的开发人员有用吗?且这个项目将会是变革性的吗?这是我们可以展示的东西吗?以及是否将会有一个围绕此项目建立的社区,维护此项目的人能否为社区提供支持?”
– Christine Abernathy, Facebook 开源开发者布道师
举例来说,你或许只是打算在非核心业务的应用程序吸引一些有新鲜见解的开发者,又或许只是想找到系统监控应用的探测日志的更优算法,相比较将产品的整个项目开源,你可能更加的倾向于将涉及到算法的那部分代码给开源了。这样可谓是一举两得,既能获得社区其他人的贡献,又能帮助到和你遇到相似问题的人们,然而最为重要的,所开源的部分也不会波及到你的核心业务。
从头开启一个项目并维护全部的控制权,也会让你拥有监督的权力,也会让你根据需要来打磨项目,以及拥有为正在做贡献的开发者们赋予自由和控制的权力,从而让他们能够更好的完成工作。
相比较而言,将项目捐赠给基金会是完全不同的体验。它意味着你放弃一些控制权,需要交接这些权力给其他的维护者和管理员。这些代码可能对于贵司来说已经过时,但可能对于其它公司还是有用处的,因为对于用户来讲,这中间是有一定的利基存在的。如此这些代码,贵司可能不会花过多的时间去维护它,但是开源社区还是非常欢迎的,而且交给开源社区,可能会发展出一个长久的项目来。当然有时候贵司所开源的代码是相当重要的,这也没有问题了,你为项目找到了一个中立的环境,可以吸引更多的参与者,并发展出一个广泛的生态系统。
以上而言都是可行的选择,但是千万不要去做一些让人看起来很不舒服的事情,如你所捐赠的项目是没有用的、不再使用的、你本身对它也没有任何兴趣的,而你只是希望社区去维护它。不要心存什么侥幸心理,想让那些过时的项目通过开源社区来重新获得活力。如果你的项目没那么的重要,你捐赠出来,则会让开源界对你失去信任,那样的话,即使你以后在贡献出好的项目来,这些开发者们也不会对你产生任何的兴趣。对于这些高傲的开发者来说,你的项目只是在浪费他的时间,这一定不是你想看到的。
“假如你今年创立了三个开源项目,而且它们货真价实,那么就会被好的社区所吸引,进而生产出高价值的项目,这要比一年创建10个开源项目强太多了。诚恳的说,开源社区是一个重视质量胜过一切的地方,开源社区不在乎数量,而且拥有自我过滤优秀项目的天然属性。假如你创建了十个糟糕的项目,你不会有任何的吸引力。你唯一的选择就是开源优秀的项目,别无他路!”
- Guy Martin
本文分享自微信公众号 - 开源社(kaiyuanshe)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。