開源在過去的30年走過了很長的一段路,當下已經進入了主流的文化意識中,當思考開源項目時,人們習慣使用如下一系列來歸類:治理結構、產品平台類型、編程語言、效用、技術細節(什麼語言編寫)、企業贊助或完全獨立等等。
但是什麼是真正可定義一個開源項目?或者什麼是區別於其他開源項目的獨特存在?我的建議,從框架、定義及區別的角度講,有三個要素是開源項目的根本:代碼、社區和品牌。
代碼
代碼為王,代碼就是能夠使產品做什麼的東西,也是一個開源項目起始的原因:做一些有用的東西!技術上令人興奮的:代碼做什麼,它是如何工作的。市場上令人興奮的是:此產品如何解決了客戶的問題。代碼是人們在尋找開源項目用來使用時多數人最渴望找的東西。
聽起來似乎足夠簡單---但是我們為什麼不單純基於代碼來定義一個開源項目了呢?做過軟件開發的任何人都清楚:代碼是永久變動和臨時的。在開源領域,從傳統公司主導的項目控制中解放出來,代碼變得非常難以跟隨:開源代碼是無限進行分支的。一旦你的代碼是基於開放源代碼促進會(OSI)的許可證下公開了倉庫,它就是完全對所有人可訪問,每個人都可以拿到,並按照自己的需求來更改。一旦其他人fork了你的項目,哪怕是做一丁點的改動,它就不再是你原來項目的一部分了。
社區
如果說代碼解釋了項目是什麼,那麼社區就是誰,什麼人讓這一切成為了現實。項目社區的核心包括那些活躍的是整個項目往前推進的人,諸如作出代碼貢獻的工程 師,提供反饋的最終用戶,提出特殊修改的人。從整個社區來講,還包括那些不是提交代碼的人們,但是提供支持,諸如治理/流程監督、公共關系/市場、培訓、 財務或雇員支持。社會規范,禮儀,以及社會各界的幫助,以區別於其他所有的項目的事項。
參與到開源項目中的部分人員是本身就有其他公司發工資的(例如:一個公司雇傭一個工程師,賦予他/她在工作的百分之多少去為開源項目做貢獻),多數的開源 社區是自願參與且並不能直接從社區獲得報酬,所以成員或是興趣轉變、或是其他社區挖走、或者某公司改變了戰略,來來去去很正常,和代碼一樣,社區是永久變 動的。
不像一家公司開發軟件項目那樣,可以根據現有人員及其他們的技能來規劃特定的任務,參與到開源社區是不可預測的,而且經常對項目失去控制,由於個人沖突上 升所導致的擁有高級技能的工程師離開,相比在一家有報酬的公司,是非常容易發生的。但是開源社區還是有很多優點可以看到:由熱情所驅動的多數社區成員,那 些成功的項目社區長期發展,同步和推薦代碼的偉大工作。
品牌
品牌是一個開源項目之外的世界是如何得知該項目的口碑。當個人或公司決定使用或投資某個項目時,品牌將是在同等功能的情況下作出的選擇,當然他們會考慮其 他的細節,但是剩下的相對要簡單的多。“我要支持Hadoop嗎?一個黃色的大象",要比“我要支持cloudera的CDH或這Hortonwork數 據平台嗎?或者是新的號稱的ODP?“強好多。
"品牌“一詞包含很多內容:項目的官方名稱,項目或產品的logo,以及項目網站的表現,和產品的用戶界面,特別是一些品牌的組件是合法的商標:這些通常包括官方的軟件產品的名稱和標志,雖然商標是強烈建議一直使用的。
不像代碼和社區,一個項目的品牌不是永久變動或者臨時的。一個商標是不可以隨意fork的,除非法律上的授權。且項目品牌要保持一致,哪怕是社會成員有所 波動。在許多方面,品牌和商標是最容易控制且維護的項目組成部分。作為定義項目獨特性元素的重要工具的品牌,哪怕是遭遇商標不被正確的使用,甚至是項目內 部的社區都不怎麼承認,都得堅持。
讓所有人能夠fork代碼,社區倡導成員自由參與和放棄,一個項目的品牌和商標確實維持項目長期運作、獨立、繼續吸引新的社區志願者的關鍵因素。
原文:http://iaaslee.blogspot.sg/2015/02/blog-post.html