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

**一、萌芽階段 **

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

**二、成長階段 **

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

三、成熟階段

  1. 商業介入,獲得資金支持。很多一開始選擇了不太具備商業價值的開源項目,會始終非常小衆。
  2. 良好的社區氛圍。老人有地位,新人有上升空間,公開透明不內鬥。
  3. 正確的方向感。這是長期繁榮的保障 以上這些,都依賴於一個最重要的先決條件:足夠強大、足夠優秀的創始人+領導者!

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

10072-b27b5aaf7dd37e0c.jpg

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

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

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

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

原文發佈於:2014年11月

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章