莊表偉:成功的開源項目,優秀架構是基礎

jopen 11年前發布 | 11K 次閱讀 開源

導語】知乎上有這樣一個問題:成功的開源軟件都有什么樣的特點。 在所有回答的中,莊表偉的回答或贊最多,當然也有很多優秀的回答,只是大家回答問題的角度有所不同。如禪道項目創始人王春生的回答是“根本上需要有資 源”,包括資金、人力等,同時也有回答者提到一些,如開發質量高、社區成熟、文檔完備等。相比而言,莊表偉則針對項目的發展階段(萌芽、成長和成熟階段) 給出了每個階段的特點,思路清晰,可以作為開源項目作者的參考。下面是原文轉載,轉載時對原文標點和排版有所改動。

前幾天,我在知乎回答了一個問題:成功的開源軟件都有什么樣的特點? 

一、萌芽階段 

1. 解決實際問題,這是核心。不一定要特別創新,特別酷,當然如果有的話是加分項。
2. 定期發布,及時接受反饋,不斷滿足用戶需求,形成穩定預期。 

二、成長階段 

1. 出色的宣傳手段、引導傳播的能力。很多不錯的開源項目因為這一點不夠,始終默默無聞 。
2. 足夠好的協作機制。雖然開源社區通常有較為成熟的玩法,但是做得不夠好的項目比比皆是。
3. 友好的參與引導。不斷的吸引新人加入貢獻(包括新手指南,開發文檔,Demo等等)

三、成熟階段

1. 商業介入,獲得資金支持。很多一開始選擇了不太具備商業價值的開源項目,會始終非常小眾。
2. 良好的社區氛圍。老人有地位,新人有上升空間,公開透明不內斗。
3. 正確的方向感。這是長期繁榮的保障

以上這些,都依賴于一個最重要的先決條件:足夠強大、足夠優秀的創始人+領導者!

這兩天又思考了一下,發現開源軟件與開源項目,還是有一些差別的。通常來說:開源軟件,主要是供最終用戶使用,而開源項目,則是一個更大的概念,可以做一個菱形圖來說明:

莊表偉:成功的開源項目,優秀架構是基礎

在開源項目的基礎上,可以創造一個好的開源生態圈,而基于開源生態圈,會產生一個甚至多個不同的開源產品。這里說“開源產品”,也就包含了“開源軟件”與“開源硬件”。因此,深入思考的結果就是—— 優秀的、成功的開源產品,依賴于良好的開源生態圈,而良好的開源生態圈,嚴重依賴于最初開源項目的定位與類別。


例如,依賴于Wordpress的平臺,誕生了一大批Wordpress的插件。依賴于Eclipese的平臺,又誕生了一大批Eclipse的插件。Firefox、Chrome莫不如是。 所以,一個能夠讓開發者參與擴展的平臺,是建立生態圈的重點之一。


再者,開發、調試、發布、獲取、升級、評價這些擴展插件,是否易懂,是否方便,是否快捷,也是一個生態圈,是否能夠健康的重要支撐特性。例如,Ruby的gem,Node.js的npm,就是極大的提升了Ruby與Node.js的生態圈活力。 所以,一個能夠支持生態圈得以出現的機制,一個能夠輔助生態圈形成的工具,至關重要。


再深入的想一層,當我們開發一個軟件,他應該具備哪些功能,他的可擴展性該如何實現,則是考驗最初創始人的架構能力的關鍵。例如,UNIX/Linux的 核心思想——“一切皆文件”;再如,Rails的核心思想——“約定大于配置”以及"Rack架構"所帶來的活力。 所以,優秀的架構,能夠從一開始,就為開源生態圈打下了良好的基礎。


來源:微信號 zbw_blog

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!