關于開源,我有很多的感想,但是在一篇文章之中,我可以談些什么呢?在與程序員雜志的編輯楊爽聊天時,我雖尚未理清自己的思路,卻想到了一個聽起來不錯的標題《當我談開源時,我談些什么?》因為像這樣一個看起來完全開放的標題,似乎什么都可以往里面裝。簡直可以隨便涂涂寫出一篇形散神不散的散文了。
一、關于創新
那么,到底應該如何看待開源呢?近日我在讀的一本書:美國的Steven Weber寫的《開源的成功之路》其中說到一個非常重要的世界觀的區別:關于人類的動機,具體到編寫軟件上,究竟是為了掙錢?還是像真正的藝術家一樣是為了創作和嘗試?在比爾蓋茨看來,盜版的行為,偷竊軟件,讓程序員免費干活,終會抑制創新。而在開源黑客看來,發布軟件卻不發布代碼,限制了合作的范圍,也阻斷了別人可能的改進和進一步創新。看起來,兩邊都說的很有道理,而且有趣的是,都在拿創新說事兒。究竟什么樣的激勵,才能激發更多更好的創新呢?是金錢?還是純粹的愛好、樂趣和榮譽感呢?
公平一點說,如果沒有軟件版權、專利法、代碼編譯與加密技術,軟件產業可能遠遠沒有現在那么龐大,也難以養活像現在那么多的程序員。也許只會剩下一部分真正熱愛編程,有沒有錢都要編點什么的人了。但是,我更想從另一個角度來提問:“這個世界上,重要、偉大、具有影響力的創新,有多少是金錢激勵出來的呢?”
再提一個問題來問咱們程序員自己:“選擇程序員這樣以一個職業,是因為它能夠有一份足夠體面的薪水?還是因為它讓我有機會創造一些改變世界的東西呢?”能夠激勵創新的,難道不是創新本身嗎?在《失控》中我讀到過一段話,曾令我激動萬分。研究人工生命的高遠的動機是“目前,普通的計算機程序可能有一千行長,能運行幾分鐘。而制造人工生命的目的是要找到一種計算機代碼,它只有幾行長,卻能運行一千年。”如果我們能夠創造出這樣的代碼,那簡直是一個程序員,高的追求。
所以,在談開源的時候,我想談的第一點,是關于創新,是究竟什么樣的模式,才能更好的激發創新?
二、關于生活方式
除了《開源的成功之路》,還有一本書,也很值得一讀。Steven Levy寫的《黑客–計算機革命的英雄》。豆瓣上有一位Pope寫書評,非常精當:“這本書并不是很有吸引力,因為每翻過幾頁,恨不得撇開書,掄起胳膊大干一場。”是的,那些黑客英雄的故事,令我們讀來大呼過癮,那樣的生活、那樣熱血的日子,真是令人神往的日子!
在《黑客》的第二章,以非常概括的方式,介紹了“黑客倫理”:任何人與任何規則,都無法阻斷人類的好奇心;沒有權威,憑實力說話;你可以在計算機上創造出藝術與美;計算機可以讓你的生活更美好……
如果你看了以后,也深有同感,那么成為一個黑客是你自然的選擇。成為一個黑客,是選擇一種生活方式,選擇無盡的探索與創造;選擇用鍵盤書寫代碼,來改變這個世界;選擇向全世界展示自己的成果;選擇和全世界的聰明頭腦聯接在一起。而對于黑客來說,無法看到源代碼,無法了解事情是如何運作的,無法掌握與控制那些系統,這簡直是一種難以想象的罪惡。
所以,在談開源的時候,我想談的第二點,是關于生活方式,以及選擇這種生活方式時,背后的信仰。
三、關于現狀
我這篇文章,是用簡體中文寫的,面向的目標讀者是國內的開發者。無法否認的一點是:現狀的確不容樂觀!
曾經我在CSDN接受過一次書面采訪,CSDN的記者提了很多問題,整篇文章的標題是《擁抱開源從中受益》。但是,下面的跟貼評論,實在是令人喪氣:收入可憐,沒有屬于自己的居所,開毛源;開源在咱們的社會主義初級階段根本行不通。搞技術的都是窮人,開個狗屁的源;估計開源在中國,是有錢,有房,有車,有老婆,有孩子,還沒什么具體的事情干的人,無聊了然后去弄弄的東西;
這是現狀之一。
在國內,我看到很多人自稱?絲。而程序員,則自嘲為碼農。自我貶低,自我嘲諷,自憐自艾,自詡為苦逼。放眼望去,人家全是高富帥,官二代。唯獨自己是看不到未來,買不起房的矮窮挫。
這是現狀之二。
這個世界上有兩種奇怪的邏輯(而且在國內都很常見),一種是“國外有一個好東西,咱們克隆一個吧!”,另一種是“已經有一個很好的了,我們為什么還要做一個?”。這兩種邏輯背后,其實掩藏著同一種不自信,那是:“我們不可能有創新,不可能做出更好的東西來,不可能后來居上!”這是何等的可悲!?
這是現狀之三。
做開源的人,往往非常孤獨。一個開源項目,默默的誕生,默默的改進,然后默默的停止,后默默的消失。這樣的孤獨感,很多開源人都體會過。國內的開源人,還有一些特別的體會:被人質問:做這個干啥,又不能掙錢?被人貶低:國產的東西,會有好東西?被人反問:你們不是做免費軟件的嗎?怎么還要收服務費?
這是現狀之四。
所以,在談開源的時候,我無法繞過現狀不談。
四、關于良性循環
有一種常見的思維方式,是分析復雜現象背后的因果關系。通常我們會發現一個循環依賴的因果鏈。既可以用于解釋現狀,也可以用來指導破局之法。簡單的分析國內的開源領域,我們也可以發現這樣的循環。因為缺乏足夠多、足夠好的開源愛好者,自然無法做出更多優質的開源產品;因為缺乏優質的國內開源項目,大多數開源產品的使用者,都習慣于在國外的開源社區尋找項目;因為大家的眼光都放在外面,作為受益者的個人用戶與企業用戶,也難以興起回饋社區、捐贈開發者的念頭;因為國內的開源人難以得到足夠的贊助和支持,自然不會有很多人熱心的投入開源。這樣,開源人、開源產品、開源用戶的循環依賴,成了一個死結。
當然,如果樂觀一點來看問題,我們也可以說:要建立一個良性循環的開源生態圈,既可以從任何一個要素入手,也不妨大家齊努力,從多個方向下手。日拱一卒、不期速成。逐步推動,總會有所進展。
如果要分一個輕重緩急,那么我認為給國內開源,找到更多的生力軍,也許是可以優先考慮的做法。一方面要讓更多的程序員意識到,即使不掙錢,做開源也是有收益的。我想引用微博上的兩段話,來說明我的觀點:@姜寧willem:知識改變命運,想通過開源項目獲取知識,只要你愿意,地球上沒有人能阻擋你。 在這里不拼爹,不拼公司背景,拼的是對技術追求的那顆心。 通過開源項目能實現個人價值,只是在國內這樣的成功案例不多。 @Freeman小屋:相對于在閉源公司的工作,開源社區的工作決不會讓你成為nobody,每一次代碼提交,每一次回答問題,都是對你自身 reputation的積累,并且你的工作都有track,想想找工作的時候你只要說我是某社區的誰能拿offer了。而且,我特別希望在校的大學生,能夠意識到這一點,在完全沒有經濟壓力、思想又為活躍的階段,多多參與開源,是有益無害,一本萬利的好事情。