繼百度、阿里、華爲以後,如何成爲下一個進入 Apache 的中國公司?

Apache 軟件基金會是當今最具影響力的非營利性開源軟件項目組織,在 Apache 軟件基金會主導下,已有 350 多個頂級開源項目畢業,包括全球最著名的網絡服務器軟件 Apache HTTP Server。除了許多在信息技術領域十分具有影響力的項目外,Apache 許可證(Apache License),Apache 貢獻者協議許可(CLAs)和開放合作的模式(Apache Way)也在業內有着突出的貢獻,其影響力遠遠擴大到 Apache 軟件基金會以外。>
可以說,Apache 軟件基金會已然成爲現代開源軟件系統的基石。但是,你瞭解 Apache 軟件基金會嘛?你知道 Apache 軟件基金會是如何運作的嗎?

本次 TGO 鯤鵬會邀請到華爲開源軟件部技術專家、前紅帽軟件主任工程師、Apache 軟件基金會會員 姜寧和騰訊大數據總監、開源聯盟主席 、TGO 鯤鵬會深圳會員 堵俊平,他們將帶你走近 Apache 軟件基金會的幕後,一探其背後的運作機理。以下,Enjoy~

姜寧:如何從 Apache 孵化器中畢業?

Apache 基金會算是世界上最大的一個開源基金會,因爲它大概共有 300 多個項目,旗下的 committer 大概有 7000 多個。

Apache 基金會成立的主要使命是爲公衆利益免費提供軟件。說起來簡單,做起來難——首先你需要解決法律的問題,因爲開源的許可協議是開源軟件的根基,Apache 很大程度上是爲了程序員建立了一個法律體系。同時,Apache 還爲他旗下很多項目提供了基礎設施,包括郵件列表、對應代碼庫等等。另外,還有大家常常使用的進項倉庫,都是需要投入資源、資金進行維護的。

我認爲 Apache 相對來說是一個比較草根的組織,也是一箇中立的組織,因爲它不偏向於任何一個廠商,並允許大家使用商業友好的許可協議,從而幫助軟件和開源不斷地向前發展。

值得一提的是,Apache 爲項目治理提供了一個比較好的指導:

第一,協作式的開發方式。 在 Apache 基金會裏有很多項目開發人員是分佈在世界各地的,彼此間很難見面,但是大家可以通過 E-mail 等異步的方式交流、協作。同時,大家在交流過程中,也會互相尊重,並真誠地以技術爲基礎進行交流。

第二,持續提供高質量的軟件。 雖然 Apache 基金會開源項目很多,但是質量也是有所保障的。

第三,開源項目安全性。 這也是 Apache 非常重視的一項,這部分也有專門的安全管理委員會進行管理;同時他們也會常常和 PMC 之間進行協調,並致力於標準的實現。

同時,在 Apache 基金會裏還有很重要的一點——社區大於代碼,我認爲這部分是國內開放項目做得不太好的地方。國內大多數開發項目者都認爲只要把代碼開放出來就可以了,但是實際上遠遠不止這一點。簡單來說,我們會分爲 3 個方面:

第一,精英之治,個人通過工作積累功績。 實際上,我們在這個過程中是有個相應的階梯——User、Contributor、Committer、PMC、Member,這每一步都是需要依靠你在給基金會項目做貢獻的過程中,讓你所做的貢獻得到大家的認可。在此基礎上,你就可以逐步地成長起來。

Apache 基金會在很大程度上用這種機制,讓你能被別人看到、得到他人的認可,間接地讓你得到相應的權利和影響力。

第二,透明度,當前國內項目在保證透明度仍有一定的缺點。 在 Apache 裏,你可以找到所有會議的記錄,同時你們在郵件交流的過程中,也會有一定的存檔內容。這樣的方式有利於任何人在任何時間都可以直接瞭解到大家正在討論什麼內容。

第三,大家對開源的理解還只停留在公開代碼的階段,而實際上社區一直在 強調社區健康是首要的

接下來,我將給大家分享比較重要的部分——如果你想自己的項目進入 Apcahe,主要需要經歷哪幾個流程?

第一,撰寫項目提案。實際上,這一步就是把你項目的內容、目標、進度,以及和其他項目之間的關係描述清楚。

第二,找到 Champion 和 Mentor。Champion 相當於一個 Apache 基金會 接口人,他對 Apache 的規則比較瞭解,同時能幫助項目找到 Mentor,以及爲項目提供相應的幫助。

