為什麼要開源?

我很多事情都喜歡從自己能得到什麼利益出發,換句話說就是境界不夠高。比如開源這個事,為什麼要開源?我首先想到的就是開源能吸引更多的人幫助發現bug,幫助貢獻代碼,幫助提高質量,所有這些最終都會回饋到自己的項目,這相當於用另一種方式獲得利益。拿開源來說,我覺得不存在真正的無私,或多或少應該都存有自己的私心吧。當然這只是我個人狹隘的觀點,我相信還有更多純粹神聖值得敬佩的理由選擇開源,只是我這個境界的人理解不到而已,求賜教。


題主問的非常好,尤其是從功利的角度來看為什麼要開源。我把這個問題分成三個回答你:

從無私的角度看,為什麼要開源?

從自私的角度看,個人為什麼要開源?

從自私的角度看,公司為什麼要開源?

從無私的角度看,為什麼要開源?

1. 建立社區:可以這麼說,如果沒有開源社區,蘋果,谷歌,Facebook都不會是現在這樣。如果沒有Linux,現在互聯網的格局簡直無法想像。為了讓更多人能夠使用優秀的產品,需要有人來願意把自己的產品免費給他人使用。很多開源社區的貢獻者都是為了建立,維持這樣一個互助互利的社區而不斷努力的。

2. 幫助他人:開源一個很美妙的地方就是,別人不用花時間解決一樣的問題。當你看到你的一個大問題已經有人做了開源項目的時候,你一定感覺如釋重負。同樣,有人感謝你的開源項目幫他們解決了一個大問題,真的是種很美妙的成就感。

3. 結識朋友:開源社區中經常能遇到很多志同道合的好朋友。你幫我改代碼,我幫你加功能,說不定兩個人就認識成了好朋友。我和我現在的一位導師和幾位朋友就是在貢獻開源項目的時候認識的。

好,下面來說說不明顯的:

從自私的角度看,個人為什麼要開源?

1. 提升代碼質量:開源是提升個人代碼質量的好方法。這個有兩個方面:首先,如果你知道你的代碼要給別人看,你會不自覺的把代碼寫的更乾淨一點,多加點說明。其次,開源之後別人會建議怎麼改(如果你的項目有一定影響力),給你建議的人多了,你也大概就有概念怎麼把代碼寫的更好了。

2. 展示個人代碼:如果你在找工作,這個很可能會是你的主要動機。公司實際上很好奇你寫的代碼質量如何,但是光從1個小時的面試實在看不出太多。所以很多公司會非常喜歡看你的開源項目,來評估一下你的代碼質量如何。同樣,如果你面試的時候告訴公司,「我有個開源項目,你們可以去看看」,這將是個不錯的加分項。

3. 建立個人品牌:如果你足夠厲害,把一個優質項目開源是個迅速提升影響力的好方法。很多在大公司工作過的頂級工程師,我們都是通過他們的開源項目認識的。git的發明人,Linus Torvalds,就是一個好例子。一個工程師如果在工作之外想要樹立個人品牌的話,寫一個高質量的開源項目是個相當好的選擇。

4. 備份個人項目:其實很多人把項目放到Github的時候根本沒想這麼多。。。他們只是想把家庭作業,代碼練習啥的備份到網上去而已。。。其實Github當中絕大部分項目都是這種實際沒啥用的代碼備份(只是Github沒讓你看到)。。

從自私的角度看,公司為什麼要開源?

1. 樹立品牌形象:公司與個人開源的動機不同。公司開源很多情況下是為了提升外界對公司的形象認知。任何一個大科技公司,肯定用了多多少少用了開源項目(Linux,至少吧?)。如果連一個開源項目都沒有,這很容易給人造成,「這公司總是索取,卻不回饋給開源社區」的形象(尤其在美國)。

2. 發掘潛在員工:比如,我讀了谷歌的Android的代碼,發現裡面有個大安全漏洞,然後我提交一個修改把漏洞給補了。你說谷歌想不想拉起我去工作?很多公司一個很好的招聘渠道是開源項目的貢獻者。如果能在公司開源項目做出有意義貢獻的話,這個對於公司來說是比面試好很多的能力證明。

3. 實現額外功能:這點實際上很有意思,有的公司/項目實際上有很多想做的小功能,但是沒時間也沒人力去單獨做。這個時候開源的力量就體現出來了,項目開源之後很多時候能吸引到開源貢獻者來做一些自己感興趣,項目想要,但項目沒時間做的feature。我之前在http://Socket.io做的時候寫的就是這樣的一個小feature。

