Apache孵化器主席Justin Mclean:如何成为Apache顶级开源项目
近日,Apache孵化器主席、Apache基金會成員、Dubbo & RocketMQ等開源項(xiàng)目的導(dǎo)師Justin Mclean來到阿里巴巴西溪園區(qū),與眾多開發(fā)者分享了如何打造一個(gè)Apache頂級項(xiàng)目,以及項(xiàng)目孵化過程會遇到的一些盲點(diǎn)和挑戰(zhàn)。
經(jīng)Justin Mclean先生本人允許,并經(jīng)主辦方阿里中間件事業(yè)部&阿里技術(shù)戰(zhàn)略部授權(quán),小編將會議中分享的內(nèi)容整理成文,帶大家走進(jìn)Apache軟件基金會,了解頂級開源項(xiàng)目的晉級之路。(現(xiàn)場為英文分享,本文在分享的基礎(chǔ)上做了些內(nèi)容擴(kuò)展,感謝阿里巴巴高級技術(shù)專家千臂對本文的校對和在內(nèi)容上的貢獻(xiàn))
?
Justin Mclean Bio:
- Apache孵化器主席
- 獨(dú)立程序員,30年+編程經(jīng)驗(yàn)
- Apache孵化器PMC
- Apache軟件基金會成員
- 包括Dubbo在內(nèi)的多個(gè)Apache項(xiàng)目的導(dǎo)師
- 參與審核了350+ Apache孵化器項(xiàng)目的發(fā)布
為什么郵件列表仍是最主要的溝通方式?
Apache是目前全球最大的軟件基金會,其第一個(gè)項(xiàng)目是Apache Httpd Server,大家用過的諸多項(xiàng)目,例如Dubbo, Log4j, Maven, RocketMQ和Tomcat等,均孵化自Apache。
?
- 中文名:Apache 軟件基金會
- 英文名:Apache Software Foundation
- 英文簡稱:ASF
ASF 正式創(chuàng)建于1999年,主要是為公眾提供有用的免費(fèi)軟件,并為軟件開發(fā)者社區(qū)提供支持和服務(wù),它的創(chuàng)建者是一個(gè)自稱為Apache組織的群體。
早在1995年,Apache組織的成員聚集在一起,在美國伊利諾伊大學(xué)超級計(jì)算機(jī)應(yīng)用程序國家中心開發(fā)的NCSA HTTPd服務(wù)器的基礎(chǔ)上開發(fā)與維護(hù)了一個(gè)叫Apache的HTTP服務(wù)器。
早期,NCSA HTTPd服務(wù)器是一個(gè)叫Rob McCool的程序員開發(fā)的,但是后來慢慢失去了興趣,導(dǎo)致這個(gè)功能強(qiáng)大又好用的服務(wù)器沒人維護(hù)。于是一些愛好者和用戶就自發(fā)開始維護(hù)起來,并不斷改善功能、發(fā)布版本。為了更好的進(jìn)行溝通,組織中的一位成員創(chuàng)建了一個(gè)郵件組,把維護(hù)工作高效的組織起來,并把這個(gè)軟件叫 Apache 服務(wù)器。這也是為什么Apache的所有項(xiàng)目至今仍然以郵件列表作為溝通的主要方式。
Apache的命名來源于北美當(dāng)?shù)匾恢蠥pache的印第安部落,這支部落以高超的軍事素養(yǎng)和超人的忍耐力著稱,19世紀(jì)后半期對侵占他們領(lǐng)土的入侵者進(jìn)行了反抗。為了對這支部落表示敬仰,就取了這個(gè)名字。但這里還流傳著一個(gè)小故事,說是在NCSA HTTPd基礎(chǔ)上,大家都通過打補(bǔ)丁不斷在修改這個(gè)軟件,被戲稱為A Patchy Server,和Apache Server讀音很像。
?
后來,隨著商業(yè)需求的增多,圍繞Apache HTTP服務(wù)器的項(xiàng)目越來越多,也有一些外部組織開始捐獻(xiàn)項(xiàng)目給Apache,以促進(jìn)項(xiàng)目發(fā)展。為了讓這些外部項(xiàng)目能順利進(jìn)入到Apache,Apache于2002年創(chuàng)建了Incubator(孵化)項(xiàng)目。經(jīng)過20多年的發(fā)展,截止2018年,ASF 已擁有194個(gè)頂級項(xiàng)目,54個(gè)孵化項(xiàng)目,6500+位committers,700位基金會成員,196位PMC,50個(gè)podlings。其中,由中國開發(fā)者主導(dǎo)的項(xiàng)目,有RocketMQ,WeeX,ECharts和Skywalking等。
ASF 都有哪些成員?
參與Apache項(xiàng)目社區(qū)活動的人,一般分為以下幾類:
- 直接用戶User:通過使用社區(qū)的項(xiàng)目構(gòu)建自己的業(yè)務(wù)架構(gòu)的開發(fā)者都是Apache的用戶;
- 貢獻(xiàn)者Contributor:部分用戶在使用Apache某個(gè)或多個(gè)項(xiàng)目的過程中,遇到問題,自己通過分析調(diào)試找到解決方案,并提交給項(xiàng)目組,最終被接受,這些用戶就是Apache的貢獻(xiàn)者;
- 提交者Committer:貢獻(xiàn)多了,經(jīng)過PMC的提議和投票,就會成為Committer,Committer即意味著正式加入Apache,擁有Apache個(gè)人帳號以及相應(yīng)項(xiàng)目的寫權(quán)限;
- PMC:Committer再往上走就是PMC,這個(gè)是由現(xiàn)有PMC成員提名產(chǎn)生的。
此外,ASF 還有21位創(chuàng)始成員,和一個(gè)Board Member Team,主要負(fù)責(zé)基金會各類章程的制定和運(yùn)作。
特別要強(qiáng)調(diào)的是Project Management Committees,即 PMC,每個(gè)項(xiàng)目從孵化階段開始就會有PMC,主要負(fù)責(zé)保證開源項(xiàng)目的社區(qū)活動都能運(yùn)轉(zhuǎn)良好,這里運(yùn)轉(zhuǎn)的機(jī)制就是The Apache Way。
什么是 The Apache Way?
就像我們加入一家公司需要了解這家公司的文化一樣,參與Apache開源項(xiàng)目之前,我們也需要需要了解ASF的文化,這個(gè)文化就稱為The Apache Way。
?
- 公益使命- Charity:ASF是公益組織,使命是為全世界提供有用的軟件,并且全部免費(fèi)。取之有道,用之有方。
- 實(shí)用主義 - Pragramtic:相比GPL,Apache License有更廣泛的用戶基礎(chǔ),有人的地方就有規(guī)矩,但社區(qū)沒有死板的規(guī)定,只有g(shù)uideline幫助大家發(fā)展項(xiàng)目。No one is the Boss.
- 社區(qū)勝于代碼 - Community:把項(xiàng)目構(gòu)建出來這不是開源,去構(gòu)建社區(qū)才是真正的開源。對社區(qū)而言,一切都是圍繞代碼而生,無代碼則社區(qū)不復(fù)存在。在代碼之上,則是如何做事、如何待人、如何決策的理念體現(xiàn),一個(gè)健康的社區(qū)遠(yuǎn)比優(yōu)秀的代碼重要。如果代碼奇爛無比,社區(qū)可以重寫,但社區(qū)有了問題,代碼即便再好,最終也會付之東流。More resources than a company.
- 公開透明與共識決策 - Open&Consensus:所有的決定,不管是技術(shù)feature、發(fā)展方向,還是版本發(fā)布等,都應(yīng)該被公開討論,而形式就是郵件列表,這些討論過程和結(jié)論都會被永久存檔。而討論的過程,就是大家自由發(fā)表意見的過程,最終通過投票,以比較民主的方法來做集體決定。If it doesn't happen on email, it doesn't happen.
- 任人唯賢 - Merit:特別強(qiáng)調(diào)一點(diǎn),貢獻(xiàn)絕不僅僅是代碼,貢獻(xiàn)可以是很多方面,還包括修正中英文文檔,提交PR,總結(jié)經(jīng)驗(yàn)分享到社區(qū)等等。Those that have proven they can do, get to do more.
開發(fā)者如何參與社區(qū)貢獻(xiàn)
開源項(xiàng)目晉級之路
進(jìn)? Apache 分為三個(gè)階段,準(zhǔn)備階段、孵化階段和畢業(yè)階段。
?
- 準(zhǔn)備階段:找到愿意幫助孵化的導(dǎo)師(通常是3位),向Apache 提交進(jìn)?孵化的申請,經(jīng)過導(dǎo)師們討論并投票(獲得多數(shù)票即可通過),通過后進(jìn)?就可以孵化了。
- 孵化階段:分為兩大環(huán)節(jié),第?個(gè)環(huán)節(jié)是公司和個(gè)人簽署協(xié)議向Apache 移交代碼和知識產(chǎn)權(quán)。第二個(gè)環(huán)節(jié)是在導(dǎo)師的指導(dǎo)下按照Apache的規(guī)范,搭建開源項(xiàng)目的官網(wǎng),在社區(qū)發(fā)布項(xiàng)目新版本并優(yōu)化build流程,引入committers構(gòu)建基于項(xiàng)目的開發(fā)者生態(tài),逐步將生態(tài)做大。
- 畢業(yè)階段:如果最終通過了成熟度評估,就可以順利畢業(yè)成為Apache的頂級項(xiàng)目了。
最后,當(dāng)一位開發(fā)者提問Justin,如何晉級成一位頂級程序員?他給出了這樣的答案:
- 敢于試錯(cuò),不要擔(dān)心犯錯(cuò),這是寶貴的經(jīng)歷,但要從中汲取經(jīng)驗(yàn)避免第二次犯錯(cuò);
- 積極參加到開源社區(qū),在社區(qū)可以鍛煉自己的思考能力和解決問題的能力,同時(shí),可以認(rèn)識很多志同道合的朋友,這是技術(shù)能力以外更重要的財(cái)富;
- 發(fā)型不重要。
?
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的Apache孵化器主席Justin Mclean:如何成为Apache顶级开源项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云HBase携X-Pack再进化,重
- 下一篇: 函数计算搭建 Serverless We