進入 Apache 其實是一個溝通、交涉的過程,因爲你需要用項目吸引到 Mentor 來幫助你。一般來說,一個 Apache 項目大概需要 3-4 個 Mentor;如果算上 Champion 的話,你至少還需要再找 2-3 個 Mentor。

第三,當提綱投票通過後,孵化器會給你創建一個孵化項目,後續需要籤各式各樣的法律文書——SGA、CLA、iCLA。因爲需要你保證代碼的來路是清晰的,不能把別人的東西說成自己的,這個過程也是一個很重要的基石。

第四,項目名稱,這是一個很重要的點。因爲項目捐獻給 Apache 基金會,意味着項目的名稱和商標也會捐獻給 Apahce 基金會,同時 Apache 基金會還會要求項目的相關專利也要授權給基金會使用。另外,如果你的名稱和其他項目衝突的話,會存在改名的風險。因此,在進入 Apache 之前最好做名稱的搜索,如果有條件的話,最好做一些商標的申請,以便於保護相應的權益。

在基本流程之後,我們的開發過程會與 Apache 的基礎設施進行整合。在 Apache 裏有一句常說的話——如果這件事情沒有在郵件列表進行討論的話,它就是沒有發生。

爲什麼這麼說呢?因爲郵件列表是溝通工具,也是證據,後續有什麼糾紛的話,我們可以通過郵件列表進行調查。另外,郵件列表還起到了問題跟蹤和知識共享的作用。

在進入 Apache 以後,除了基礎設施之外,還需要對社區的發展負責。關於社區,我主要想給大家分享幾個內容:

第一,社區的角色。社區的角色主要分爲:

  • 用戶——用戶是項目存在的意義,沒有用戶意味着項目失去了存在的根基;
  • 貢獻者——項目依賴於來自社區的貢獻者們。貢獻者參與完成了及時反饋 Bug、郵件討論,並對 Bug 進行改正,增加文檔等社區任務;
  • 代碼提交者——以功績爲參考項,傑出的貢獻者們能夠成爲代碼提交者;
  • 項目管理委員會會員——項目委員會 (PMC) 負責制定項目的方向,批准發佈以及對新的代碼提交者和 PMC 會員投票。

另外,在社區交流的過程中,大家都需要遵循友善、尊重、信任和謙虛的方式進行交流,這也是我們的行爲準則。

在 Apache 孵化器孵化的過程中,你可能會接觸到各種各樣和你類似的項目,但是大家都是可以互相協作的。同時在社區發展的過程中,我認爲一個項目的好壞和社區活躍程度有很大的關係。因爲社區是項目發展的一個源泉,如果你的社區比較活躍的話,會有很多人會幫助你提升項目水平、修改 Bug 等等。

最後,想和大家分享如何從 Apache 孵化器畢業,也就是達到什麼樣的情況才能畢業。

第一,當你的相關文書、法律協議已經簽署,名稱沒有問題,同時你也展示了自己的自我管理和發佈管理的能力。另外,你也展示了自己能夠建立一個開放多樣性的社區,也符合 Apache 項目成熟度模型,你的項目具備了 Apache 版本發佈標準能力。實際上,這個過程還是很具備挑戰性的,因爲很多項目在最開始的版本發佈階段很難一次做成功,大多要經歷好幾次的發佈準備。

在上述過程中,Apache 也會給你提供社區成熟度模型的問卷表,幫助你分析自己的優勢和不足。

第二,建立好的法律框架。

第三,公開透明地運作項目。

滿足這 3 點以後,恭喜你,你的項目基本就能從 Apache 孵化器中畢業了。

堵俊平:從 Apache 基金會看,什麼是成功的開源項目

如何定義成功的開源項目?

今天我主要想和大家分享,站在從 Apache 基金會和企業開源負責人的雙重視角來看成功的開源項目是什麼樣的。

實際上,要定義成功的開源項目也沒有太多的可以量化的標準,更多的可能是包含一些主觀因素的事實衡量標準:

  • 廣泛的使用

有些項目可能會需要看下載量、分發量、部署量,以及引用量和調用量來判斷它的成功。當然,這些不一定是非常絕對的量化指標,但是整體給人的感受是,當你這個產品或者項目得到廣泛的使用時,那麼它就會有比較大的價值。

  • 給世界帶來巨大的價值

這種情況就類似於 Hadoop 項目,它能給業界帶來所謂的大數據革命。或者說,這個項目(例如 Android)、產品能使我們生活變得更加容易,得到巨大的助力等等。

  • 社區和技術影響力

