開源是種生活方式

發表於2012-08-10

| 2012-08-10 08:37   分享: 1    

文 / 方越

走上開源道路

清晨六點鐘,被兒子鬧醒,第一件事是開啟郵箱,迎面而來的是數以百計的郵件,我知道新一天的工作開始了。

這是一個典型的場景, 過去四年多的時間, 我一直在家工作,全職參與Apache旗下多個開源專案的開發。以開源社群為核心, 以maillinglistIRCJIRASVNGitMaven等為工具,參與全球化協作的開源專案。

走上Apache開源道路,要從2006年談起,當時源於ObjectWeb社群的Celtix和源於Codehaus社群的Xfire合併,成為了Apache旗下的一個新專案CXF。我當時所服務的公司IONA是開源專案Celtix的主要推動者,也是Celtix的程式碼提交者(Committer), 因此成為了Apache CXFInitial Committer。 從那之後, 我一直從事開源軟體開發工作,期間伴隨著IONAProgress收購, 以及Progress成立獨立的專門從事開源專案的子公司FuseSource。根據專案發展的需要,我從事的工作也從最初的Apache CXF擴充套件到了Apache旗下的多個開源專案。目前,我是Apache CXFServicemixKarafCamelFelixCommitter(在Apache開源社群中我使用Freeman Fang這個名字),並且是Apache CXFServicemixKarafPMC member(專案管理委員會成員)。

我想讀者最為關心的問題是,全職從事開源軟體的開發,靠什麼來生活?是完全憑興趣嗎?如何保證自身的可持續性發展?

Ok,要回答這些問題, 必須先談一種基於開源的商業模式—圍繞開 源社群和開源軟體, 透過僱用主要的開源專案開發者, 向外提供付費的商業服務, 這種付費服務包括訂閱、諮詢、培訓等。我的僱主就是提供類似服務的商業 公司。這種開源商業模式在基礎軟體架構領域(如開源作業系統、開源資料庫和開源基礎中介軟體)已被證明是一種行之有效的方式,在歐美市場被廣泛接受。但在國 內, 這種商業模式還沒有被普遍認可,很多人還認為開源就是免費,不願意承認特定領域專家的價值,這種現象很值得深思。

在我看來,這種開源商業模式下,開源專案和開源社群因為有了商業公司的介入更加活躍,開源開發者有了穩定的收入獲得了可持續發展,付費使用者由於有了商業支援能更有效地使用開源軟體,非付費使用者也能從活躍的開源社群獲得支援,構成了一個共贏的生態環境。

回到本文開頭,我的日常工作是:閱讀大量我所從事的Apache開源專案的郵件和公司論壇帖子,回答社群使用者問題;實現新功能或者修復Bug,提交程式碼到Apache程式碼庫中。同時,如果付費使用者提交了問題,那麼高優先順序處理付費使用者問題,但實現的新功能或者修復的Bug都會第一時間回饋到相關Apache專案的程式碼庫中。 

為什麼從事開源專案

如果一個人能很長時間做一件事情並樂此不疲,那麼只有一個解釋,他很喜歡做這件事。我喜歡開源的原因很多,且聽我一一道來。

原因之一:開源意味著最大程度的分享,降低了知識學習的壁壘, 給了後發者趕超的機會。

在從事開源軟體開發的過程中,我經歷了這樣一個心理變化,從很自信到很不自信到慢慢找回自信。 由於有機會和世界上最好的一群軟體工程師一起工作, 我可以很清楚地看到自身的差距,但開源意味著一切都是透明的,不僅僅是程式碼,公開的社群討論也能給你很大的啟發。時間長了,你會看到自己的進步,慢慢找回 自信的過程就是進步的過程。對於一個喜歡技術、追求技術的人, 開源是一個能提供無限可能的大平臺。

原因之二:開源給了我最大程度的自由。