4. 擴大影響範圍:公司開源項目的質量,很多時候能反映公司的影響力。所以矽谷的很多大公司,都有一些厲害的開源項目。一方面是回饋社區,一方面是展示公司的影響力和代碼質量,吸引更多人才。同樣,如果一個公司很希望自己的一個產品有更大影響力的話,開源是個好方法。蘋果的Swift就是個好例子。Swift開源之後,能夠用在不少iOS之外的領域。說不定之後我們還能看到用Swift寫的網站架構。

5. 用作戰略武器:開源項目還可以作為公司的戰略武器。最好的例子就是谷歌的Android。通過開源和病毒式的傳播一下追上iOS。這裡面有很多弊端(比如碎片化嚴重),不過谷歌這麼一招給了開發者十分大的力量,Android一下成為一個和iOS比肩的選項。

如果你好奇全職的開源工程師如何賺錢的話,這是我之前的答案:

世界頂級開源軟體工程師,他們如何謀利? - 編程

最後,也希望題主能繼續為開源社區出一分力 :)


開源本是出於自願。

但是總有一些人喜歡把自願當成義務,去要求別人。

這些人簡直是業界毒瘤。


因為C++ template沒有ABI,只能開源了。


有些項目,光靠發起者一個人的力量無法完成,又不願意花錢僱人為自己工作,只有開放源代碼,才能吸引開發者參與進來。

例如wine,到2.20版本,共計開發者1604人


每個人選擇開源的理由都不一樣,

我說我自己的。

初學編程時期,是覺得自己的代碼寫得很挫,希望有大牛來噴我,幫助我提高。

後來,開始有一些項目是為了炫耀。

現在,更多是為了寫在簡歷上,讓下一家公司的HR可以直接地看到我的代碼水平。畢竟我無法把我在現公司寫的代碼給下一家公司看。


題主你的想法沒錯。開源界本來就是不問理由,只問效果的。

我能想到開源有這麼一些好處:

  1. 容易使得該產品獲得推廣。
  2. 吸引碼農用戶。這種用戶雖然人數少,但是他們會貢獻高質量的bug report,patch,甚至幫你寫一些新功能出來……

缺點當然是你沒辦法保密,也很難收費了。但是並不是每個產品都需要保密和收費的。

這也是為什麼開源最適合的是平台類的項目(比如操作系統——GNU/Linux, Android, 瀏覽器——Chrome,Firefox,運行時環境——Java, .NET),這些項目都是市場佔有率的重要性高於本身帶來的直接收入的。只有平台能佔領市場,才有後續的錢賺。這種時候平台本身開源是很值得考慮的。

另外作為個人來說,開源對你有一定的提升簡歷的價值。

(另外,談理想的是「自由軟體」(Free Software)的世界,雖然跟開源聽起來很像但是還是不一樣啦)


戰略類遊戲裡面有項參數叫:名望。名望高,很多人都自發得想結識你。還給送錢的。去挖牆腳,或者跳槽去別的公司和國家都特別容易


The Plant 將go語言項目QOR 進行開源,在博客上針對為什麼開源做了以下的解釋。

# QOR為什麼要開源?

QOR是The Plant 過去6年的技術沉澱的精華,不管是在團隊內部還是圈內小夥伴們中,我們都討論過多次,關於為什麼我們會將QOR這樣一個能夠給我們持續帶來商業機會的產品,精心打磨後進行開源的問題。

## 與科技巨頭競爭

我們為多個國家的客戶開發了很多基於QOR關鍵業務的系統應用。我們不做一次性的系統,我們做的產品客戶將會使用5年、10年甚至更長時間。當然我們也經常會遇到有新客戶提出問題比如:10年之後你們公司還在嗎?如果我們和你們的合作不是很愉快,方便切換成其他的服務提供商嗎?如果你們的服務能力滿足不了我們的需求了怎麼辦?


在這方面大的科技公司非常有優勢,因為他們的公司規模、品牌影響力,以及強有力的銷售和市場營銷團隊能夠輕鬆使客戶相信,比起開源產品或其他更優技術方案,他們的定製方案對客戶更有利。這樣閉源的形式做出的產品,儘管有時候品質一般,但是總體費用卻非常高。


將技術進行開源,讓我們以及其他使用QOR技術的服務提供商都夠很好地回答服務連續性以及規模擴大的問題。在這方面,開源產品的流行度越廣,被企業使用越多,對產品本身以及客戶都是越有利,因為客戶就不用面對或者擔憂會被一家方案提供商壟斷和限制的情況。


當然,要與科技巨頭競爭,僅憑技術開源以及火爆的社區是不夠的。開發商們還需要證明他們能夠提供真正更優秀的產品、技術支持,或者在價格上有自己的優勢。

## 如果你真的是為客戶好,那就給他們自由

