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為例,具體步驟可以參考這裡: ofollow,noindex" target="_blank">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,如何晉級成一位頂級程式設計師?他給出了這樣的答案:
- 敢於試錯,不要擔心犯錯,這是寶貴的經歷,但要從中汲取經驗避免第二次犯錯;
- 積極參加到開源社群,在社群可以鍛鍊自己的思考能力和解決問題的能力,同時,可以認識很多志同道合的朋友,這是技術能力以外更重要的財富;
- 髮型不重要。
活動預告:2018 中國開源年會
看完文章不過癮?快來2018 中國開源年會,和Justin Mclean面對面,此外還有多位來自阿里巴巴的重磅嘉賓分享關於開源的故事。
-> 歡迎關注“阿里巴巴中介軟體”,加入中介軟體開發者群,與技術同行。