我不用去辦公室工作,能自由安排自己的工作時間。在北京這個大都市裡,不用去辦公室意味著每天能節省2~3個小時的通勤時間, 我可以用這個時間來學習、健身、娛樂,甚至加班。有了孩子之後,我每天早7點之前開始工作, 通常下午4點我會將工作停下, 接管照顧孩子的任務。在晚上8點孩子睡了之後,我會最後再工作一會兒。

隨著Internet等基礎設施的飛速發展,伴隨著大量輔助工具軟體的出現,遠端辦公成為可能,越來越多的工作由集中式變成分散式,我們的工作模式正在改變。這種模式降低了大城市的交通壓力,辦公場地的壓力,更加節能環保,同時也提高了工作者的生活質量。

原因之三:開源給了我成就感。

每次獲得一個Apache專案的Committer許可權,都是一次被認可的過程。通常意味著你要不斷地提交高質量的Patch給該專案,積極參與該專案的社群討論,之後該專案PMC才會提名和投票表決。每當收到一個專案的Committer邀請,都會帶給我巨大的喜悅和強烈的成就感。此外,參與社群討論,回答別人的問題,也是一件非常愉快的事情,這真的是可以上癮的。 

從事開源,就有機會和最好的工程師一起工作,做領先的技術和專案,這些專案不僅能直接服務終端使用者,還能成為其他專案的重要組成部分。例如,Apache Geronimo選擇基於Apache Karaf來實現OSGi容器;還例如Apache CXF作為但不限於JAX-WS協議的一個實現,得到了很廣泛的應用。 多個JEE伺服器如Apache GeronimoJBossJOnASPramati選擇CXF作為自己的JAX-WS實現(從JEE5開始則要透過TCK認證且需要有JAX-WS的支援)。

原因之四:開源讓我更好地瞭解世界。

從事開源專案的開發人員,來自世界各地,具備不同的文化背景、教育背景和思維方式。透過和他們交流, 我更好地瞭解了他們的技術水平以及引發了我思考人家為什麼會達到這樣的技術水平。

舉個例子,西方的工程師從事開源軟體只有一個理由—興趣。英文裡有一個單詞是Geek, 翻譯成中文是極客,代指狂熱於技術、思維異於常人的人群。用Geek來形容開源開發者再合適不過了,他們對技術的追求無止境,他們喜歡創造新的東西,他們渴望改變和引導技術發展的程式。對比國內研發工程師經常憂慮一些現實的困境,他們從來不考慮30或者35歲之後老了沒有競爭力的問題, 他們很少考慮轉型做管理者。他們通常年齡在35歲或者更大一些,10餘 年的行業技術積累讓他們知識的深度和廣度都很好。由於社會文化真正認可技術的價值,他們只憑做工程師就能生活得非常好(真的是非常好),他們要考慮的內容 相對單純一些, 就是從興趣出發,完全以技術為導向。當一個人真正對自己從事的工作有極大興趣、引以為豪且有多年的經驗積累之後, 其創造力和生產力是驚 人的。

技術專家的產生需要土壤,需要社會價值觀作為導向,讓有天賦的研發人員願意長期從事技術積累且無後顧之憂,並能獲取相應的回報是產生群體性技術專家 的基本前提。如果我們的技術人員都在考慮找機會轉型, 那麼恐怕永遠只能做低水平的簡單重複,離誕生偉大的軟體公司這個目標會越來越遠,與和世界一流的軟 件水平之間的差距會越來越大。

原因之五:開源已經、正在和將繼續改變軟體業的發展以及我們的生活。

基於成本優勢;程式碼可見,可深度定製;系統高度自由,無需繫結到特定廠商;更敏捷等原因, 越來越多的公司採用開源軟體和開源架構,這種趨勢也使更多的商業公司開源自己的產品, 以適應市場的發展。

