Apache孵化器主席Justin Mclean:如何成為Apache頂級開源項目
近日,Apache孵化器主席、Apache基金會成員、Dubbo & RocketMQ等開源項目的導師Justin Mclean來到阿裏巴巴西溪園區,與眾多開發者分享了如何打造一個Apache頂級項目,以及項目孵化過程會遇到的一些盲點和挑戰。
經Justin Mclean先生本人允許,並經主辦方阿裏中間件事業部&阿裏技術戰略部授權,小編將會議中分享的內容整理成文,帶大家走進Apache軟件基金會,了解頂級開源項目的晉級之路。(現場為英文分享,本文在分享的基礎上做了些內容擴展,感謝阿裏巴巴高級技術專家千臂對本文的校對和在內容上的貢獻)
Justin Mclean Bio:
Apache孵化器主席
獨立程序員,30年+編程經驗
Apache孵化器PMC
Apache軟件基金會成員
包括Dubbo在內的多個Apache項目的導師
參與審核了350+ Apache孵化器項目的發布
為什麽郵件列表仍是最主要的溝通方式?
Apache是目前全球最大的軟件基金會,其第一個項目是Apache Httpd Server,大家用過的諸多項目,例如Dubbo, Log4j, Maven, RocketMQ和Tomcat等,均孵化自Apache。
中文名:Apache 軟件基金會
英文名:Apache Software Foundation
英文簡稱:ASF
ASF 正式創建於1999年,主要是為公眾提供有用的免費軟件,並為軟件開發者社區提供支持和服務,它的創建者是一個自稱為Apache組織的群體。
早在1995年,Apache組織的成員聚集在一起,在美國伊利諾伊大學超級計算機應用程序國家中心開發的NCSA HTTPd服務器的基礎上開發與維護了一個叫Apache的HTTP服務器。
早期,NCSA HTTPd服務器是一個叫Rob McCool的程序員開發的,但是後來慢慢失去了興趣,導致這個功能強大又好用的服務器沒人維護。於是一些愛好者和用戶就自發開始維護起來,並不斷改善功能、發布版本。為了更好的進行溝通,組織中的一位成員創建了一個郵件組,把維護工作高效的組織起來,並把這個軟件叫 Apache 服務器。這也是為什麽Apache的所有項目至今仍然以郵件列表作為溝通的主要方式。
Apache的命名來源於北美當地一支名叫Apache的印第安部落,這支部落以高超的軍事素養和超人的忍耐力著稱,19世紀後半期對侵占他們領土的***者進行了反抗。為了對這支部落表示敬仰,就取了這個名字。但這裏還流傳著一個小故事,說是在NCSA HTTPd基礎上,大家都通過打補丁不斷在修改這個軟件,被戲稱為A Patchy Server,和Apache Server讀音很像。
後來,隨著商業需求的增多,圍繞Apache HTTP服務器的項目越來越多,也有一些外部組織開始捐獻項目給Apache,以促進項目發展。為了讓這些外部項目能順利進入到Apache,Apache於2002年創建了Incubator(孵化)項目。經過20多年的發展,截止2018年,ASF 已擁有194個頂級項目,54個孵化項目,6500+位committers,700位基金會成員,196位PMC,50個podlings。其中,由中國開發者主導的項目,有RocketMQ,WeeX,ECharts和Skywalking等。
ASF 都有哪些成員?
參與Apache項目社區活動的人,一般分為以下幾類:
直接用戶User:通過使用社區的項目構建自己的業務架構的開發者都是Apache的用戶;
貢獻者Contributor:部分用戶在使用Apache某個或多個項目的過程中,遇到問題,自己通過分析調試找到解決方案,並提交給項目組,最終被接受,這些用戶就是Apache的貢獻者;
提交者Committer:貢獻多了,經過PMC的提議和投票,就會成為Committer,Committer即意味著正式加入Apache,擁有Apache個人帳號以及相應項目的寫權限;
PMC:Committer再往上走就是PMC,這個是由現有PMC成員提名產生的。
此外,ASF 還有21位創始成員,和一個Board Member Team,主要負責基金會各類章程的制定和運作。
特別要強調的是Project Management Committees,即 PMC,每個項目從孵化階段開始就會有PMC,主要負責保證開源項目的社區活動都能運轉良好,這裏運轉的機制就是The Apache Way。
什麽是 The Apache Way?
就像我們加入一家公司需要了解這家公司的文化一樣,參與Apache開源項目之前,我們也需要需要了解ASF的文化,這個文化就稱為The Apache Way。
公益使命- Charity:ASF是公益組織,使命是為全世界提供有用的軟件,並且全部免費。取之有道,用之有方。
實用主義 - Pragramtic:相比GPL,Apache License有更廣泛的用戶基礎,有人的地方就有規矩,但社區沒有死板的規定,只有guideline幫助大家發展項目。No one is the Boss.
社區勝於代碼 - Community:把項目構建出來這不是開源,去構建社區才是真正的開源。對社區而言,一切都是圍繞代碼而生,無代碼則社區不復存在。在代碼之上,則是如何做事、如何待人、如何決策的理念體現,一個健康的社區遠比優秀的代碼重要。如果代碼奇爛無比,社區可以重寫,但社區有了問題,代碼即便再好,最終也會付之東流。More resources than a company.
公開透明與共識決策 - Open&Consensus:所有的決定,不管是技術feature、發展方向,還是版本發布等,都應該被公開討論,而形式就是郵件列表,這些討論過程和結論都會被永久存檔。而討論的過程,就是大家自由發表意見的過程,最終通過投票,以比較民主的方法來做集體決定。If it doesn‘t happen on email, it doesn‘t happen.
任人唯賢 - Merit:特別強調一點,貢獻絕不僅僅是代碼,貢獻可以是很多方面,還包括修正中英文文檔,提交PR,總結經驗分享到社區等等。Those that have proven they can do, get to do more.
開發者如何參與社區貢獻
第一步是先訂閱開發郵件組,以Dubbo為例,具體步驟可以參考這裏:https://github.com/apache/incubator-dubbo/wiki/Mailing-list-subscription-guide
學習中英文文檔,進行修正或優化,提PR。有疑問的地方,可以E-mail到郵件組或提issue,官方開發者的回復通常會比Google或StackOverFlow裏找到的答案更全面和準確。
如果你正在使用某個開源項目,可以將實踐經驗總結出來,寫篇blog,分享到社區。真實的案例總是最具有說服力的。
參與issue和PR的解決,回答用戶的問題、PR的review。Good first issue以及Help wanted的issue,總有一個適合你。
如果你想深入學習Dubbo-rpc框架,UT是一個非常好的開始,完善和補充現有的UT,一邊學習一邊貢獻,何樂而不為?
發現了bug,報issue,通過自己的努力最終解決了,提一個issue,first-contributor並不是那麽難,拼寫錯誤也算哦。
如果你發現一個可以幫助用戶更方便地使用Dubbo,無論是開發、測試、調試、mock還是其他工具,都可以貢獻到Dubbo生態中來。
最後社區非常歡迎大家通過郵件提想法,也歡迎大家多討論,你會發現,技術變牛的同時,英文也變的666了。
開源項目晉級之路
進? Apache 分為三個階段,準備階段、孵化階段和畢業階段。
準備階段:找到願意幫助孵化的導師(通常是3位),向Apache 提交進?孵化的申請,經過導師們討論並投票(獲得多數票即可通過),通過後進?就可以孵化了。
孵化階段:分為兩大環節,第?個環節是公司和個人簽署協議向Apache 移交代碼和知識產權。第二個環節是在導師的指導下按照Apache的規範,搭建開源項目的官網,在社區發布項目新版本並優化build流程,引入committers構建基於項目的開發者生態,逐步將生態做大。
畢業階段:如果最終通過了成熟度評估,就可以順利畢業成為Apache的頂級項目了。
最後,當一位開發者提問Justin,如何晉級成一位頂級程序員?他給出了這樣的答案:
敢於試錯,不要擔心犯錯,這是寶貴的經歷,但要從中汲取經驗避免第二次犯錯;
積極參加到開源社區,在社區可以鍛煉自己的思考能力和解決問題的能力,同時,可以認識很多誌同道合的朋友,這是技術能力以外更重要的財富;
發型不重要。
Apache孵化器主席Justin Mclean:如何成為Apache頂級開源項目