定义开源项目的三个核心要素

开源
在过去的30年中开源走过了漫长的道路,而今已成为最流行文化的标识。每当提到开源项目,人们就会想到下面这些:管理结构、产品平台类型、编程语言、工具、技术细节、是企业赞助还是独立项目等等。

在过去的30年中开源走过了漫长的道路,而今已成为***文化的标识。每当提到开源项目,人们就会想到下面这些:管理结构、产品平台类型、编程语言、工具、技术细节、是企业赞助还是独立项目等等。

然而,什么才能真正定义一个开源项目,使之与其他开源项目区分开来呢?我认为可以使用以下三点核心要素来定义和区分开源项目:代码、社区和品牌。
1. 高质量的代码

代码为王。产品的功能是由代码实现的,这也是开源项目构建的***步:构建有用的代码。技术人员关注代码能做什么、它是如何实现的,市场人员更关注产品如何解决客户的问题,而当人们寻找一个开源项目来使用时,首先找到的便是代码。

听起来很简单——既然这样我们为什么不能单纯使用代码来定义一个开源项目呢?软件开发人员众所周知,代码是变化的,并且具有临时性。开源项目中,代码很难跟踪,它不像公司主导项目的代码那样可控:开源代码是无限变换的。一旦你的代码提交到开源许可的公共库中,任何人都可以访问和修改,来实现他们各自的用途。当别人使用了你的代码并做了修改,它便不是你初始项目的一部分了。
2. 具有凝聚作用的社区

如果代码指的是项目“是什么”,那么社区便代表了项目“是谁” ——组建项目的那些人。项目的核心社区主要包含了那些积极推动项目的人。例如,编码的工程师,还有给予反馈和具体修改建议的终端用户;整体社区还包括了那些不做代码但是提供支持的人。比如,管理/进度监督人员,公关/市场人员,培训人员,财务人员或招聘支持人员等。社区规范,礼仪,和风气有助于区分一个开源项目。

虽然参加有些开源项目可能是有偿的(如,企业雇佣的软件工程师,他们使用一定比例时间参加开源项目),但大部分开源社区的成员都是自愿无偿的加入开源项目。因此,成员们的去留都是兴趣使然,或根据承诺任务的增减,或雇主策略的改变。像代码一样,社区是不断变化的。

不像企业的软件开发项目那样,可以计划招特定技能的人员做具体的工作,开源社区的参与是不可预测的,项目也不好控制。相对于有偿项目而言,个人冲突很容易导致成员离开开源社区。但是开源社区也有它的好处:有成员的热情和动力,有成功项目社区的持久力,还有大家对代码的同步和不断改进。
3. 具有宣传效力的品牌

外部世界当然是通过品牌来了解开源项目的,当个人或公司选择使用或投资一个项目时,品牌帮助他们在同类项目中进行区别和参考。当然他们也会考虑其他的细节,但是通过品牌进行了解更容易些。比如,他们会考虑“我需要支持 Hadoop 么?”而不是想“我需要支持 Cloudera 版本,Hortonworks 版本还是其他新发布的 ODP?” 目前,不收费的 Hadoop 版本主要有三个:Apache(最原始的版本,所有发行版均基于这个版本进行改进)、Cloudera 版本(Cloudera’s Distribution Including Apache Hadoop,简称CDH)、Hortonworks 版本(Hortonworks Data Platform,简称“HDP”)

“品牌”包括很多东西:项目的正式名称,项目或产品的Logo,甚至项目网站的外观和产品的用户接口。有些品牌的组件,甚至使用了具有法律效力的商标:包括官方软件产品的名称和Logo标志。

不同于代码和社区,项目的品牌是一成不变的。没有法律授权的话,商标是不能随便使用的,即使社区成员变化,项目的品牌也不会随之改变。很大程度上讲,品牌和商标是最容易控制和维护的。然而,作为可定义项目独特性的重要工具,商标的使用却总是不被重视,经常被项目内部所忽略。考虑到任何人都可以获取代码,社区成员也来来往往的,因此,项目的品牌和商标是维持项目长久和独立、新项目成员继续项目的关键因素。

责任编辑:chenqingxiang 来源: linux.cn
相关推荐

2019-01-23 08:59:00

大数据大数据治理数据管理

2019-05-21 21:15:32

架构架构设计性能优化

2022-08-31 09:39:32

自动驾驶芯片技术

2015-10-12 15:50:07

PaaS云平台开发go

2015-10-28 09:42:51

甄别众筹项目方法

2011-12-25 20:45:19

云计算云安全

2011-12-23 09:37:59

云计算

2024-04-02 13:22:51

2024-07-02 11:06:37

SpringBoot项目

2021-12-13 16:15:00

加密货币比特币货币

2019-07-25 10:35:10

2010-01-28 14:46:08

C++变量

2017-08-01 08:41:29

Oracle开源容器

2022-04-03 15:44:55

Vue.js框架设计设计与实现

2019-03-25 05:06:07

物联网投资回报IOT

2022-05-19 13:33:53

Github开源项目开源

2009-10-09 11:00:17

云计算应用Novell CTO

2021-09-16 15:06:33

漏洞管理漏洞网络攻击

2013-10-21 09:42:28

开源OpenStack

2010-06-20 00:38:50

点赞
收藏

51CTO技术栈公众号