在過去的30年中開源走過了漫長的道路,而今已成為最流行文化的標識。每當提到開源項目,人們就會想到下面這些:管理結(jié)構(gòu)、產(chǎn)品平臺類型、編程語言、工具、技術(shù)細節(jié)、是企業(yè)贊助還是獨立項目等等。
然而,什么才能真正定義一個開源項目,使之與其他開源項目區(qū)分開來呢?我認為可以使用以下三點核心要素來定義和區(qū)分開源項目:代碼、社區(qū)和品牌。
1. 高質(zhì)量的代碼
代碼為王。產(chǎn)品的功能是由代碼實現(xiàn)的,這也是開源項目構(gòu)建的第一步:構(gòu)建有用的代碼。技術(shù)人員關注代碼能做什么、它是如何實現(xiàn)的,市場人員更關注產(chǎn)品如何解決客戶的問題,而當人們尋找一個開源項目來使用時,首先找到的便是代碼。
聽起來很簡單——既然這樣我們?yōu)槭裁床荒軉渭兪褂么a來定義一個開源項目呢?軟件開發(fā)人員眾所周知,代碼是變化的,并且具有臨時性。開源項目中,代碼很難跟蹤,它不像公司主導項目的代碼那樣可控:開源代碼是無限變換的。一旦你的代碼提交到開源許可的公共庫中,任何人都可以訪問和修改,來實現(xiàn)他們各自的用途。當別人使用了你的代碼并做了修改,它便不是你初始項目的一部分了。
2. 具有凝聚作用的社區(qū)
如果代碼指的是項目“是什么”,那么社區(qū)便代表了項目“是誰” ——組建項目的那些人。項目的核心社區(qū)主要包含了那些積極推動項目的人。例如,編碼的工程師,還有給予反饋和具體修改建議的終端用戶;整體社區(qū)還包括了那些不做代碼但是提供支持的人。比如,管理/進度監(jiān)督人員,公關/市場人員,培訓人員,財務人員或招聘支持人員等。社區(qū)規(guī)范,禮儀,和風氣有助于區(qū)分一個開源項目。
雖然參加有些開源項目可能是有償?shù)模ㄈ?,企業(yè)雇傭的軟件工程師,他們使用一定比例時間參加開源項目),但大部分開源社區(qū)的成員都是自愿無償?shù)募尤腴_源項目。因此,成員們的去留都是興趣使然,或根據(jù)承諾任務的增減,或雇主策略的改變。像代碼一樣,社區(qū)是不斷變化的。
不像企業(yè)的軟件開發(fā)項目那樣,可以計劃招特定技能的人員做具體的工作,開源社區(qū)的參與是不可預測的,項目也不好控制。相對于有償項目而言,個人沖突很容易導致成員離開開源社區(qū)。但是開源社區(qū)也有它的好處:有成員的熱情和動力,有成功項目社區(qū)的持久力,還有大家對代碼的同步和不斷改進。
3. 具有宣傳效力的品牌
外部世界當然是通過品牌來了解開源項目的,當個人或公司選擇使用或投資一個項目時,品牌幫助他們在同類項目中進行區(qū)別和參考。當然他們也會考慮其他的細節(jié),但是通過品牌進行了解更容易些。比如,他們會考慮“我需要支持 Hadoop 么?”而不是想“我需要支持 Cloudera 版本,Hortonworks 版本還是其他新發(fā)布的 ODP?” 目前,不收費的 Hadoop 版本主要有三個:Apache(最原始的版本,所有發(fā)行版均基于這個版本進行改進)、Cloudera 版本(Cloudera’s Distribution Including Apache Hadoop,簡稱CDH)、Hortonworks 版本(Hortonworks Data Platform,簡稱“HDP”)
“品牌”包括很多東西:項目的正式名稱,項目或產(chǎn)品的Logo,甚至項目網(wǎng)站的外觀和產(chǎn)品的用戶接口。有些品牌的組件,甚至使用了具有法律效力的商標:包括官方軟件產(chǎn)品的名稱和Logo標志。
不同于代碼和社區(qū),項目的品牌是一成不變的。沒有法律授權(quán)的話,商標是不能隨便使用的,即使社區(qū)成員變化,項目的品牌也不會隨之改變。很大程度上講,品牌和商標是最容易控制和維護的。然而,作為可定義項目獨特性的重要工具,商標的使用卻總是不被重視,經(jīng)常被項目內(nèi)部所忽略。考慮到任何人都可以獲取代碼,社區(qū)成員也來來往往的,因此,項目的品牌和商標是維持項目長久和獨立、新項目成員繼續(xù)項目的關鍵因素。