近年來(lái),國(guó)內(nèi)出現(xiàn)了很多以開(kāi)源項(xiàng)目為基礎(chǔ)的創(chuàng)業(yè)公司,引起了資本的極大注意。同時(shí),很多大型公司也正逐步將一些內(nèi)部項(xiàng)目開(kāi)源,并捐贈(zèng)給Apache、CNCF等基金會(huì),成功幫項(xiàng)目構(gòu)建起了活躍的生態(tài)圈,開(kāi)源正進(jìn)一步引起社會(huì)的廣泛關(guān)注。但開(kāi)源并不是單純把代碼公開(kāi)那么簡(jiǎn)單,許可證如何選擇,社區(qū)如何運(yùn)營(yíng)和管理?這其中有很多值得深入探討的問(wèn)題。
在由51CTO主辦的WOT全球技術(shù)創(chuàng)新大會(huì)2022-北京站上,Apache軟件基金會(huì)董事吳晟,為我們帶來(lái)了主題演講《Apache軟件基金會(huì)與項(xiàng)目孵化》,為廣大聽(tīng)眾分享了自己對(duì)于Apache軟件基金會(huì)的理解?,F(xiàn)將演講內(nèi)容整理如下,希望能對(duì)你有所啟發(fā)。
Apache軟件基金會(huì)的歷史與發(fā)展
Apache軟件基金會(huì)是目前為止全球最大的開(kāi)源軟件基金會(huì),包含300多個(gè)頂級(jí)項(xiàng)目以及數(shù)十個(gè)孵化器項(xiàng)目,為全球提供著幾十億甚至上百億美元市值的開(kāi)源軟件。
HTTP SERVER是Apache的第一個(gè)軟件,項(xiàng)目的開(kāi)發(fā)者為了能夠使項(xiàng)目繼續(xù)發(fā)展而創(chuàng)建了Apache軟件基金會(huì),并將HTTP SERVER作為Apache軟件基金會(huì)的第一個(gè)項(xiàng)目提供給了廣大開(kāi)發(fā)者。而最初為HTTP SERVER所撰寫(xiě)的自由軟件許可證也發(fā)展成了大家所熟悉的Apache License2.0,我們平時(shí)接觸的很多開(kāi)源軟件,其實(shí)都來(lái)自于Apache基金會(huì),它們互相之間的依賴過(guò)程,也是開(kāi)源本身的一種美麗。
Apache OpenOffice是在全球影響力非常大的一個(gè)軟件,在國(guó)內(nèi)大家一般更熟悉微軟的office,但是OpenOffice其實(shí)為全球真正的第三世界國(guó)家以及很多沒(méi)有費(fèi)用去采購(gòu)Office的地方提供了和Office幾乎一致的功能。并且其完全按照開(kāi)源的方式,在Apache基金會(huì)進(jìn)行構(gòu)建、分發(fā)和使用。
Apache2.0 License
我們說(shuō)Apache2.0 License是一個(gè)商業(yè)友好的License,那它到底給我們什么東西呢?
第一,我們可以基于Apache License,對(duì)Apache的軟件進(jìn)行修改、分發(fā)、銷售,甚至可以換名、換UI去銷售。但有些內(nèi)容是使用Apache2.0License的時(shí)候需要保留的。首先,如果軟件提供給了對(duì)方源代碼,不管是商業(yè)源代碼還是二次分發(fā),這也是一個(gè)開(kāi)源的東西,所有從Apache軟件基金會(huì)獲取的源代碼的授權(quán)給Apache基金會(huì)的hider必須要被保留下來(lái),原始軟件上的包名也需要被保留下來(lái)。
第二,項(xiàng)目的logo是沒(méi)有授權(quán)的,項(xiàng)目的logo和項(xiàng)目的名字不與商業(yè)軟件一起被銷售出去,只能表示項(xiàng)目基于Apache的某一個(gè)項(xiàng)目,但不能隨便使用項(xiàng)目的logo。如果要把項(xiàng)目的logo掛在某個(gè)商業(yè)產(chǎn)品上,logo的版權(quán)是需要重新向基金會(huì)確認(rèn)的,說(shuō)明為什么要使用這樣的logo以及為什么要使用這樣的名字。這個(gè)過(guò)程中有一個(gè)標(biāo)準(zhǔn)的說(shuō)法,就是某軟件powered by Apache的某個(gè)軟件,這是一個(gè)相對(duì)來(lái)說(shuō)比較標(biāo)準(zhǔn)的說(shuō)法。
最后,在獲取源代碼或者是二進(jìn)制的時(shí)候,里面有兩個(gè)License文件,一個(gè)是源碼根目錄下License,一個(gè)是獲得的二進(jìn)制文件下的License文件。License以及License文件里面指向的notice以及其它的License文件是需要被拷貝到二次分發(fā)版本或二次分發(fā)源碼里的。
Apache基金會(huì)的中立性原則
Apache基金會(huì)沒(méi)有追逐任何商業(yè)利益的過(guò)程,更多強(qiáng)調(diào)的是中立。Apache軟件基金會(huì)并不會(huì)幫助某個(gè)項(xiàng)目獲取更大的利益,甚至不一定會(huì)幫助某個(gè)項(xiàng)目獲取更大的技術(shù)成功或所謂的市場(chǎng)宣傳的成功,它更多的是處在一個(gè)中立的角色里面。無(wú)論是軟件的使用方還是開(kāi)發(fā)方,基金會(huì)保證這個(gè)項(xiàng)目不會(huì)被單一廠商、單一的商業(yè)訴求而左右。
Apache Way
關(guān)于Apache Way,其只是Apache基金會(huì)對(duì)Apache項(xiàng)目要求和指導(dǎo)的原則性的概要,并不是我們?nèi)プ鲩_(kāi)源或者了解任何和開(kāi)源有關(guān)的事情的一個(gè)必備選項(xiàng)。其中提到的精英治理、透明、社區(qū)共建、Community over code,只是在Apache軟件基金會(huì)內(nèi)被推薦的,并不是所有的開(kāi)源軟件都要求Community over code,全世界有大量?jī)?yōu)秀的開(kāi)源軟件,不要把Apache軟件基金會(huì)的一些要求擴(kuò)展為對(duì)所有開(kāi)源項(xiàng)目的要求,甚至你用了Apache2.0的License,也不一定要遵守這樣的要求,因?yàn)槟侵皇且粋€(gè)License的正文而已。
精英治理
Apache基金會(huì)本質(zhì)上是一個(gè)基于個(gè)人的基金會(huì)組織,它不是一個(gè)企業(yè)層級(jí)制的。Apache軟件基金會(huì)的項(xiàng)目管理委員會(huì)本質(zhì)上是一個(gè)個(gè)人化的組織,它相對(duì)來(lái)說(shuō)是很離散的,每一個(gè)人有自己做決策的權(quán)利。在Apache基金會(huì),做了多少事情,就可以獲得多少的尊重,大家愿意更多地相信你,你的決策、話語(yǔ)權(quán)就會(huì)有更大的分量,因?yàn)槟銥檫@個(gè)項(xiàng)目,為基金會(huì)做了更多的貢獻(xiàn),這是所謂的精英治理,尊重基金會(huì)、尊重項(xiàng)目?jī)?nèi)精英的位置。
透明
透明即所有的溝通,無(wú)論是關(guān)于安全,功能,還是迭代路線,要盡可能地保證公開(kāi)、透明可見(jiàn),不能是一個(gè)私下的決策,所有私下的決策應(yīng)該要把結(jié)論和討論的過(guò)程的重點(diǎn)通過(guò)郵件列表的形式在基金會(huì)內(nèi)部進(jìn)行共享和公開(kāi),不應(yīng)該有項(xiàng)目的技術(shù)決策或者是項(xiàng)目方向性的決策在私密環(huán)境中決定,不能有事情是不可追溯的。
社區(qū)
Apache基金會(huì)認(rèn)為任何一個(gè)項(xiàng)目、任何一個(gè)個(gè)人都有可能因?yàn)槠渌脑虬l(fā)生變化,只有人持續(xù)地參加某個(gè)項(xiàng)目、持續(xù)地運(yùn)營(yíng)迭代,這個(gè)社區(qū)才會(huì)得到比較好的發(fā)展。所以,我們會(huì)關(guān)注項(xiàng)目貢獻(xiàn)者的數(shù)量,關(guān)注社區(qū)的大小,但是Apache基金會(huì)并不想把這個(gè)東西變成一個(gè)量化的數(shù)據(jù),不是說(shuō)一個(gè)項(xiàng)目有多少貢獻(xiàn)者,有多少人參加了這個(gè)項(xiàng)目的研發(fā),多少人在用就一定是一個(gè)好項(xiàng)目。Apache基金會(huì)更多地認(rèn)為只要有人在持續(xù)地參加并且持續(xù)地貢獻(xiàn)這個(gè)項(xiàng)目,這就是一個(gè)有活力的項(xiàng)目。很多項(xiàng)目的活躍貢獻(xiàn)者都是個(gè)位數(shù)甚至是五人以下,相對(duì)來(lái)說(shuō)比較偏個(gè)人英雄主義,Apache基金會(huì)更認(rèn)可的是那些精英為整個(gè)行業(yè)、整個(gè)產(chǎn)業(yè)鏈所做的貢獻(xiàn)。
Apache Way的作用
廠商中立性
國(guó)內(nèi)已經(jīng)有很多項(xiàng)目加入到Apache,但幾乎所有的項(xiàng)目背后都是一家公司。從本質(zhì)上來(lái)說(shuō),目前即使是已經(jīng)在Apache軟件基金會(huì)畢業(yè)的國(guó)內(nèi)項(xiàng)目,也并沒(méi)有非常好地保持中立性。這有主觀原因也有客觀原因,本質(zhì)上中國(guó)對(duì)開(kāi)源環(huán)境并不是特別熟悉,想兩家共同來(lái)構(gòu)建一個(gè)開(kāi)源軟件,在今天是非常困難的事情,在公司的層面上很難達(dá)成一致。所以,我們會(huì)發(fā)現(xiàn)現(xiàn)在的主要項(xiàng)目都是一家處于絕對(duì)的領(lǐng)導(dǎo)位置,其它一些廠商或者是個(gè)人、組織在配合。但是在基金會(huì)的角度上,為什么這樣的項(xiàng)目依然可以畢業(yè)成為頂級(jí)項(xiàng)目,以及一直視為頂級(jí)項(xiàng)目,是因?yàn)樗蟹浅:玫挠脩艚M的多元性,它的用戶是多元的,它不是這家企業(yè)自?shī)首詷?lè)的,不是針對(duì)這家企業(yè)銷售的對(duì)象點(diǎn)對(duì)點(diǎn)去進(jìn)行銷售的。所以,這個(gè)過(guò)程中它依然具有非常好的中立性。只是說(shuō)作為中國(guó)的開(kāi)源軟件,要更多地做好在構(gòu)建方面的多元性,這一點(diǎn)是相對(duì)來(lái)說(shuō)比較長(zhǎng)期的一個(gè)任務(wù)。
多樣性
多樣性是中立性的背面,保證中立的前提是需要更多的人來(lái)參與,更多國(guó)家、地區(qū)不同的人員、不同的人種、不同的膚色、不同的性別、不同的年齡。我們發(fā)現(xiàn)在很多項(xiàng)目中學(xué)生是非常主要的貢獻(xiàn)來(lái)源,他們借助開(kāi)源軟件既可以熟悉工業(yè)化,也可以把他們?cè)趯W(xué)校學(xué)到的知識(shí)運(yùn)用在這個(gè)相對(duì)來(lái)說(shuō)比較工業(yè)化的軟件體系里。
信任和安全性
開(kāi)放本質(zhì)上是增加大家信任的手段,商業(yè)軟件最不讓人信任的是它是閉源的,它偷偷在做什么你是不知道的,編譯好的代碼是很難去讀的。安全性,我們會(huì)想到開(kāi)源軟件的CVE的問(wèn)題,每次都可以上大新聞,這首先意味著這類事件很少發(fā)生;其次,意味著這個(gè)軟件得到了極大范圍的應(yīng)用,對(duì)于行業(yè)的影響力是非常巨大的,比如log4j的問(wèn)題,幾乎影響了所有Java體系內(nèi)的應(yīng)用。如果這是一個(gè)商業(yè)軟件,不會(huì)有人給你提供如此之多的解決方案來(lái)保證你的基礎(chǔ)設(shè)施的安全性。現(xiàn)在越來(lái)越多的基礎(chǔ)軟件,不管中國(guó)、美國(guó)、歐洲,任何大的IT環(huán)境里,越來(lái)越多的基礎(chǔ)軟件把開(kāi)源作為標(biāo)配,因?yàn)榛陂_(kāi)源的商業(yè)絕對(duì)不僅僅是賣(mài)服務(wù)、賣(mài)7×24那么簡(jiǎn)單的事情,后面有非常多的商業(yè)邏輯,包括產(chǎn)品包裝的邏輯、產(chǎn)品銷售的邏輯。
如何在開(kāi)源社區(qū)尋求幫助
Community over code,即社區(qū)大于代碼。首先,它是人的力量。第二,它是開(kāi)放討論的力量。Community在討論的時(shí)候,是很多中國(guó)工程師一個(gè)痛苦的地方,我們習(xí)慣了點(diǎn)對(duì)點(diǎn)的溝通,習(xí)慣了即時(shí)通訊軟件,習(xí)慣了對(duì)方能夠用短語(yǔ)去進(jìn)行溝通。分享一個(gè)例子,去年kong的summit,有一個(gè)來(lái)自歐洲的工程師,他想體系化地介紹Scaling,就給我們提了一個(gè)discussion,說(shuō)想實(shí)驗(yàn)ABCD四個(gè)功能,現(xiàn)在已經(jīng)會(huì)了兩個(gè),還有兩個(gè)不會(huì)。他用英語(yǔ)寫(xiě)的discussion,整個(gè)瀏覽器寫(xiě)了一頁(yè),就描述我做了什么。
這更多體現(xiàn)的是態(tài)度問(wèn)題,你免費(fèi)給我用了,就要給我服務(wù),這是很多目前看到的國(guó)外能夠構(gòu)建超大規(guī)模社區(qū),但在中國(guó)構(gòu)建社區(qū)特別困難的一個(gè)點(diǎn)。你也許剛剛在公司因?yàn)殚_(kāi)源軟件的Bug被罵了,你會(huì)覺(jué)得很冤。但是你把自己的情緒轉(zhuǎn)移給一個(gè)開(kāi)源社區(qū)的時(shí)候,你會(huì)發(fā)現(xiàn)comunity不是這么工作的。community可能很粗暴地直接把這個(gè)需求關(guān)掉了,它認(rèn)為你沒(méi)有提供足夠信息,或者它給了你一個(gè)debug的流程,說(shuō)請(qǐng)按這個(gè)回去debug解錯(cuò),你得不到任何你想要的幫助。
參與開(kāi)源軟件并不一定是參與開(kāi)發(fā),作為使用方去參與的時(shí)候,要能夠知道該怎么樣去提問(wèn)題,怎么樣和開(kāi)源設(shè)計(jì)師進(jìn)行溝通,才能得到你要的幫助。
社區(qū)人只是志愿者,開(kāi)源社區(qū)、基金會(huì)、項(xiàng)目,沒(méi)有給其中的任何一個(gè)人發(fā)工資,這就叫志愿者為基礎(chǔ)的基金會(huì)。所以,這個(gè)人本來(lái)就在義務(wù)工作,他服務(wù)的是他認(rèn)為他需要服務(wù)的體系,也就是Apache軟件基金會(huì)里的那些項(xiàng)目,我們認(rèn)為項(xiàng)目構(gòu)建了這個(gè)基金會(huì)的實(shí)體,而這些項(xiàng)目其實(shí)才代表開(kāi)源本身。
創(chuàng)新:Apache孵化器
項(xiàng)目孵化的條件
首先要滿足一個(gè)最基本的條件,項(xiàng)目要有一個(gè)初始化的社區(qū),這些人作為初始化社區(qū)的人,要去學(xué)習(xí)和使用Apache way中包含的所有中立、維護(hù)項(xiàng)目、發(fā)展項(xiàng)目的這套理論,這是背景條件。第二,能夠找到至少三位Apache孵化器的項(xiàng)目管理委員會(huì)的成員,也就是Apache軟件基金會(huì)的會(huì)員,需要他們?cè)敢庾鲰?xiàng)目的導(dǎo)師,幫你一起走過(guò)將近一年半到兩年半的項(xiàng)目孵化過(guò)程。如果有他們的幫忙,且項(xiàng)目團(tuán)隊(duì)也愿意去發(fā)展,項(xiàng)目也確實(shí)有人喜歡,你會(huì)逐步地去成熟社區(qū),強(qiáng)大項(xiàng)目的社區(qū),最后從Apache孵化器畢業(yè)。
項(xiàng)目畢業(yè)的條件
首先明確并不是這個(gè)項(xiàng)目要多牛才能畢業(yè)。能否畢業(yè)跟項(xiàng)目的功能成熟度沒(méi)有任何直接關(guān)系,沒(méi)有人會(huì)去評(píng)估一個(gè)軟件是不是成熟。Apache軟件基金會(huì)評(píng)估一個(gè)項(xiàng)目是否可以畢業(yè)的標(biāo)準(zhǔn)有以下幾點(diǎn):
首先,這個(gè)項(xiàng)目要滿足所有的開(kāi)放溝通、合作、共建以及透明討論的要求。
第二,項(xiàng)目軟件里面的依賴是符合Apache軟件基金會(huì)的要求的,也就是License檢查的工作。
第三,項(xiàng)目的社區(qū)和用戶要初具規(guī)模。如果項(xiàng)目有一些最終用戶,這些最終用戶敢于將項(xiàng)目放上生產(chǎn)環(huán)境,他們會(huì)去做POC,做壓力測(cè)試,做各種功能測(cè)試,決定項(xiàng)目是否滿足生產(chǎn)可用這個(gè)標(biāo)準(zhǔn)。如果項(xiàng)目可以在這些公司上線,他們?cè)敢馐褂瞄_(kāi)源版本,那么項(xiàng)目就可以被認(rèn)為具有一定的可用性以及解決了這個(gè)領(lǐng)域內(nèi)的一部分問(wèn)題。
只要滿足這些基本的條件,再進(jìn)行一些其他的流程性工作,項(xiàng)目就可以從Apache軟件基金會(huì)畢業(yè),成為一個(gè)頂級(jí)項(xiàng)目。頂級(jí)項(xiàng)目只是開(kāi)源項(xiàng)目的開(kāi)始而不是結(jié)束,很多人覺(jué)得項(xiàng)目畢業(yè)了,這個(gè)項(xiàng)目就成熟了、高端了,其實(shí)不然。畢業(yè)是真正構(gòu)建成熟的開(kāi)源體系以及項(xiàng)目生態(tài)系統(tǒng)的開(kāi)始,很多項(xiàng)目在畢業(yè)之后才會(huì)迎來(lái)很大的發(fā)展,這時(shí)大家才會(huì)認(rèn)為項(xiàng)目終于以開(kāi)放的心態(tài)、正式的方式在走開(kāi)源,而不是一個(gè)小團(tuán)體的方式。
結(jié)語(yǔ)
包容性和多樣性是Apache反復(fù)強(qiáng)調(diào)的一個(gè)話題,Apache基金會(huì)中的成員從最小的幾歲、十幾歲到退休的60多、70多歲都在基金會(huì)里有不同的角色,有他們擅長(zhǎng)和想干的事情。這是diversity要強(qiáng)調(diào)的事情,在整個(gè)Apache軟件基金會(huì),有很多人并不是現(xiàn)在還在寫(xiě)代碼,有很多人都寫(xiě)過(guò)在如今看來(lái)非常古老代碼的人,可能那個(gè)項(xiàng)目已經(jīng)結(jié)束生命周期了,但項(xiàng)目的作者依然在基金會(huì)里做著其它的事情。
Apache軟件基金會(huì)是一個(gè)公益組織,不會(huì)有收入,所以會(huì)有一些籌款、捐贈(zèng)過(guò)程,會(huì)有很多全球的企業(yè)給基金會(huì)捐贈(zèng),來(lái)完成基金會(huì)日常的運(yùn)作,包括一些基礎(chǔ)設(shè)施、宣傳,當(dāng)然也包括ApacheCon的一些活動(dòng)。