天天看點

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

本節書摘來異步社群《開源思索集》一書中的第1章,作者: 莊表偉 責編: 楊海玲, 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

開源思索集

一、萌芽階段

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架構"所帶來的活力。是以,優秀的架構,能夠從一開始,就為開源生态圈打下了良好的基礎。

原文釋出于:2014年11月