什麼樣的軟體適合開源?


不必糾結金錢激勵,開源衍生出來的利益一般都比我們想像的大,何況還有其他多種激勵方式。

  • 適合面向基礎設施,這類軟體系統的前期成本乃至後期維護成本都太高。開源的動機不是也沒必要是為了貢獻社會,是為了收你的貢獻。
  • 適合從業餘興趣出發,在社區中得到認可後反饋公司,順便提升個人 Reputation: (比如 bootstrap)。
  • 適合攪局 (比如: eclipse, gitlab, openstack, docker),到最後沒準攪局者活得更長。
  • 不適合面向產品業務:決策鏈長,和稀泥多,缺少長期規劃,無法分析用戶數據,無法集中式決策。這些交給商業公司做充分競爭就好。

我說一下我的個人觀點,拋磚引玉了:


1)開源軟體的優勢在於,用戶和開發者的界限模糊了。用戶可以改進這個軟體。這麼一想,顯然對於這類軟體是適合的:開發工具。因為,這類軟體的用戶就是開發者。細想一下,Python, OpenJDK, gcc, linux都是開源的,而且越來越向開發環境發展了……

擦邊球的還有開發的時候需要用到的辦公工具,比如office是開發者們工作需要的;還有可以基於這些工具進一步開發的資源,比如地圖,可以服務於很多location-based-service (我想到了Open Street Map)。

想回來,如果一個開發工具不開源——使用者會說,你收錢?好我做一個……然後,這個收錢的公司就掛了。所以,更是一個開發工具適合開源的現實原因。


2)對於別的軟體,簡單地說,開發者是想賺錢的,因為開發一個軟體所需要的工作量是不小的(non-trivial)……所以我覺得,對於普遍性的軟體,開源的未來並非十分明朗。


不知道大家怎麼想?


一般來說,合作方眾多的軟體適合開源。

順便反對一下當前排名第一的答案,那是完全的外行,而且代表了中國軟體業一大群沒有上道的外行。很多人都看不到開源對今天軟體開發的重要性。對於某個某個軟體來說,開源可能是不用要的,所以你看著單個軟體的時候,會以為是否開源和軟體成敗無關。但如果你整體看軟體產業,開源就是不可阻擋的趨勢。

為什麼?

因為現在軟體的體量已經從每個軟體數十萬行走到了數千萬行了,而軟體開發效率,作為人類頭腦的表現,從來沒有改變過。所以實際上現在寫軟體,已經很少是從頭寫起的,都是在一個已有的框架上往上搭。而這個架子如果不向外公開,別人根本不知道如何跟你合作。這樣就會導致一個問題,你要合作,就要向合作方公開代碼。合作方越來越多以後,完全開源就成為必然了。

而隨著軟體的進一步發展,當所有主要平台都開源後,基於它的解決方案也會越來越多開源。而參與者眾多的開源方案將逼死那些非開源的方案,導致最終智能「軟體即服務」,沒有人可以簡單靠封閉一個軟體,然後不斷賣來盈利了。

順便說一句,蘋果可不代表封閉系統,蘋果的軟體的基礎部分基本上都是開源的。

唉,算了,我想大部分知友是聽不懂我在說什麼的。這裡的計算機類問題的水平太低了。放幅圖吧:


開源從來都不可能統治世界,隨時都有可能被閉源軟體趕盡殺絕。

在我看來,擁護開源跟保護瀕臨滅絕動物的理由其實差不多。因為他們是如此之珍貴,如此之難得,隨時可能滅絕,以至於為了維繫他們的存在值得向全社會進行呼籲。

保護瀕臨滅絕動物是光榮的,是政治正確的,保護瀕危動物的目的並不是讓他們統治世界。
同理,擁護開源軟體也是光榮的,政治正確的,擁護開源軟體的目的也從來不是讓他們一統江湖。

關於什麼軟體適合開源的問題:

首先,當你需要讓這個技術成為標準的時候,開源它是合適的。

比方說,gcc 立志成為編譯器的標準,它開源就是合適的。vim/emacs 立志成為程序員編輯器的標準,它開源也是合適的,apache 立志成為 web 伺服器的標準平台,它開源也是合適的,android 立志成為移動互聯網系統的標準平台,它開源就是合適的。

因為他們如果不開源,就無法佔領最大的市場,成為被更多人接納的標準。開源實際上給了更多的開發者修整它以符合自己需求的可能,換句話說開源的平台可能更符合更多的不同的需求,哪怕某些需求很小眾。