這方面主要是指項目的開發者、用戶數量擁有一定的基數。同時,它是具有強大生命力的,在社區裏有一個龐大的優秀團隊,包括能爲我們的工程師、技術人提供一些津津樂道的話題。

  • 構建完善的生態

因爲所有的開源項目,很多時候都需要和其他項目來配合,尤其是偏原子性的項目即解決某一狹窄領域問題,這些項目能爲我們提供一些垂直性的原子能力。現在有很多開源項目都是這樣,需要在一起合作,構成一個生態。這樣一來,也就是變成一個相互連接的上下游關係。因爲現在幾乎沒有項目會真正從第一行代碼開始,即使是閉源的項目,很多時候也是基於開源的項目原型來開發,所以如果你的項目能構建起一個完善的生態鏈條,形成輻射上下游項目的強大影響力,那麼也意味着這個項目很大意義上是成功的。

  • 成功的商業化

實際上,商業化並不是判斷該項目是否成功的標準,因爲很多成功的開源項目也未必合適做成商業化落地的模式。但是,如果一個開源項目能夠成功做成商業化,那麼顯然它具備了很多成功開源項目的因素。比如,它肯定是很有價值的,它一定是拉動了相應的資源和規模化的落地使用,不管從市場、技術,還是使用者的角度上看,它一定是得到了一定程度的推廣。

開源項目如何成功?

在我看來,成功的開源項目會構建起一個項目和社區的正向促進循環,即成長飛輪。

剛開始,我們可能擁有一個很有潛質的項目。比如,我們能看到一個有想象力的技術和功能空間,或者是一片領域,這個項目可以創造性的解決某些問題等等。然後就匯聚了一個比較強大的創始團隊,做了一個初創版本,即 First release,然後提供一些有價值的功能。

當產生具備一些有價值的功能後,就會慢慢吸引更多的用戶來使用。因爲市場上可能還沒有出現類似的產品,或者類似的產品非常昂貴等等。那麼這個開源項目或開源產品,就可以幫助很多公司、用戶實現它的業務價值。積累多了,自然也會有更多的用戶慢慢地變成開發者。

一方面,是因爲用戶覺得這個軟件有價值,對技術細節感到好奇,想參與一起來貢獻;另一方面,用戶會覺得畢竟這款產品不是爲他 / 她量身定製的,可能希望它能實現更多的功能。

隨着用戶量和開發者的數量增長,我們可以看到開源社區裏有很多自發產生的技術佈道者,幫助這個項目產生更大的影響力另一方面,更多的用戶開發者和影響力,最終會幫助這個項目發揮潛力,幫助吸引更多的研發測試落地等資源進來,實現更多更好的功能。

實際上,就是這樣一個項目和社區的成長飛輪,讓我們不斷看到一些剛開始功能還不太齊全的小項目,慢慢地變得羽翼豐滿,最後有可能成長爲參天大樹。

如何判斷開源項目的潛力?

回到第一個環節,開源項目有很多,那麼我們該如何判斷一個開源項目是否具備潛力呢?或者我們該如何挖掘自身開源項目的潛力呢?

當我們決定要去貢獻一個開源項目,或者是做一個開源項目,亦或者是要加入一個開源項目時,你在項目中的身份不同,可能關注的點也不一樣。

以 Hadoop 項目爲例,我認爲最重要的可能有 3 點:

  • 技術潮流和趨勢;
  • 用戶痛點;
  • 市場前景。

Hadoop 第一個版本大約是在 2006 年發佈的,它展示的技術潮流和趨勢正好是大數據行業發生技術革命的時期。在 Hadoop 出現前後的 2-3 年內,產生了一大批重磅級的新型互聯網公司,這些公司的新型業務產生了大量的社交數據、互聯網數據等等,這種數據規模、數據潮流可能是傳統的數據庫和數據倉庫解決不了的,所以業界需要一些新的技術解決。

因此,當 Hadoop 發佈時,它所代表的技術潮流和趨勢和當時業界的整體需求是完全吻合的,同時也能解決當時的用戶痛點,所以它所具備的市場前景是非常廣闊的。

基於這幾點看開源項目,我們可以發現即使它在剛發佈時功能不完全,亦或者還沒有一個完整的解決方案,但是它仍然具備強大的生命力。這是很重要的方面,也是突顯它潛力的地方。

從潛力到價值:優秀項目的自我突破

