每個開源專案都離不開的三要素

贊 回覆發表於2015-03-03

開源在過去的30年走過了很長的一段路,當下已經進入了主流的文化意識中,當思考開源專案時,人們習慣使用如下一系列來歸類:治理結構、產品平臺型別、程式語言、效用、技術細節(什麼語言編寫)、企業贊助或完全獨立等等。

但是什麼是真正可定義一個開源專案?或者什麼是區別於其他開源專案的獨特存在?我的建議,從框架、定義及區別的角度講,有三個要素是開源專案的根本:程式碼、社群和品牌。

程式碼

程式碼為王,程式碼就是能夠使產品做什麼的東西,也是一個開源專案起始的原因:做一些有用的東西!技術上令人興奮的:程式碼做什麼,它是如何工作的。市場上令人興奮的是:此產品如何解決了客戶的問題。程式碼是人們在尋找開源專案用來使用時多數人最渴望找的東西。

聽起來似乎足夠簡單---但是我們為什麼不單純基於程式碼來定義一個開源專案了呢?做過軟體開發的任何人都清楚:程式碼是永久變動和臨時的。在開源領域,從傳統公司主導的專案控制中解放出來,程式碼變得非常難以跟隨:開原始碼是無限進行分支的。一旦你的程式碼是基於開放原始碼促進會(OSI)的許可證下公開了倉庫,它就是完全對所有人可訪問,每個人都可以拿到,並按照自己的需求來更改。一旦其他人fork了你的專案,哪怕是做一丁點的改動,它就不再是你原來專案的一部分了。

社群

如果說程式碼解釋了專案是什麼,那麼社群就是誰,什麼人讓這一切成為了現實。專案社群的核心包括那些活躍的是整個專案往前推進的人,諸如作出程式碼貢獻的工程師,提供反饋的終端使用者,提出特殊修改的人。從整個社群來講,還包括那些不是提交程式碼的人們,但是提供支援,諸如治理/流程監督、公共關係/市場、培訓、財務或僱員支援。社會規範,禮儀,以及社會各界的幫助,以區別於其他所有的專案的事項。

參與到開源專案中的部分人員是本身就有其他公司發工資的(例如:一個公司僱傭一個工程師,賦予他/她在工作的百分之多少去為開源專案做貢獻),多數的開源社群是自願參與且並不能直接從社群獲得報酬,所以成員或是興趣轉變、或是其他社群挖走、或者某公司改變了戰略,來來去去很正常,和程式碼一樣,社群是永久變動的。

不像一家公司開發軟體專案那樣,可以根據現有人員及其他們的技能來規劃特定的任務,參與到開源社群是不可預測的,而且經常對專案失去控制,由於個人衝突上升所導致的擁有高階技能的工程師離開,相比在一家有報酬的公司,是非常容易發生的。但是開源社群還是有很多優點可以看到:由熱情所驅動的多數社群成員,那些成功的專案社群長期發展,同步和推薦程式碼的偉大工作。

品牌

品牌是一個開源專案之外的世界是如何得知該專案的口碑。當個人或公司決定使用或投資某個專案時,品牌將是在同等功能的情況下作出的選擇,當然他們會考慮其他的細節,但是剩下的相對要簡單的多。“我要支援Hadoop嗎?一個黃色的大象",要比“我要支援cloudera的CDH或這Hortonwork資料平臺嗎?或者是新的號稱的ODP?“強好多。

"品牌“一詞包含很多內容:專案的官方名稱,專案或產品的logo,以及專案網站的表現,和產品的使用者介面,特別是一些品牌的元件是合法的商標:這些通常包括官方的軟體產品的名稱和標誌,雖然商標是強烈建議一直使用的。

不像程式碼和社群,一個專案的品牌不是永久變動或者臨時的。一個商標是不可以隨意fork的,除非法律上的授權。且專案品牌要保持一致,哪怕是社會成員有所波動。在許多方面,品牌和商標是最容易控制且維護的專案組成部分。作為定義專案獨特性元素的重要工具的品牌,哪怕是遭遇商標不被正確的使用,甚至是專案內部的社群都不怎麼承認,都得堅持。

讓所有人能夠fork程式碼,社群倡導成員自由參與和放棄,一個專案的品牌和商標確實維持專案長期運作、獨立、繼續吸引新的社群志願者的關鍵因素。

相關文章