通過佔有標準,成為業界標準,獲得大的使用量,而大的使用量給這個社區帶來話語權,這個時候開源就很合適。

商業公司支持的開源軟體,大多屬於這一種。

其次,當你想開發一個給自己用的軟體的時候,開源可能是合適的。因為,無論如何你都需要這個軟體,所以你實際上已經用自己的勞動為這個軟體的開發買單了,但如果一個軟體只滿足自己一個人的需求,似乎又顯得浪費了自己的努力,如果將它開源出去,通過吸納更多的用戶與開發者,讓它滿足更多不同人的需求,它就慢慢成長了,這本身對程序員來說是一種莫大的成就感。

其他開源軟體,貌似大多屬於這一種。


開源,說白了就叫互相監督、互相學習、共同進步

因此,可以區分三類:

1、諸如加密通信軟體:比如Signal、Tor Messeger 這類軟體,因為涉及用戶隱私,所以開放源代碼,以便監督。

2、谷歌GFS(Google File System)、淘寶TFS(Taobao File System)這類相似軟體,通過互相學習,從而根據公司需求設計軟體。

3、大部分開源項目都屬於出於一種程序員的分享精神,也就是單純的為了分享知識,讓大家共同進步,取之於社區,回饋於社區。這也是開源項目的最大的一類。


不是主要收入來源的。
或者開發者不想賺錢的。
#真話#


賣不出錢來的軟體。


首先你不靠這個軟體賺錢,其次你想成為一種標準,再次你想跟閉源收費軟體作對。這些上面都提到了。
其實還有一種情況,那就是當你有一套系統,希望全球開發者參與維護與新功能的開發,最終成為一套成熟可部署的系統,且擁有良好的生態[及頻繁的維護更新升級頻率]。如此這套系統可以被推廣出去,同時你也可以從中受益[全世界開發者免費為你幹活]。


開源認為,軟體和代碼屬於知識和精神財富,其最大程度的傳播,分享,融合才是符合人類最重要最根本的價值取向,所以傳播和分享才是最重要的。

因此沒有適合不適合的開源軟體,關鍵看開發者對軟體的定義,是將軟體分享出來還是抱著知識即經濟的理念對勞動成果收費。

近乎(最早的SNS社區開發軟體)也是經過了閉源到開源的一個過程,直接能夠進行產品源碼下載,可以迅速搭建類似知乎、小米、豆瓣等垂直社區,對程序員完全開放。


開源軟體跟上市公司差不多。

如果你希望全世界給你免費打工,免費打廣告,那就開源。對應上市公司就是散戶或者其他機構持股。發展到最後你很可能不是股東,但是由於市值漲幅,你收益也是相當可觀,未必比直接控股的收益少。

如果自己有個大後台,或者本身資金充裕,或者專註於特定領域的項目和客戶,或者由於某些原因必須留軟體後門,那就沒必要開源或者只進行有限開源。


「因為我不喜歡這樣的運作方式或者功能,所以我想改變它」


某些需要強大的後台服務提供商的軟體,就適合開源。最恰當的例子就是安卓。安卓系統為何在今天能夠如此成功,不單單是因為各家手機商的支持,還因為後方還有谷歌這個強大的內容提供商。谷歌通過將安卓開源,獲取的更多的用戶群,這些用戶群會通過訪問谷歌play,登錄gmail,光看youtube,以及訪問在某些軟體中提供的廣告,讓谷歌獲得利潤。這,就是最好的開源模式。


大體上來說是兩類軟體適合開源,平台類和工具類。實際上平台類開源項目更容易成功,縱觀三個比較成功的大型開源項目:linux、android、openstack,它們都是在同一個場景下產生的,面對一個非常強大的閉源廠商,幾個小廠商(至少在所在領域不算優勢企業)只好抱頭取暖共同開發一個開源的平台出來對抗windows、ios、aws等。另外一種如hadoop,小團體想搞大平台,也只好採用開源的方式迅速擴大影響力。這種開源項目裡面有商業利益,所以會吸引商業公司加入,有商業公司加入,雖然多了扯皮,但也因為相互制約多了項目的規範性和穩定性,更容易發展成功。工具類的開源軟體,目前更多的擔任雷鋒的角色,技術強人或者公司放出自己的代碼來提升下技術影響力,順便吸引少量的人來幫助改進項目。


不是盈利目的的軟體。
如果要賺錢,請別開源。
事實上很多軟體不都是賣不出去了就開源了?


推薦閱讀:

TAG:軟體 | 開源軟體 | 開源 |