在过去的 30 年里,开源已经取得了长足的进步,并正在进入大多数现代文化的意识。当想到开源项目时,人们会以多种方式对其进行分类:治理结构、产品平台类型、编程语言、实用性、技术细节(使用的语言)、行业赞助或完全独立等等。
但是,真正定义任何开源项目,使其成为与其他所有开源项目不同的独特实体的又是什么呢?我建议,任何开源项目都有三个关键要素,它们构成、定义和区分该项目与所有其他项目:代码、社区和品牌。
代码
代码是王道。代码使产品能够做某事,这就是开源项目最初存在的原因:构建有用的东西。技术人员对代码的作用以及它如何实现其功能感到兴奋。营销人员对产品将如何解决客户的问题感到兴奋。代码是大多数人在搜索要使用的开源项目时所寻找的东西。
听起来很简单——那么为什么我们不纯粹根据代码来定义一个开源项目呢?任何从事软件开发工作的人都知道,代码是不断变化且转瞬即逝的。在开源领域,摆脱了企业主导项目的传统控制,“代码”可能变得非常难以追踪:开源代码是无限可分叉的。一旦您的代码根据开源促进会 (OSI) 许可签入公共存储库,任何人都可以完全访问并获取——并修改——以用于自己的目的。一旦另一个用户从您的项目分叉代码并进行轻微修改,它就不再是您原始项目的正式组成部分。
社区
如果代码是一个项目的“内容”,那么社区就是项目的“人”——使这一切发生的人。项目的核心社区包括积极参与推动项目前进的任何人,例如编写代码的工程师以及提供反馈或请求特定修改的最终用户。总体社区还包括不检查代码但提供支持的人员,例如治理/流程监督、公共关系/营销、培训或财务或就业支持。社区的社会规范、礼仪和精神有助于区分一个项目与所有其他项目。
虽然参与开源项目可能是某些人有偿工作的一部分(例如,公司雇用的软件工程师被分配在一定比例的时间内从事开源项目),但大多数开源社区成员都是自愿参与的,与他们的薪水没有直接联系。因此,成员倾向于来来去去,因为他们的兴趣或其他承诺会时起时伏,或者随着雇主改变策略而变化。与代码一样,社区也是不断变化的。
与可以计划拥有具备特定技能的员工来分配做特定工作的公司软件开发项目不同,参与开源社区是不可预测的,并且通常超出项目的控制范围。个性冲突会发生,并且可能导致高技能贡献者比他们离开有偿工作更容易离开社区。但是,开放社区的好处可以在许多社区成员的热情和动力中,以及在成功项目社区的持久性中,以及在代码的同步性和出色的工作中看到。
品牌
品牌是外部世界了解开源项目的方式。当个人或公司决定使用或投资哪个项目时,品牌有助于他们区分提供类似功能的项目。当然,他们会考虑其他细节,但更容易想到“我想支持带有黄色大象的 Hadoop 吗?”而不是“我想支持 Cloudera 的 CDH 还是 Hortonworks Data Platform,还是新发布的 ODP?”
“品牌”包括许多内容:项目的正式名称、项目或产品的徽标,甚至项目网站和产品 UI 的外观。特别是某些品牌组件是法律商标:这些通常包括官方软件产品名称和徽标,尽管商标在一致使用时最有效。
与代码和社区不同,项目的品牌不是一成不变或转瞬即逝的。未经法律许可,商标不能被分叉,即使社区成员人数波动,项目品牌也可以保持一致。在许多方面,品牌和商标是一个项目中可以最容易控制和维护的要素。但是,正确的商标使用可能会被项目内部的社区忽视或低估——作为定义项目独特特征的重要工具。鉴于任何人都可以分叉代码,并且社区成员来来去去,项目的品牌和商标是维护项目持久性和独立性以及继续吸引新项目贡献者的关键要素。
Quill
本文是 Jason Hibbets 协调的 Apache Quill 专栏的一部分。通过发送电子邮件至 open@opensource.com 与我们联系,分享您在 Apache 软件基金会项目中取得的成功案例和开源更新.
3 条评论