我們是一個幸運兒,一直和客戶保持長期的合作關係,能夠獲得客戶持續的業務訂單。但是客戶是不希望自己被綁定在一家技術供應商身上的。事實上他們在定製開發符合自己業務的產品時,已經為代碼的使用許可付過費了。先不討論實際實用性和可行性,我們始終認為客戶是不應該被綁定在他們的技術供應商上的,尤其當技術供應商對於客戶的業務、顧客、代碼的理解以及實際表現已經無法滿足客戶的時候。

## 世界那麼大

另外一個關於是否開源的討論主要是圍繞在,其他技術供應商可能會利用我們的技術為客戶提供產品,與我們直接構成競爭。理論上講,這個情況是很有可能發生的。但是這個世界足夠大,有足夠多的客戶需要交易系統,我們願意與其他的技術供應商一起分享這個市場。我們也相信,我們給客戶自由,通過開源的QOR我們的團隊也將得到更多的關注,由此我們得的新的機會一定遠比從競爭出失去的要多。從目前的情況看,這個是思路是很正確的。

## 心要讓你們聽到:我們不夠有趣,但我們很慷慨

要讓你們知道,我們不夠有趣,但是我們很慷慨。


一個朋友曾經說過:想在互聯網上出名有兩種方式:要麼有趣,要麼分享有價值的東西,比如你的知識、洞察力、觀點,當然,最好的東西是能夠幫助別人賺到錢。將QOR進行開源就是我們踐行這個理論的方式。


目前看來,這的確是一種有效的方式。QOR正式發布之後,很快就成為github上go語言項目中最受歡迎的項目,在所有語言項目中也名列前十。這也直接讓我們公司的受到更多的關注,QOR發布後,公司網站的瀏覽量是平均流量的數倍。 不管這個現象會一直持續或者只是曇花一現,這也是一個非常好的現象。

## 那麼我們的商業模式到底是怎麼樣的呢?
為需要我們技術的企業提供集成、技術支持、額外功能模塊。這是一個已經被無數公司驗證了成功模式,比如 Canonical、 Red Hat 、 Magento ,這裡只列幾個典型的。

## 結束語
能夠和全世界的開發者一起分享QOR,並且得到了前期非常正面的反饋,這讓我們非常興奮。從業務角度看,我們也非常樂觀,我們相信QOR 能夠讓客戶受益更多。


如果你是一個開發者,並且希望和我們進行交流,可以通過Twitter, Gitter 與聯繫我們,或者給我們發送郵件。


"Open source is a bait."


開源的第一推動力是降低成本。產品部門一般不能理解開源,最多單向的利用開源事業,但是it或者運維部門的立場就不一樣了,開源未必能幫你掙錢,但絕對可以顯著降低採購成本,體現運維人員的價值。事實上大多數開源項目也是與產品無關的部門貢獻的。

從運維的角度講:

其一、有很多程序是寫來內部自己用的,而不是拿來賣的(而且質量要求往往比商業軟體高,因為責任無從推卸),而這些作為業界基礎的軟體有開源聯合開發降低成本的現實需要。

其二、從組織的角度講,如果一個項目即將沒有人維護了,那還不如趁早開源,老員工即使離職了,他的東西多半也會繼續維護。

其三、一旦你對開源項目做了修改,最能降低今後升級/維護成本的方式就是回饋上流。

其四、如果你只會用某些公司專用(比如華為)的開發工具,離職了會影響你的生計。程序員也有希望這些東西開源的意願。

其五、在軟體史上,組織內部開發軟體是有深厚的歷史傳承的,isv並不是主流。一定程度上來說,開源開發是大企業內部為了應對比較優勢的經濟規律,而誕生的東西。

其六、如果你在任何領域受夠了牙膏廠,你都會希望自己動手在廠商故意刁難用戶的地方diy一下(這就是沒有開源單反的悲哀)。


蠻有意思的話題,我拋開技術和行為不談,從另外一個角度來聊聊自己對開源的看法。

通過開源結識朋友(獲得認同感)、在社區中獲得認可(獲得存在感)、提高代碼的質量(獲得直接收益)、幫助他人獲得成就感(獲得成就感)等等,從行為動因角度來看,參與開源都能夠獲得一定程度的收益。只不過這個收益不一定在當下可以立即折算為現金收益。所以,問題的關鍵在於什麼是」利益「?如果利益僅僅指的是物質層面的,那麼開源的確會成為一個讓人難以理解的行為。處於不同層次人的需求差異還是蠻大的,所以,不同」處境「的人能夠從開源行為中感受到的」利益「的多寡也是大相徑庭的一件事情,跟一位剛剛解決溫飽問題的人強調幫助他人的成就感,這不科學。這裡的溫飽不僅僅和物質財富的多寡有關,還和所在社會環境的生存壓力有關,生存壓力越小,對精神層面追求的自由度越大,在教育住房醫療資源分配失衡的情況下討論開源個人感覺比較難達成有效的共識。

