內(nèi)容來源:2021 年 6 月 5 日,由 SegmentFault 思否主辦的 2021 中國開發(fā)者生態(tài)峰會圓滿落幕。會上,Apache 軟件基金會董事,Tetrate.io 創(chuàng)始工程師,Apache SkyWalking 創(chuàng)始人吳晟發(fā)表了主題為《SkyWalking 與 Apache 軟件基金會的那些事》的演講。
分享嘉賓:吳晟,Apache 軟件基金會董事,Tetrate.io 創(chuàng)始工程師,Apache SkyWalking 創(chuàng)始人
速記整理及發(fā)布:SegmentFault 思否編輯部
我的內(nèi)容會相對來說比較輕松一點(diǎn),我們今天會講一些 SkyWalking 整個(gè)項(xiàng)目從 2015 年到現(xiàn)在六七年的的時(shí)間里面所經(jīng)歷的一些事情,以及我們在過程中間做的選擇。我來自于一家北美的公司 Tetrate,是一家做 Service mesh 的公司。我自己是 Apache 基金會的董事以及 Apache SkyWalking 的創(chuàng)始人。
SkyWalking 實(shí)際上現(xiàn)在是 Apache 的頂級項(xiàng)目,應(yīng)該是當(dāng)前全球規(guī)模最大的開源 APM 系統(tǒng)。如果大家熟悉監(jiān)控領(lǐng)域和應(yīng)用性能管理領(lǐng)域的話,從 2000 年或者 98 年開始,這個(gè)領(lǐng)域從來沒有一款軟件是完全靠著開源生態(tài)或者以開源為背景的生態(tài)去構(gòu)建起來,所有全球知名的 APM 軟件都是商業(yè)化背景。所以 SkyWalking 最初并沒有像今天看到的這么復(fù)雜,它其實(shí)只是為了解決很簡單的問題,而開源和開源社區(qū)把它推到了今天這樣的一個(gè)位置。今天的 SkyWalking 實(shí)際上已經(jīng)非常非常的復(fù)雜,它涵蓋了大家監(jiān)控你所看到的日志、指標(biāo)、分布式追蹤、事件探查,以及所有的各種的日常常見的操作系統(tǒng)、容器,以及前端的一些架構(gòu)。甚至有一些人還在做包括手機(jī)、微信小程序等等一系列技術(shù)棧的擴(kuò)展,去探查各個(gè)平臺的指標(biāo)、性能數(shù)據(jù)以及前后觀點(diǎn)式的性能表現(xiàn),所以它會是非常非常龐大的狀態(tài)。大家也會發(fā)現(xiàn)其中有大量的技術(shù)棧,包括像 Prometheus、OpenTelemetry、Zipkin、Filebeat、Fluentd,會有很多全球廠商的其他的生態(tài)系統(tǒng)。我們并不是從第一天開始自己來做所有東西,我們會和非常非常多的全球的廠家還有基金會的項(xiàng)目去做合作,這就是為什么項(xiàng)目能夠走到今天。我們有很多的朋友,來自于全球其他廠商的朋友,去給我們相關(guān)的支持,去讓事情對大家來說集成起來比較方便,使用起來也符合大家的習(xí)慣。這是我最近從系統(tǒng)上抓的一張圖,項(xiàng)目是 15 年底的時(shí)候開源的,它有非常長的穩(wěn)定期,沒有多少人來參與項(xiàng)目,在 17 年 18 年的時(shí)候,項(xiàng)目貢獻(xiàn)者的都是非常非常少。我們在 17 年底加入 Apache 基金會的時(shí)候,項(xiàng)目的貢獻(xiàn)者加上我只有 20 多個(gè)。到今天,不算太完全的統(tǒng)計(jì),將近有 500 個(gè)代碼貢獻(xiàn)者,而且不包含文檔,不包含其他的宣傳。SkyWalking 不管是哪家公司,從來沒有過所謂的叫做社區(qū)運(yùn)營的崗位,我們是靠著開發(fā)者自己,或者說靠著項(xiàng)目,靠著我們對開源生態(tài)的理解,去和大家去配合,去和全球的其他項(xiàng)目配合去完成項(xiàng)目的孵化和擴(kuò)展。這是我們在SkyWalking 在 Apache 的官網(wǎng)去探到的全球的訪問情況。
不出意外的話,所有的 Apache 項(xiàng)目,包括 Apache 官網(wǎng),中國絕對是統(tǒng)治級的訪問量。不管在哪個(gè)基金會,中國一定是開源項(xiàng)目的最大的使用者,但是至少我們目前還不是這些項(xiàng)目最大的貢獻(xiàn)者。對于 SkyWalking,對于整個(gè) Apache 基金會、對于 CNCF 、Linux foundation,所有大家能想到的全球性的基金會,我們都還不是最主要的貢獻(xiàn)者來源。但是大家會看到中國孵化的項(xiàng)目,是曾經(jīng)連代碼注釋都是拿中文寫的項(xiàng)目。如果你真的愿意去做全球化,你愿意以合理的方式去做全球化,那么你一樣可以去收獲全球的用戶,這樣你可以看到除了某一些斷網(wǎng)的地區(qū)或者非洲幾乎沒有 IT 產(chǎn)業(yè)的地區(qū)之外,全球都有非常非常大的使用者。而且 SkyWalking 在中國、在北美、在印度、在東亞、東歐以及西歐地區(qū)都有不同的廠商,基于 SkyWalking 去從事他們的商業(yè)化的產(chǎn)品建設(shè),比如說有英國的廠商、波蘭的廠商,有在南美的開發(fā)者,他們都在做自己的商業(yè)化的事情,包括我自己在北美的公司。如果你用合理的方式運(yùn)作開源,你再做一些適合于自己的思考,如果你的項(xiàng)目不是那種排他性的,你其實(shí)可以有的想象空間是非常非常大的,就像大家今天看到的,我們經(jīng)常在說的 Linux 的操作系統(tǒng),它的所有的經(jīng)濟(jì)利益不全是 Linux 的人去掙的,它得到的是更多的產(chǎn)業(yè)級別的支持,更多的企業(yè),更多的不同的方向,但從事情中間得到正向的產(chǎn)業(yè)的循環(huán),所以我希望分享這個(gè)給大家,大家會看見說每個(gè)月有 15000 個(gè) session 在訪問我們的系統(tǒng),真正的訪問量就更難去計(jì)算,因?yàn)樗械闹笜?biāo)都是以 session 級別為標(biāo)準(zhǔn)去記?;氐阶畛踝钤?5年的時(shí)候,其實(shí)我們就在說開源項(xiàng)目到底怎么樣,才是好的開源項(xiàng)目的起點(diǎn)。所有的開源項(xiàng)目,它如果只是為了開源,或者說你去做開源的想法,那事情往往是很難成功的。SkyWalking 也是一樣,如果它只是為了解決問題,那它的問題是什么呢?在 10 年到 15 年期間,大家應(yīng)該從最早的 Dubbo 的生態(tài),從開始有 springcloud 的生態(tài),從當(dāng)年的 ESB SOA 開始,所有的應(yīng)用從單體應(yīng)用變成了合體應(yīng)用。那么我們在當(dāng)年遇到了樣的問題呢?我們當(dāng)年我還在給聯(lián)通做項(xiàng)目,我們遇到問題是八個(gè)廠家做一個(gè)項(xiàng)目,你可以想象一下這個(gè)狀態(tài)有多災(zāi)難,所有人都在指責(zé)說別人的系統(tǒng)不穩(wěn)定造成整個(gè)分布系統(tǒng)不穩(wěn)定,就像大家現(xiàn)在在組內(nèi)去指責(zé)對方組的程序?qū)懙牟缓?,這是一樣的。但是當(dāng)你變成八個(gè)廠家的時(shí)候,溝通會更難,因?yàn)楣緝?nèi)你還有老板可以拿出來拍板,現(xiàn)在你連拍板的機(jī)會都沒有,所以當(dāng)時(shí)在做 SkyWalking 的時(shí)候,開發(fā)者全都接受了一個(gè)訓(xùn)練,我們讓大家知道,當(dāng)你的分布系統(tǒng)出問題可能不是你的代碼的問題,你的上游、下游、網(wǎng)絡(luò),中間的 esb 的組件都有成為任何一個(gè)短板。所以 SkyWalking 在最初只是為了解決這樣很簡單的問題。當(dāng)時(shí)其實(shí)已經(jīng)有兩個(gè)在領(lǐng)域很有名的開源項(xiàng)目,Zipkin 和 Pinpoint,那么為什么我們決定要從頭開始做?Zipkin 現(xiàn)在還在,大家可以去看,首先它功能很簡單,它沒有準(zhǔn)備去做復(fù)雜的系統(tǒng)。它的設(shè)計(jì)是為了簡單的功能準(zhǔn)備的,這意味著它真的會變成我們現(xiàn)在正要做的事情,它只是 demo,不是可以大規(guī)模生產(chǎn)用的東西。而 Pinpoint 是韓國一家做搜索引擎的公司 NAVER 做的產(chǎn)品,而且它那時(shí)候用了當(dāng)時(shí)很火的大數(shù)據(jù)。沒有用的原因其實(shí)很簡單,今天大家有很多的原因去對標(biāo) Pinpoint 和 SkyWalking,但是作為監(jiān)控產(chǎn)品,如果你用了大數(shù)據(jù),那么,你可能比目標(biāo)業(yè)務(wù)系統(tǒng)更難穩(wěn)定。因?yàn)?Hbase 是高度分布式的系統(tǒng),請問你用了分布式系統(tǒng)來監(jiān)控另外分布式體系到底誰先 crush,監(jiān)控系統(tǒng)第一個(gè)就 crush 了。我們沒有想著要去做世界級 apm,我們想至少我們能解決當(dāng)前的問題,所以我們寫了非常非常簡單版本的 SkyWalking,大家現(xiàn)在在 GitHub 上面都可以去翻到最早的 1.0 的代碼,非常非常簡單,甚至那時(shí)候我們都嘗試過使用 Hbase,我們看看它是怎么做的,我們用他們的模式來做會有多少問題?所以呢,Skywalking 在很長一段時(shí)間之內(nèi)都是 testing project,我們在 GitHub 上掛著,沒有任何的宣傳活動,沒有任何對外的接洽,僅僅是把代碼弄在上面。甚至那時(shí)候 License 都是,那時(shí)候應(yīng)該有一段時(shí)間是 GPLv3 的。我們的意識上來說,我們就沒準(zhǔn)備把它做為一個(gè) community 去玩,我們更多的認(rèn)為,反正我放了一個(gè)項(xiàng)目,并且有一定的保護(hù)作用,放了 GPLv3,大家發(fā)現(xiàn)從最早的 v1 到 3.2.6 花了兩年半的時(shí)間。SkyWalking 在整個(gè)時(shí)間內(nèi)都是 testing project。它沒有任何的 kpi,它不完成任何指定的功能領(lǐng)域,它只是參加項(xiàng)目的人為了解決日常的問題,去貢獻(xiàn)代碼,能寫就寫點(diǎn)什么,能完成什么特性就完成什么特性,更多的是娛樂性的工作?;蛘哒f它是一個(gè)測試,它不是測試的技術(shù),它是測試在大家腦子里面的一些想法,看它們是不是可以落地。3.2.6 為什么是 3.2.6,因?yàn)樗?3.0 的最后一個(gè)版本。以及 3.2.6 是我第一次站到臺上去,在 GOPS 全球運(yùn)維大會,我第一次站在臺上去講:有這樣一個(gè)項(xiàng)目,它要完成什么樣的功能,它能夠幫大家解決什么樣的問題,它是 Apache 2.0 開源的項(xiàng)目。這是第一次,我們把它作為真正的開源項(xiàng)目,讓自己作為真正開源項(xiàng)目參加者去看項(xiàng)目。而開源出來之后,實(shí)際上大家會發(fā)現(xiàn),比如說從初始適用的用戶都開始快速提高,但是大家的反饋更多的是:哎呀,你還不完備,這個(gè)事情你做不到。因?yàn)樽霰O(jiān)控系統(tǒng),上線是非常非常困難的。用戶很難把他自己的身家性命壓在不穩(wěn)定的監(jiān)控系統(tǒng)上,他所有的數(shù)據(jù)都是來自這個(gè)監(jiān)控系統(tǒng),雖然你不承載任何商業(yè)數(shù)據(jù),但是你如果黑掉,等于用戶的整個(gè)生產(chǎn)系統(tǒng)就黑掉了,這是非常危險(xiǎn)的一件事情,SkyWalking 在非常長的一段時(shí)間之內(nèi)是沒有生產(chǎn)可用,包括 3.2.6,其實(shí)一直以來就沒有在完整的生產(chǎn)環(huán)境運(yùn)行,更多情況下是在準(zhǔn)時(shí)產(chǎn)和測試環(huán)境下運(yùn)行,或者在壓縮環(huán)境下運(yùn)行。更多的把它當(dāng)做工具而不是 apm 平臺在用。起步階段我們希望去擴(kuò)大社區(qū),我們有兩個(gè)選擇,Apache 或是 CNCF。我那時(shí)候已經(jīng)去了華為,所以從理論上來說 CNCF 這條道路是通著的,如果大家不熟悉 Foundation 的區(qū)別的話,其實(shí) CNCF 會更像廠家驅(qū)動,商業(yè)的氣息會更濃。他需要廠家的干預(yù),他需要廠家出資或是出人力去保障。而項(xiàng)目會更多的掛著企業(yè)的 logo,而當(dāng)年的 SkyWalking 是個(gè)人項(xiàng)目,它并非誕生于華為,因?yàn)槲覀兪窃跇I(yè)余的時(shí)候做的。它從頭到尾就沒有把 ip 歸屬在任何公司名下,自然也沒有辦法很簡單的轉(zhuǎn)移給所謂的華為,讓華為去走 CNCF 的道路。大家如果去搜 CNCF 新項(xiàng)目的 proposal,其實(shí)會找到 SkyWalking,因?yàn)槲覀冊?jīng)申請過,而且 CNCF 的 coo Kris 他其實(shí)也邀請過我們?nèi)プ?presentation,但是我們最后沒有選擇去走很長線的流程,因?yàn)閷?shí)在是太忙了。而且對于項(xiàng)目來說,在當(dāng)時(shí)我們更關(guān)心的是項(xiàng)目能不能有更多人參與。至于是不是有那么多人宣傳項(xiàng)目,對于我們來說并不是那么重要,因?yàn)樽允贾两K,這也不是 KPI 項(xiàng)目,因?yàn)闆]有人考核。即使我們當(dāng)年在華為,也不是考核制的,跟公司沒有直接的關(guān)系,不是說你要有多少貢獻(xiàn)者,你要多少 star 公司好像才考核你,今天才有獎(jiǎng)金。這個(gè)事跟 SkyWalking 向來沒有太大的關(guān)系,而且我們選擇 Apache ,有一個(gè)很方便的原因是因?yàn)?Apache 需要的是 mentor,后面會講到,剛好我周圍的朋友,一個(gè)在澳大利亞,一個(gè)在華為,一個(gè)在上海。我們可以很快速的找到三位 Apache member 成為 SkyWalking 的導(dǎo)師進(jìn) Apache 孵化器,我們當(dāng)時(shí)在進(jìn) Apache 孵化器之前就做了調(diào)整,從 GPLv3 改到了 Apache。改的原因其實(shí)有兩點(diǎn),這個(gè)原因并不是 Apache 觸發(fā)的,原因來自于阿里,阿里的團(tuán)隊(duì)聯(lián)系到我們,說他們想和我們?nèi)ズ献鞴步ㄒ徊糠止δ堋?/span>在當(dāng)時(shí)很早期的時(shí)候,其實(shí)一個(gè)大事情能夠出開發(fā)者已經(jīng)是很少見的事情。但是他們說有顧慮你這個(gè)東西不能是 GPLv3 的,不然我在公司會報(bào)不過去,其實(shí)當(dāng)時(shí)是很簡單的原因,我們認(rèn)為只要有更多人參與,無所謂它是不是 GLPv3,誰可以把它的商業(yè)化做得最好,誰可以拿它去掙錢,我們是站在公平的角度上去干這件事情的。我們當(dāng)時(shí)很快速地在社區(qū)內(nèi)做了決議,把 GPLv3 改成了 Apache v2。今天我們站在更嚴(yán)謹(jǐn)?shù)膶用嫔蟻砜吹脑?,其?shí) v2 給了大家的是,更好的做商業(yè)分發(fā)的機(jī)會,比如說更多的產(chǎn)品在包含 SkyWalking 做二次公放,大家今天去看到很多的私有云平臺、很多的產(chǎn)品里面都會原生包含 SkyWalking 的全部或者二次的分發(fā)版本。這非常常見,可能大家在非常非常多的開源項(xiàng)目都會看見部分或者全部,這也為我們之后去做跨組織的協(xié)作做了很好的基礎(chǔ)。但當(dāng)我們真正去踏入 Foundation 的時(shí)候,我們會發(fā)現(xiàn)中間是有非常大的 gap。在很長一段時(shí)間,開源對于我來說是娛樂。但是當(dāng)我把項(xiàng)目帶進(jìn) Apache 之后,我更多的像職業(yè)的開源開發(fā)者。與此同時(shí)你會發(fā)現(xiàn)你自己需要處在不同的角色上,當(dāng)我代表 Apache 來發(fā)言,當(dāng)我在 Apache 里面說任何話的時(shí)候,不能是商業(yè)的,它是要追求軟件項(xiàng)目本身的質(zhì)量,安全和迭代性未來的發(fā)展,也許在我心中有一條怎么掙錢的路,但那不能放在項(xiàng)目層面上。所以你后來你會發(fā)現(xiàn),你會受到各種約束,這也是 Foundation 帶給大家的,它給你的非常好的名頭,覺得你很有名,你是 Apache 基金會的項(xiàng)目,但同時(shí)也會給你更多的約束,你不能不限制的去使用在 Apache 基金會的 branding,你不能無限制、無休止、沒有邊界地去使用這個(gè)知名的商標(biāo)權(quán),因?yàn)?Apache 基金會并不想處理。Apache 基金會有 350 個(gè)以上的頂級項(xiàng)目。在全球,基本上大家所有用到的軟件的前臺,后臺某些組件一定來自于 Apache 軟件基金會。但是同時(shí),Apache 軟件基金會一年的運(yùn)作成本只有不到 160 萬美元,而且這些錢幾乎沒有一分錢是以工資的名義發(fā)給 Apache 軟件基金會的成員,所有人都是在以某種邏輯干活,你做了某個(gè)項(xiàng)目,也許是因?yàn)閻酆茫蛘呤菍憰?、做培?xùn),你有自己的邏輯,這讓你在基金會里面的活動是會有利益的。但是出于愛好的參與者他一定是相對來說低強(qiáng)度,比如說他每周的時(shí)間很難超過五個(gè)小時(shí),因?yàn)槌^五個(gè)小時(shí)就相當(dāng)于他要浪費(fèi)一天的時(shí)間,而這個(gè)對絕大多數(shù)人來說是不可能的,特別是很多人本來就要上六天班,再來五個(gè)小時(shí),這不太可能。而絕大多數(shù)我們看到的中國的志愿貢獻(xiàn)者是什么樣子呢?他雖然下班比較晚,但是他對這個(gè)事情有興趣,他覺得要貢獻(xiàn)點(diǎn)東西,所以在 SkyWalking 提交的郵件中,經(jīng)常會發(fā)現(xiàn)有人凌晨兩點(diǎn)鐘凌晨三點(diǎn)鐘提 pull request,這個(gè)叫愛好。如果你面臨一個(gè)職業(yè)開發(fā)者,他絕對不會這樣,SkyWalking 有很多的職業(yè)開發(fā)者,我們晚上看到的職業(yè)開發(fā)者一定是美國、南美、阿根廷、巴西的,因?yàn)樗麄兊耐砩鲜钦9ぷ鲿r(shí)間,這個(gè)是職業(yè)開發(fā)者。面臨不同的人,要知道他們喜好是不一樣的。大家知道基金會有 22 年歷史,最早是 98 年 99 年,基金會是相對來說大家認(rèn)為比較老古董的基金會,事情討論的會很慢,因?yàn)樗际钱惒降?,大家通過郵件所有事情都要等 72 個(gè)小時(shí),因?yàn)樗鼮榱俗屓蛩械娜四芸匆姴⑶乙@過周末,就變成了要三天。任何的決議,任何很小的事情,只要上升到?jīng)Q議層面上,就是超長時(shí)間的等待。基金會也有好多東西大家覺得不習(xí)慣,我們一直在說 Apache 基金會,那么到底什么是Apache 基金會?這里其實(shí)是 Apache 官方的解釋,對于這三句話每個(gè)人心里面都有自己的解釋。有些人是商業(yè)邏輯的解釋,有些人是對于知名度對利益的追逐視角下的解釋,有些是對于軟件開發(fā),對于 coding 這件事情的熱愛,有些人有幫助他人的想法,有些人是想減少他人的負(fù)擔(dān),很多很多,每個(gè)人的想法都不一樣。基金會就是多元化的,出發(fā)點(diǎn)是不同的,不要用你自己的出發(fā)點(diǎn)去隨意揣測對方為什么要干這件事情,他的解釋很有可能完全出乎你的意料。因?yàn)橛幸恍┤苏娴氖菫榱藧酆迷诟苫?,比如說我們見過有些東歐的一些地方的很年輕的,16 歲 17 歲的工程師,他會為了自己 20 歲以后創(chuàng)業(yè)的理想去參加項(xiàng)目,去長年的開發(fā)一個(gè)可能在非常長的時(shí)間內(nèi)都沒有兩個(gè)人在用的功能。SkyWalking 有個(gè)子項(xiàng)目是東歐人開發(fā)的,是把你所有的監(jiān)控?cái)?shù)據(jù)反向?qū)У?IDE 里面,就是當(dāng)你看到代碼的時(shí)候,它能告訴你這行代碼在生產(chǎn)環(huán)境里面的系統(tǒng)指標(biāo)是什么樣子的,而這個(gè)東西目前沒有任何商業(yè)場景,但是他已經(jīng)在事情上面做了將近兩年的時(shí)間,他很年輕,他可能在放長線,他認(rèn)為這對他以后不管是拿這個(gè)事情創(chuàng)業(yè),還是拿這種精力去為自己準(zhǔn)備創(chuàng)業(yè)都有幫助。而這個(gè)對于像我職業(yè)開發(fā)者來說,我認(rèn)為是很不劃算的事情,我的時(shí)間不應(yīng)該拿去做沒有商業(yè)利益的、長期的、高復(fù)雜度的事情,它代碼量非常大。這是一個(gè)簡單的例子,是想告訴大家,你參與進(jìn)去的時(shí)候,你要保持相對比較謙虛的心態(tài),更多的是要去問。同時(shí)大家要知道在當(dāng)別人問你的時(shí)候,他不一定是反對你,他更多的是希望你更加如實(shí)的描述這種情況。我們今年也看到了好幾個(gè)中國本土的項(xiàng)目捐贈給 Apache 孵化器,這中間我們就發(fā)現(xiàn)了很多問題。疑問經(jīng)常會被中文的環(huán)境理解成質(zhì)疑,因?yàn)橹袊牧?xí)慣是我們所有的事情都是先討論好的,當(dāng)我發(fā)公開的事情出來的時(shí)候,就代表決議已經(jīng)形成,沒有人會在公開場合說到英文的一個(gè)詞,就是 argue,argue 翻譯成中文基本上就是吵架這個(gè)概念。在整個(gè)文化環(huán)境里面,你需要能夠有一定的耐受力,當(dāng)你去合作的人跟你不是一個(gè)文化的時(shí)候,你要怎么堅(jiān)持住。所以剛才說的那些多元化的事情,它保證的同樣也是多元化的狀態(tài),它要保證廠商都出力,比如說,你的項(xiàng)目里面不能是由單個(gè)廠家來進(jìn)行控制,尤其是頂級項(xiàng)目,它畢竟是多元的,不管是從性別、地域、膚色、年齡,各方面都要是多元的,它的代碼要值得信任,不能有惡意的程序故意被埋在里面。比如說,我們能在國內(nèi)看到有一些項(xiàng)目居然在用戶使用開源版本的時(shí)候,居然在收集用戶的部署信息。他居然能夠知道這個(gè)項(xiàng)目在客戶線上開源用戶部署了多少份,如果這是商業(yè)合同的副產(chǎn)品,我覺得沒有問題,但是如果你對開源用戶也在收取信息,那實(shí)際上是非常危險(xiǎn)的舉動,這種情況在有些國家,有些地域,它甚至涉嫌違法,因?yàn)槟阍诒I取用戶的隱私數(shù)據(jù)。安全更多的是既有代碼本身可獲取安全,也就是說,一旦代碼交付給你,我是不可撤回的。另外也有安全 security 這個(gè)層面,因?yàn)樗_放了源碼,開放了所有的版權(quán)給你,你可以更快的去修復(fù)安全漏洞,甚至你自己打 patch ,這也是很常見的事情。那 community over code 其實(shí)早上俊平也說了,所有人在講 Apache 文化的時(shí)候都會講這事。這句話其實(shí)每個(gè)人會有不一樣的理解,但是最后有一點(diǎn)大家一定是共識的:人是最重要的。所以你怎么樣讓項(xiàng)目做到真正的透明,讓大家愿意花時(shí)間來參與這個(gè)項(xiàng)目,大家相信你或者相信項(xiàng)目都好。一個(gè)簡單的結(jié)論:在 ASF 和 CNCF 之間,如果你要做廠家主力,要快速進(jìn)行商業(yè) marketing,這里不存在情緒色彩(因?yàn)槲覀児咀约阂苍?CNCF 里面做,比如我們公司很多人在做 Envoy,因?yàn)樽?Service Mesh,使用 Envoy、istio 甚至單獨(dú)廠商不夠的開源項(xiàng)目),不是說 ASF 比 CNCF 好,至少從我個(gè)人角度,我不認(rèn)為這兩者有任何的可比性,這是完全不同的運(yùn)作模型。你需要去做正常的選擇,但是你要知道它的差別在哪,ASF 一定不是利益先行,它一定是開發(fā)者先行人先行,怎么能夠團(tuán)結(jié)起來是最主要的,而 CNCF 是廠家的利益高于一切。我要以 vendor 為背景,CNCF 的項(xiàng)目,它要求的 diversity,也要求diversity 的多元化,它要求至少有三個(gè)廠家在參與,它并不要求說你要來自于很多地方的開發(fā)者,它很在乎你是哪家公司,所以在和 CNCF 簽 CLA 的時(shí)候,你要說你是哪家公司的,你簽的的郵箱,基本上還是公司的郵箱,公司要附屬的一起簽 CCLA。在選完基金會之后,其實(shí)我們會有長期的運(yùn)作項(xiàng)目的過程,里面當(dāng)然有非常非常多的故事,非常非常多的痛苦也好或者是成功的經(jīng)驗(yàn)也好,但是我們?nèi)ケ容^了非常多,因?yàn)槲易约阂矃⒓舆^中國的很多開源項(xiàng)目,從 Echarts、ShardingSphere、APISIX、DolphinScheduler 這些 Apache 項(xiàng)目,或者像 CNCF 的包括 OpenTracing、zipkin,我其實(shí)都有在這些項(xiàng)目里面。我們能看到的,不管是中國和國外,你作為項(xiàng)目的 leader 或者項(xiàng)目的核心團(tuán)隊(duì)的成員,你要去保證你能夠做到這些事情,雖然做到不一定能成功,但是你沒有做到,就會對你的項(xiàng)目、對你的社區(qū)傷害非常大。開放是很簡單能夠說出來的詞,但是當(dāng)你的其他核心人員都不來自你的公司,不和你共享商業(yè)利益的時(shí)候,你怎么能夠相信他們的決策?以及怎么樣選擇那些你可以相信的人?相信是雙向的。你越相信他,他給你帶來的迭代速度,他給你帶來的特性能力就會越強(qiáng),他會逐步深入。而如果你所有東西都在自己手上掌握著,那恐怕你的時(shí)間投入,就是項(xiàng)目的極限。SkyWalking 現(xiàn)在應(yīng)該有 80% 以上的代碼都不是我寫的,我不了解詳細(xì)情況,更多的是別人問起來我都是照著文檔來,因?yàn)槲乙呀?jīng)不知道他們把項(xiàng)目改成什么樣子了。我知道大體是什么樣,我知道數(shù)據(jù)流是什么樣的,但這就是極限了,而且這是在我在作為職業(yè)開發(fā)者的情況下。如果你不是百分百全職,估計(jì)你理解的東西就更少。遠(yuǎn)程的模式其實(shí)變相的說就是異步的模式,這在中國很多工程師心里面也是永遠(yuǎn)的痛,你問了問題發(fā)現(xiàn)沒人鳥你,別人回答你的時(shí)候,已經(jīng)幾個(gè)小時(shí)過去,中國工程師很喜歡問句子的時(shí)候問半句問一句,這個(gè)行不行,行又怎樣,不行又怎樣,下面有個(gè)人回不行,好,這一天就過去了。這不是廢話嗎,你要掌握一些最基本的遠(yuǎn)程工作的技巧。以及當(dāng)大家像我這樣工作的時(shí)候,因?yàn)槲易约旱墓驹诿绹?,我們的工程師從最東的新西蘭日本時(shí)區(qū)到最西的梅西時(shí)區(qū),幾乎每時(shí)區(qū)都有超過五個(gè)工程師。我們公司的所有的產(chǎn)品都是在異步的情況下完成,我們幾乎沒有公司級別的同步型會議。這就是我們平常所面臨的情況,你會想象在一家公司去 Run Open Source Community,這些東西你必須會,不然公司的工作都沒法做。我們?nèi)プ鯣oogle docs的評審,那人家就撇了一個(gè)Google docs給你,你有贊同的,有不贊同的,有想改進(jìn)的,或者你覺得對方整個(gè)從頭就想錯(cuò)了,那你怎么樣把自己的意愿盡可能一次用文字表達(dá)清楚,這實(shí)際上才是 remote 模式的意義。去年疫情的時(shí)候,我們在中國看到了很多很搞笑的事情。所有人被迫在家上班,在不停的 check 進(jìn)度,不停的同步進(jìn)展,領(lǐng)導(dǎo)就想知道你到底有沒有出去開小差。像我們這樣的公司,我們領(lǐng)導(dǎo)會在早上十點(diǎn)鐘,給你發(fā)個(gè)郵件申請說,我一小時(shí)后給你開個(gè)會行不行,我可以回答說不行,我現(xiàn)在下去帶孩子玩一會,要么我們晚上的時(shí)候再開會,要么你給我發(fā)個(gè)郵件用文字跟我說,是不是很著急?很著急的話你等我兩個(gè)小時(shí),等到下午一點(diǎn)的時(shí)候我們再聊。整個(gè)文化是從上到下,我下面的工程師也可以這么跟我說話,他說我現(xiàn)在沒有空閑,在帶孩子或是在接媳婦,我經(jīng)常下午四點(diǎn)鐘給我們黑龍江同事發(fā)微信說你在嗎?他回答說我在接我媳婦,我說那到時(shí)候再說,然后我去補(bǔ)一封郵件給他。如果你要去把 open source 做到那種狀態(tài),你必須要能接受這種工作模式,你要學(xué)會讓大家能夠高速運(yùn)轉(zhuǎn)。因?yàn)橹袊奈⑿盼幕?、QQ 文化、實(shí)時(shí)通訊文化最大的問題就是被聯(lián)系的人在頻繁地被打斷。大家覺得自己都在最高效的狀態(tài)運(yùn)行,但是結(jié)論并不高效,因?yàn)槿嗽诓煌5谋淮驍?。這個(gè)模式,你要去理解,你要真的能接受,你要能活在狀態(tài)里面,你才能和全球的社區(qū)集成。SkyWalking 有一個(gè) Node.js 和 Python 的探針,這兩個(gè)探針都來自于一個(gè)東歐公司在南美的工程師,我們和他們能進(jìn)行實(shí)施通訊的時(shí)間只有一個(gè)小時(shí),晚上九點(diǎn)到晚上十點(diǎn),如果這件事情需要被實(shí)時(shí)溝通,必須在這一個(gè)小時(shí)之內(nèi)做完,但是很有可能他不在線,或者我不在線,所有的事情都是在線上完成。我到現(xiàn)在都不知道那位工程師長什么樣子,我沒有做過一次視頻會議,所有的東西都是文字。當(dāng)你需要和別人寫作,你要知道別人期望你的狀態(tài),因?yàn)樗幌M荒阕е?,因?yàn)槟悴皇撬I(lǐng)導(dǎo),你又不給他發(fā)工資,干嘛你天天要拽著他,不就是貢獻(xiàn)一行代碼嗎?犯得上嗎?這就是你在做 remote 的時(shí)候,你要去解決的實(shí)質(zhì)的問題。而下面更多的叫做什么?我們在社區(qū)里面很多時(shí)候叫做善意獨(dú)裁,你嘗試去理解所有東西,你所有的代碼必須要符合你的習(xí)慣,你要去做自己的決策,或者里面有個(gè)小團(tuán)體來做決策,或者是其他任何類似的事情,這是非常傷人的,當(dāng)大家經(jīng)歷過一次之后,以后的決定再也不理你,因?yàn)榉凑銢Q策的時(shí)候也不帶別人。這個(gè)事是有差別的,我舉辦了公共的會議,我舉辦了公共的郵件列表,但是你沒有反饋,所以我才會這么做,這跟我在線下做了決議才通知你,給別人的感受是完全不同的。你可以不參加,你可以默認(rèn)通過,你可以無視,你可以后面再來挑戰(zhàn),你至少給了人家追溯的機(jī)會,人家知道你當(dāng)年為什么去做這個(gè)決策。往往大家反對的不是你的決策本身,而是反對了你的決策列條。你的事情沒有開放,沒有說我今天要干這個(gè)事情,是因?yàn)?abcd 等原因,這是大家要注意的。最后一條,中國人最難做的 be remote,就是別人不同意你,這是中國工程師最難解決的問題。英語文化里有句話叫 agree to disagree,你要同意一些不同的意見,大家可以以他的訴求去干活,有一些方向他可以先去探路。不一定在決策的時(shí)候,所有人舉手表決必須全票通過,缺席投票的情況很常見。在做這件事情的時(shí)候,你能不能做到這一點(diǎn),作為社區(qū)的 leader 能不能容忍這一點(diǎn)非常重要。而你的軟件技術(shù)能不能在這種環(huán)境下活著,比如說有一波團(tuán)體通過了相對來說不太好的方案,那它會不會對你整個(gè)生態(tài)系統(tǒng)造成毀滅性的打擊,可能你下一個(gè)版本功能完全就廢掉了,那你的軟件質(zhì)量我們能保證,不管是你的自動化測試、混亂測試、壓力測試、全自動的測試能不能保證件事情不要發(fā)生,能不能在前期通過理論證明、數(shù)據(jù)證明、實(shí)驗(yàn)性的測試能夠得到結(jié)論,說你不好,我反對你這件事情是有數(shù)據(jù)依據(jù)的。而不是說以我的經(jīng)驗(yàn)就不好,你的經(jīng)驗(yàn)不行,中國人最愛說的是:我們公司有這么大流量,你沒有,所以這事不行。這樣你在開源里面,就沒人跟你再聊技術(shù)方案,因?yàn)槟愀揪蜎]有把別人的話當(dāng)回事。也許流量在1000萬的情況下不好使是真的,但是在10萬的情況下好使,很多系統(tǒng)都是這樣,你要理解到底有多少人要面臨1000萬的流量。就好像我們之前,我們代表了很多雙十一的方案在聊,但是有多少公司需要雙十一?阿里那樣的公司是很少的,你方案做的很復(fù)雜,但它有沒有用?這是很嚴(yán)重的問題。這個(gè)是孵化的流程,我不細(xì)講了,如果你對 Apache 孵化感興趣,核心的點(diǎn)就是你要找到三個(gè) mentor,說白了,孵化器、基金會,這些東西都是社交游戲,你能找到人,你能說服他們,用錢說服或是用人情說服,反正你自己想辦法,不管什么都是社交能力。你能搞定,這事就能干。那么在 Apache 基金會,你會有非常非常多的 level ,但這只是所謂的 level,任何人在任何級別并不代表你比其他人有更多的權(quán)利,而往往是更多的義務(wù),越往上走,你要干的活越多。其實(shí)權(quán)力都沒什么,唯一的區(qū)別從 contributer 到 communitier,你的變化是可以直接向庫里面提交代碼。但是很多現(xiàn)在主流的開源軟件,就比如說我自己,現(xiàn)在都不能向 SkyWalking 直接提交代碼。如果我們沒有經(jīng)過其他 pmc 或者 review,我的代碼也進(jìn)不去。后面的內(nèi)容是我們希望讓大家知道,在中國的 Open Source 的環(huán)境里面,大家常見的幾個(gè)問題。這是我這么些年,在兩邊都感受了開源社區(qū)之后我認(rèn)為的最大的痛。中國開發(fā)者對于開源項(xiàng)目的 maintainer 提了無限高的要求,高到離譜,高到客戶提的要求都沒有我們提的離譜。比如說中國開發(fā)者說文檔寫的不好,源代碼都給你了,你管我寫的好不好?你想用就用,不想用就不用了,我沒有收你錢。如果項(xiàng)目在很早期的時(shí)候,你想去找一些種子的開發(fā)者,這是你自己和對方對賭,你在賭對方的項(xiàng)目好用,對方在賭你會認(rèn)他這個(gè)項(xiàng)目。但是隨著項(xiàng)目的成熟,不會有這個(gè)過程。如果大家去翻所有中國原生的 Apache 的頂級項(xiàng)目,我可以很負(fù)責(zé)任的說,SkyWalking 一定是社區(qū)環(huán)境、回答問題的態(tài)度最不好的。因?yàn)樽畛R姷哪蔷湓捑褪腔厝プx文檔,回去讀代碼,這是你問到的絕大部分問題的回答。為什么會出現(xiàn)這種情況?因?yàn)檫@是不對等的,我并沒有為你提供商業(yè)服務(wù),為什么我要提供對等的能力?換句話說 SkyWalking 看中的是那些能夠自己動手的開發(fā)人員,他們才是社區(qū)的價(jià)值,你能為社區(qū)貢獻(xiàn)一行代碼,那我花十分鐘和你聊是值得的。如果你是在現(xiàn)場部署的時(shí)候出了問題,那我一點(diǎn)都不想關(guān)心,因?yàn)槲也渴鸬臅r(shí)候沒有問題。有很多人在社區(qū)說,這個(gè)事很著急,生產(chǎn)上出了問題,生產(chǎn)出了問題和我有什么關(guān)系?我為什么要花那么多精力在晚上九點(diǎn)鐘幫你去看堆棧,我瘋了嗎?我看會電視不好嗎?所以這是大家在邏輯里經(jīng)常對中國的項(xiàng)目提出的一些不切實(shí)際的希望,中國的開源軟件作者每天就會抱怨,我好累,因?yàn)槟阋矐T著他,基本上就是一個(gè)想被慣著,一個(gè)愿意慣著。第二點(diǎn),時(shí)間。所謂的我沒時(shí)間,是我在 996 我在 997 或者更多。但如果大家平靜下來想一下兩件事:第一件事,有多少工人是真正能夠 996、997 干活的?其實(shí)并沒有。絕大部分晚上大家都在吃飯、玩手游、樓下健身房,到時(shí)間打卡走,或者說晚上在干活,早上十二點(diǎn)回來,其實(shí)一天還是只干了八個(gè)小時(shí)。因?yàn)檎碚f,為什么西方的 it 公司,我們會說我跟你簽的合同是八小時(shí),我今天不想干活就不干,為什么?It 工程師是寫程序,不是你要求加班他就能寫得出來的。他腦子不好寫程序,后面有三個(gè)程序員幫他填空,全是 bug ,還不如別寫。基礎(chǔ)設(shè)施軟件更是如此,你的那些埋進(jìn)去的隱藏的 bug 是毀滅性的的,你寫了三分鐘的程序,對方可能三個(gè)月都調(diào)不出 bug。如果他是一個(gè)這樣的人,你可以認(rèn)為,他不是開源軟件的從業(yè)者,我并不是說這樣的人不存在。開源文化并不是要說服所有的人,不是告訴所有人開源現(xiàn)在很熱,所以你要去開源。不是所有的人都會為此買單。就像 Apache 經(jīng)常說的一句話,Community Over Code,并不適合所有的開源項(xiàng)目,而且不適應(yīng)這件事并不是錯(cuò)的,很多不遵守 Apache Way 的事情都成功了,Linux 操作系統(tǒng)就是典型中的典型,所以不要把它當(dāng)絕對的標(biāo)準(zhǔn)。最后,你在做項(xiàng)目的時(shí)候,也要去連接所有你可以用的資源。工程師、生態(tài)系統(tǒng)、其他的項(xiàng)目的玩家,以及各種 Global 的 vendor。你需要從個(gè)人關(guān)系,社交能力到你的合作的項(xiàng)目,同一個(gè)基金會的、跨基金會的、別人公司的,或者職業(yè)的玩家們,這些職業(yè)的玩家們會在你的宣傳、以后的推廣里面起到舉足輕重的作用,以及那樣一些背靠著你做商業(yè)化的廠家,他們給你投入的職業(yè)開發(fā)者。哪一個(gè)在不同的階段都會被需要,他們沒有好與壞,錢是好事也不是好事,取決于你怎么樣去用它,你怎么樣去散發(fā)社區(qū)的結(jié)構(gòu),每一個(gè)社區(qū)、每一個(gè)套路,都有自己的減法。其實(shí)我們?nèi)セ仡櫼幌铝甑臅r(shí)間,我們會說:耐心。大家很多時(shí)候看到今天的 SkyWalking,我可以只放前三頁,我可以說 SkyWalking 多么厲害。我還可以做三十頁的 ppt 告訴這項(xiàng)目多么厲害,有多大的部署、多大的環(huán)境,我可以講一下午,但是你要知道的是,其實(shí)第一天它啥也沒有,而你背靠的是全世界最大的開發(fā)者。SkyWalking 90% 以上的功能都有中國工程師的參與,而他的用戶遍布全球,而大量的中國工程師在開源里寫的代碼,被西方的工程師認(rèn)為是太復(fù)雜的功能,這是他們認(rèn)為的在異步環(huán)境下不可能完成的事。而中國很多工程師是依靠自己的能力完成工作,所以我并不認(rèn)為中國工程師缺少開源的能力,但是他缺少的是正確的協(xié)作方法。我們有大量的事情都很著急,比如說 SkyWalking有很多的功能,是在兩三年前吹出去的牛,我們今天才能得到結(jié)果,不知道大家有沒有注意到,我最早的一篇 ppt 上寫的一句話,SkyWalking 在今天,在上個(gè)月發(fā)布的 8.5 的版本,才剛剛完成了我們在五年前吹的牛,才把那些功能真正的變成代碼可用的狀態(tài),而這個(gè)過程用了六年的時(shí)間,用了 500 位工程師,以及無數(shù)的測試,我們都不知道全球有多少人測試過這個(gè)程序。所以要有耐心,同樣,在完成了六年前的事情之后,我會發(fā)現(xiàn),原來我們六年前想的事情是整個(gè) landscape ,我們在今天能看到的 landscape 里面,我們只完成了 50%,我們甚至也許還需要一個(gè)六年才能把我們今天想到的東西做完,這就是開源,我們的 Landscape 會越來越大,東西會越做越深,SkyWalking 從一個(gè) java 探針,做到了全語言探針,做到了 service mesh,現(xiàn)在要去接操作系統(tǒng),我們要自己做 database,我們要去接其他的采集軟件,我們要去接其他的協(xié)議,會發(fā)現(xiàn)事情會越來越多。最后,我們會在下個(gè)月和下下個(gè)月回 ApacheCon 的活動,當(dāng)然今年因?yàn)橐咔榈脑?,我們還是會在線上來做,最后一屆 ApacheCon 在線下辦是在拉斯維加斯,第 21 屆的時(shí)候就開始疫情了,第 22 屆的時(shí)候我們第一次把 ApacheCon Asia 帶到了中國,因?yàn)橥ㄟ^ 17 年到 21 年四年的努力,中國終于有了足夠多的 Apache member,這能夠讓 Apache 基金會相信可以去辦一場屬于中國、屬于亞洲的 ApacheCon。我們也希望明年,在疫情更好的情況下,我們能讓 Apache 通過第一次把 ApacheCon Asia 帶到中國的某座城市去舉辦一些線下活動的決議。當(dāng)然今年其實(shí)已經(jīng)很好了,因?yàn)槲覀兊?ApacheCon Asia 70%-80% 的 section 都已經(jīng)可以使用中文,這是 ApacheCon Asia 帶給我們的好處,因?yàn)橹袊?Apache member 幾乎覆蓋了整個(gè)會議所有的 track chair,他們有更多的話語權(quán),我們能更好的通過 ApacheCon 的整個(gè)篩選,這是我們能夠帶來給大家的,以后我們希望更多的工程師能夠從 ApacheCon Asia 走到全球的 ApacheCon。今年 ApacheCon 的全球也是北美時(shí)區(qū)的,像監(jiān)控的主題,基本上不管是中國的工程師還是國外的工程師都會使用 SkyWalking 相關(guān)的主題,我們也希望更多中國的項(xiàng)目能夠走出去,能夠用英語去 share 更多的主題。因?yàn)槲易约涸趪饩W(wǎng)絡(luò)的時(shí)間比較長,這個(gè)是我的 Twitter,我會在上面的時(shí)間會比國內(nèi)的平臺會多一些,希望大家去聊一些,開源、SkyWalking,或者是 foundation 的一些文化,大家可以通過 twitter 來找到我。謝謝大家。
關(guān)注【開發(fā)者生態(tài)】公眾號回復(fù):ws 下載演講 PPT點(diǎn)擊【閱讀原文】觀看吳晟演講視頻,重溫精彩時(shí)刻