且不說國外開源應用風起雲湧, 國內也有很多公司重視開源技術,採用開源架構,例如國內某著名電商網際網路公司。該公司重視技術積累,有自己的給力技 術團隊,有能力對開源解決方案深度定製,快速滿足自身需求。該公司的系統每天都在承受超大規模的併發請求但依然很穩定。我一直認為在大壓力複雜應用環境 中,只有自己是自己的上帝,開源給了你主宰自己命運的機會。這個例子說明真正重視技術積累,有給力技術團隊對企業自身的應用是多麼的重要。

為什麼國人參與開源力度不夠大

參與Apache開源專案以來,有一個現象非常困擾我,就是很少有同胞在相關專案郵件列表/論壇問問題,是國人很少使用這些開源專案嗎?顯然不是,以Apache CXF為例子,如果我們使用Google Trend來檢視關鍵字CXFGoogle被搜尋的統計,我們可以看到最多的搜尋請求來自中國,搜尋者使用的語言排在第一位的是中文;同時,我可以在網際網路上搜尋到大量的關於使用Apache CXF的中文技術部落格。以上都能證明, Apache CXF在國內被大量使用,但我為什麼在Apache CXF的郵件列表中很少看到中國人問問題, 更不要說參與討論、解答問題甚至打Patch了。我在這裡想嘗試分析一下為何同胞很少參與討論,並幫您打消顧慮。

我認為最主要的原因是文化上的差異,它首先表現為語言上面的障礙。開源社群的參與人員來自世界各地,為了保證大家的交流,採用的語言是英語,畢竟英 語目前是國際上最為通用的語言。線上下交流中,我瞭解到,很多人因為要用英語問問題而遲疑,甚至放棄問問題。其實大可不必,因為Apache社 區很多參與討論的人員的母語都不是英語,這並不妨礙大家用英語討論技術問題;再者,我和歐美同行交流過語言方面的問題,他們(尤其是英語是母語的同行)認 為很多中國人過於低估自己的英語交流水平。實際把自己的問題用英語描述清楚並沒有那麼難,別擔心,沒有人會像針對我們的英語考試中短文改錯那樣對待你的郵 件/帖子。畢竟, 我們掌握英語的程度遠遠超過西方人掌握中文的程度。另外,多參與討論, 對實用英語的挺高也很有幫助。

文化上第二個差異體現在不同的學習方式上,我們擅長的學習方式是有系統的教材,有標準的大綱, 最好再有大量的練習題來強化知識點。我們習慣於這種 學習方式,我們對規劃好的知識點可以掌握得非常好,具體的體現是我們很擅長考試,但我們很少主動問問題。大多數人在考完試之後, 馬上就會忘掉之前死記硬 背的東西。西方人要學習一個東西,習慣自己找材料,找問題,討論問題,因此,討論問題本身就是他們所習慣的學習方式的一部分。而透過這種方式獲得的知識更 讓人記憶深刻。我認為他們更善於學習新東西,尤其是需要自己主動學習時,他們的學習方式讓他們更有優勢。我們害怕沒有面子,害怕問出不靠譜的問題,迴避交 流。不要這樣,要更開放一些,善於利用Apache社群這個很好的資源,和技術專家討論問題。況且,英語有一句俗語,“No question is stupid”,就是在鼓勵大家問問題。 

本文簡單總結了我是如何走上Apache開源道路的及從事開源專案的一些感想,很多思考來自於新浪微博和各位朋友的交流過程(我的微博@Freeman小屋)。如果本文能鼓勵更多的同胞積極參與開源專案,寫作本文的目的就達到了 。

另外,本文一家之言, 純屬個人觀點,不代表任何機構、組織和商業公司。

最後想說,能有機會全職參與Apache開源軟體的開發,是我的機會好。我不是技術專家,我和技術專家一起工作, 我一直在努力,我是Freeman

作者方越,自2005年來全職參與Apache CXF、Apache Servicemix、Apache Karaf等多個開源專案,擅長Web Service、SOA、ESB、OSGi等領域。

來自:http://www.programmer.com.cn/13092/

開源是種生活方式

相關文章