开源在过去的30年走过了很长的一段路,当下已经进入了主流的文化意识中,当思考开源项目时,人们习惯使用如下一系列来归类:治理结构、产品平台类型、编程语言、效用、技术细节(什么语言编写)、企业赞助或完全独立等等。
但是什么是真正可定义一个开源项目?或者什么是区别于其他开源项目的独特存在?我的建议,从框架、定义及区别的角度讲,有三个要素是开源项目的根本:代码、社区和品牌。
代码
代码为王,代码就是能够使产品做什么的东西,也是一个开源项目起始的原因:做一些有用的东西!技术上令人兴奋的:代码做什么,它是如何工作的。市场上令人兴奋的是:此产品如何解决了客户的问题。代码是人们在寻找开源项目用来使用时多数人最渴望找的东西。
听起来似乎足够简单—但是我们为什么不单纯基于代码来定义一个开源项目了呢?做过软件开发的任何人都清楚:代码是永久变动和临时的。在开源领域,从传统公司主导的项目控制中解放出来,代码变得非常难以跟随:开源代码是无限进行分支的。一旦你的代码是基于开放源代码促进会(OSI)的许可证下公开了仓库,它就是完全对所有人可访问,每个人都可以拿到,并按照自己的需求来更改。一旦其他人fork了你的项目,哪怕是做一丁点的改动,它就不再是你原来项目的一部分了。
社区
如果说代码解释了项目是什么,那么社区就是谁,什么人让这一切成为了现实。项目社区的核心包括那些活跃的是整个项目往前推进的人,诸如作出代码贡献的工程师,提供反馈的最终用户,提出特殊修改的人。从整个社区来讲,还包括那些不是提交代码的人们,但是提供支持,诸如治理/流程监督、公共关系/市场、培训、财务或雇员支持。社会规范,礼仪,以及社会各界的帮助,以区别于其他所有的项目的事项。
参与到开源项目中的部分人员是本身就有其他公司发工资的(例如:一个公司雇佣一个工程师,赋予他/她在工作的百分之多少去为开源项目做贡献),多数的开源社区是自愿参与且并不能直接从社区获得报酬,所以成员或是兴趣转变、或是其他社区挖走、或者某公司改变了战略,来来去去很正常,和代码一样,社区是永久变动的。
不像一家公司开发软件项目那样,可以根据现有人员及其他们的技能来规划特定的任务,参与到开源社区是不可预测的,而且经常对项目失去控制,由于个人冲突上升所导致的拥有高级技能的工程师离开,相比在一家有报酬的公司,是非常容易发生的。但是开源社区还是有很多优点可以看到:由热情所驱动的多数社区成员,那些成功的项目社区长期发展,同步和推荐代码的伟大工作。
品牌
品牌是一个开源项目之外的世界是如何得知该项目的口碑。当个人或公司决定使用或投资某个项目时,品牌将是在同等功能的情况下作出的选择,当然他们会考虑其他的细节,但是剩下的相对要简单的多。“我要支持Hadoop吗?一个黄色的大象”,要比“我要支持cloudera的CDH或这Hortonwork数据平台吗?或者是新的号称的ODP?“强好多。
“品牌“一词包含很多内容:项目的官方名称,项目或产品的logo,以及项目网站的表现,和产品的用户界面,特别是一些品牌的组件是合法的商标:这些通常包括官方的软件产品的名称和标志,虽然商标是强烈建议一直使用的。
不像代码和社区,一个项目的品牌不是永久变动或者临时的。一个商标是不可以随意fork的,除非法律上的授权。且项目品牌要保持一致,哪怕是社会成员有所波动。在许多方面,品牌和商标是最容易控制且维护的项目组成部分。作为定义项目独特性元素的重要工具的品牌,哪怕是遭遇商标不被正确的使用,甚至是项目内部的社区都不怎么承认,都得坚持。
让所有人能够fork代码,社区倡导成员自由参与和放弃,一个项目的品牌和商标确实维持项目长期运作、独立、继续吸引新的社区志愿者的关键因素。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/46519.html