想要將開源項目從有潛力變成一個很有價值的產品,那麼它是需要優秀項目來實現自我突破的,而這個優秀項目的自我突破來源於什麼呢?

  • 創始團隊的核心技術開發能力;
  • 業務場景與挑戰;
  • 開源項目經驗;
  • 解決問題的普遍性(格局);
  • 團隊早期的穩定性。

這也是開源項目是否成功的第二個關鍵階段,從所謂的有潛力項目發展成一個有價值的開源產品,上述的 5 點也非常重要。

有價值的開源項目如何吸引用戶?

如果當它已經發展成一個有價值的開源項目時,下一步又該如何吸引用戶呢?這就來到了開源項目發展的第三個階段——一個有價值的項目,如何吸引到更多的用戶。我覺得有如下幾點:

第一,加強項目建設,包括項目入口、網站、文檔等引流方式的建設。因爲如果這些入門級的使用和開發文檔有問題的話,造成軟件實際使用困難的話,很可能會影響到項目的早期用戶來持續使用開源軟件。

第二,社區支持。凡是軟件總會有 Bug, 這些開源項目在使用過程中多多少少會暴露一些問題。當然,這些問題不一定全部是 Bug,可能是設計上讓用戶不理解的地方。如果我們能維護起一個用戶和開發者在一起的社區,我們就能得到一些良性的建議,並加以改善,得到更多用戶的支持,同時我們就能擁有一個強大的持續支持的、良性增長的社區。比如,在一個活躍的社區郵件列表裏,你的問題通常可以得到很快的解答。

第三,社區運營與推廣。因爲剛開始的時候,項目的潛在用戶可能都不瞭解這個項目,所以可能沒有多少人會來試用。因此,這種情況可以嘗試多做一些社區運營與推廣,讓更多的人瞭解到項目的亮點。比如,在有影響力的技術峯會(從幾百到幾千人不等)上介紹,亦或者構建自己的社區用戶牆等等來展現用戶與場景。

第四,商業化運營與服務。實際上,商業化是另外一個方向,主要是通過市場推廣,或者服務產品化的手段吸引用戶,這種與傳統軟件推廣或運營的手段比較類似。

第五,生態構建。也就是說與其他項目關聯成 End-to-end 的解決方案,讓你的項目能擁有更多的更廣泛的用戶,解決更大的問題。

開源社區的重要性及如何吸引更多的開發者

有了用戶以後,我們也需要更多的開發者。對於開源項目來說,開發者社區是至關重要的。我們通常認爲開源項目的第一性原理是,社區優於代碼。

實際上,我對開源社區的本質理解是,以項目的代碼爲載體所構成的人與人的連接。

那麼我們該如何吸引到社區的開發者,讓更多人連接起來呢?

首先要形成一個好的共識機制。在尋找共識的過程中,剛開始我們可能會有一些認知差距,但是慢慢地大家大多都是在尋找一個共同的立場與認知;如果實在不能達成共識,那麼就會相互妥協,找到一個可以共存、共贏的方案。

同樣,如果想吸引更多的社區開發者,那麼項目就需要構建一個積極正向的社區,讓大家在社區裏都有參與度,從而吸引最下面的用戶羣體向上,或者由開發者向核心開發者轉化。在整個轉化的過程中,不僅可以構建一個更開放的社區,也能吸引到更多社區開發者。

如何打造項目的影響力?

當有了用戶和開發者以後,我們該如何進一步打造項目影響力呢?我認爲主要可以分爲 8 點:

  • 創始人、創始團隊的能量;
  • 社區的發酵與醞釀;
  • 持續的創新,不斷的拓展場景和功能,優化性能;
  • 行業的廣泛採納以及學術領域的肯定;
  • 加強技術佈道與 PR;
  • 與用戶和開發者建立廣泛與密切的聯繫;
  • 與生態項目構建起更緊密的聯繫。

創始人、創始團隊的能量,這一點是很重要的,因爲只有項目的核心團隊擁有不斷推動技術創新、改變世界的熱情和決心,才能讓開源項目能夠持續發酵,後續加入的 Committer、PMC 和開發者也能被這些 Rock Star 帶動起來,繼續發光發熱。

然後項目本身也需要持續創新,一個開源項目如果停下了創新的節奏,那麼慢慢就會有很多開發者陸續離開,轉向一個更酷、更新的技術社區。

另外,你的開源項目影響力如果能得到學術領域的肯定,那麼一定是很好的。因爲它有助於新生力量的加入,比如學生、教授、科研機構等等。這樣也有利於項目的長遠發展,包括新領域的探索。