開源與無私是兩個沒有聯繫的概念。當我們提到開源就會本能聯想到利益並且疑惑不解時,這說明我們生活的環境可變現為利益的東西還是太過單一了。


開源於我而言是由"快來看吶老子寫的這個東西屌爆了"的心理帶來的行為。(雖然其實遜爆了


有的人是為了技術分享造福更多的人,而大多數的人只是為了虛榮,名譽。還有一類是因為商業軟體的高昂價格而不得已催生出來的(例如Linux,blender,gimp)


當然有無私之人,而且很多。

有時候付出並不是希望得到回報。

很多程序員都會有幾個小項目開源,並不為了什麼。當然大部分程序並不會開源。

如果情懷也是你那或多或少的目的,我無話可說。

功利主義並不能代表大部分人,只有極少數人才是純粹的功利主義。


背景:今天和朋友聊天,講關於本子漢化的事,(不要問我什麼是本子),他是一個動漫愛好者論壇(大霧)的版主。我覺得發生在另一個領域的事或許能為題主提供一些借鑒。

具體內容整理如下:翻譯本子的字幕組有兩類,一類叫免空,一類叫錢空。為啥這麼叫我也不太懂,區別就是免空做漢化主要是因為興趣,做了就免費發到百度網盤之類的地方分享到論壇里。錢空則是漢化之後發到城通這一類賺錢的網盤裡,(這種網盤就是你的東西被下載越多,就能拿到現金,貌似1000點擊就有幾十塊錢。下載之前需要輸入N次驗證碼,各種彈出廣告,各種等待時間。)靠愛好者下載來掙錢。

我一開始就問,收錢的話質量應該更好對吧,畢竟更有動力才對。可是朋友告訴我完全不是這麼回事,他非常討厭錢空,因為錢空的質量很差。

那我就疑惑了,質量差又如何賺錢呢?

朋友的解釋真心讓我感受到中國人賺錢的熱情和苦心鑽研。

因為本子在某種程度上是非法物品,所以百度網盤這一類網站如果有人舉報就會封禁,不允許分享,於是做漢化水平不怎麼樣的那些錢空黨利用這一點,只要發現免空的漢化本一出,立馬去百度網盤舉報他們,於是很快被封禁,然後想要下載的直男紳士們只能去他們那些充斥廣告的網站下載質量低劣的內容,聊勝於無嘛。這中間更不要提抄襲等問題了。

於是我就又想到了可憐的快播。貌似已經離題萬里了。

最後稍微帶回題主的問題,很明顯的事情,免空的成員很明顯就是在無私奉獻,他們就是完全為了自己的興趣和與人分享的目的做這些事的,畢竟做那些東西還是很辛苦的,而且一般作品只有漢化組的名稱,不會有個人的姓名,最多有點自得而已。類似於知乎答題的人,大多數人也都是免費答題吧,誰想過通過這個獲利呢?

錢空的道德也就不吐槽了,畢竟人是要生活的。而開源不開源也是如此吧,你不願意,也請不要總去懷疑別人的動機。


跟寫博客一樣 說出你的想法 別人提出質疑 討論、辯論 共同進步 不同的是 開源不是用文字說話 而是代碼

我個人認為 作為開發者 開源最大的利益是能夠提升自我水平 當然就像寫博客一樣 也是一種自我宣傳、推廣的方式

至於有人提到的情懷、改變行業 這個或許是開源真正的意義 但我目前不具備 :(


因為我喜歡寫代碼,我享受寫出好代碼的成就感。如果這些代碼對其他人也有用,這種成就感會更強烈。


安卓作為手機操作系統後來者,如何先乾死塞班又超過IOS ?

新來的要搶佔市場份額和話語權,就一定要用已有產業鏈環節不敢跟進的玩法,打破成型的局面才有機會建立新秩序。

安卓開源受益的是手機廠商,而非最終用戶。體會一下。


有些科學發明的確可以獨立完成,但是發明過程最終必須成為共享信息,使得其他科學家可以汲取他人的思想。開源軟體正是科學方法的延伸。


政治增值贍養


推薦閱讀:

請教高手,這種曲線是什麼曲線,用什麼函數控制?
打了ACM以後對其他課程失去了興趣怎麼辦?
編程可否做到自動化?
如何看待現在文科理科化的一些工作?
校強我弱,難以組出有實力的ACM隊伍。有哪些含金量高的、單人參加的演算法競賽可以作為ACM的替代品?

TAG:軟體開發 | 開源 | 開源項目 | 計算機科學 | 開源運維 |