wordpress Firefox php 云计算 google mysql 编程 shell nginx Python 程序员 开源 Windows 微软 Ubuntu centos Android apache linux java

《開源思索集》一成功的開源軟件都有什麽樣的特點

成功的開源軟件都有什麽樣的特點

開源思索集
一、萌芽階段
1.解決實際問題,這是核心。不一定要特別創新,特別酷,當然如果有的話是加分項。

2.定期發布,及時接受反饋,不斷滿足用戶需求,形成穩定預期。

二、成長階段
1.出色的宣傳手段、引導傳播的能力。很多不錯的開源項目因為這一點不夠,始終默默無聞 。

2.足夠好的協作機制。雖然開源社區通常有較為成熟的玩法,但是做得不夠好的項目比比皆是。

3.友好的參與引導。不斷地吸引新人加入貢獻(包括新手指南、開發文檔、Demo等)。

三、成熟階段
1.商業介入,獲得資金支持。很多一開始選擇了不太具備商業價值的開源項目,會始終非常小眾。

2.良好的社區氛圍。老人有地位,新人有上升空間,公開透明不內鬥。

3.正確的方向感。這是長期繁榮的保障。以上這些,都依賴於一個最重要的先決條件:足夠強大、足夠優秀的創始人+領導者!

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


qq3

 

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

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

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

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

延伸阅读

    评论