除此之外,像技術佈道與 PR,這都是非常正常的推廣方式。但是比較重要的一點是,開源項目和傳統軟件技術還不太一樣,開源項目需要與用戶開發者建立一個長期且密切的聯繫,因爲這些開發者會幫助項目不斷的創新,所以保持社區的熱度是很重要的。

開源項目與商業化

最後,我們再來談談開源項目和商業化的關係。實際上,開源和商業化是沒有直接聯繫的,而我們想說的是,開源項目指的是項目開發的方式,而商業化指的是項目的商業價值變現,或者說是商業行爲。但是,這兩個問題往往又很難剝離開,因爲這裏會涉及到既是開發者,又有商業化訴求的團隊和公司。

因此在這個問題上,我們可以站在兩個角度來看待問題,一種是站在開源的角度看商業化;另一種是站在商業化角度看開源。

首先,我來說一下站在開源的視角看商業化。和個人開發者相比,商業化團隊往往是以組織的方式參與的,這種有組織有計劃的參與方式可以擺脫個人參與的自發性和隨意性。我認爲,這是一件非常好的事情,因爲有組織加入時,它能保障項目的開發和運營資源,同時也有創新的動力。同時,爲了保證開源項目的商業化價值,商業化的組織通常會有更多的資源做技術推廣。

但是一旦商業化團隊加入以後,也可能會對項目造成一些負面的影響。比如因爲商業化公司的本質是追求利潤,所以往往從公司利益的角度出發,他們可能會傾向於把控社區。另外,因爲這樣的商業化團隊可能會面臨商業壓力,所以極端情況下會做出一些比較短線的,甚至殺雞取卵的事情。實際上,這些都是不利於開源項目發展的行爲,需要一個強大的社區來加以限制。

其次,我再來說說站在商業化的角度看開源的問題。比如,我們現在是一個公司,或者是一個創業公司的高管,我們通常在考慮是否用開源的方式來做軟件,主要會看中 3 點收益:

第一,軟件開源是一個大的趨勢,當前絕大部分軟件和項目都是基於開源項目來創造的,項目開源會越來越主流;

第二,通過開源的方式可以有效降低創新的投入,並提高開發效率;

第三,用戶推廣的門檻低,一旦決定開源,那麼你的項目就會比閉源的方式更容易得到推廣。通過社區的推廣和口碑傳播,開源技術和項目可以取得類似病毒式營銷的效果;而後者以往是需要公司的銷售團隊挨家挨戶來推廣的,推廣成本高、速度慢。

另外,從商業化看開源也存在 2 個問題:

第一,你需要不斷地創新,因爲只有創新才能留下來,才能在商業化領域形成一個競爭優勢;

第二,因爲開源是免費的軟件,所以直接收費會比較困難,設計好自己的商業模式就顯得至關重要。

回顧整體,我們可以發現:如果想要打造一個所謂成功的開源項目,本質是要讓項目的發展飛輪快速成長起來。如果這其中任何一個環節出現了問題,那麼整個飛輪就無法高速的轉動。

同時,我們也看到,想要構建一個成功的開源項目是一件非常不容易的事情,需要考慮和推動的因素也很多,而且對個人或者團隊的考驗都是一個非常全面的過程。

最後,我想說的是,即便是我們花大力氣來關注和研究開源項目的成功之道,但實踐纔是檢驗真理的唯一標準,誰也無法準確預言下一個成功的爆款開源項目是什麼。希望大家能真正的加入到開源項目中來,成爲社區的一份子,無論最終成功與否,都一定有很大的樂趣和成長。這就是我今天想要給大家分享的內容,謝謝。


TGO鯤鵬會,是極客邦科技旗下高端技術人聚集和交流的組織,旨在組建全球最具影響力的科技領導者社交網絡,線上線下相結合,爲會員提供專享服務。目前,TGO鯤鵬會已在北京、上海、杭州、廣州、深圳、成都、硅谷、臺灣、南京、廈門、武漢、蘇州十二個城市設立分會。現在全球擁有在冊會員 800+ 名,60% 爲 CTO、技術 VP、技術合夥人。

會員覆蓋了 BATJ 等互聯網巨頭公司技術領導者,同時,阿里巴巴王堅博士、同程藝龍技術委員會主任張海龍、蘇寧易購 IT 總部執行副總裁喬新亮已經受邀,成爲 TGO 鯤鵬會榮譽導師。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章