國內首位!Node.js社區將阿裏雲工程師張秋怡吸納為CTC成員
繼去年MariaDB基金會將阿裏雲數據庫高級專家彭立勳列為個人成員後,今年又有一位阿裏雲工程師在國際技術社區重要工作中有所擔當,她就是張秋怡。
張秋怡,花名洗影,阿裏雲雲應用服務團隊工程師。2016年,她畢業於中山大學軟件工程專業,現在在阿裏雲alinode團隊參與 alinode Node.js 應用服務解決方案的開發和維護,同時也對阿裏內部和外部的客戶提供技術谘詢的服務。
Node.js社區宣布將張秋怡吸納為CTC的頁麵(@joyeecheung 為張秋怡在Github的賬號)
近日Node.js社區決定,將張秋怡吸納為CTC(核心技術委員會)成員,而這也使得她成為國內首位Node.js社區CTC成員。
CTC 主要負責 Node.js Core 大方向上的技術決策。其成員主要的工作包括:參加周會討論 GitHub Node.js 組織下麵所有提交給 CTC 討論或者 Review 的事項,參與 CTC 郵件列表的討論,對有爭議的 issue 進行投票,Review Node.js Core semver-major 的不兼容改動(semver-major 的 PR 必須要有 CTC 成員的 sign-off 才能合並),以及其他 Node.js Core Collaborator 的工作 (CTC 成員也是 Collaborator)。
隻有對Node.js 社區有足夠大貢獻的人,才會被吸納為CTC成員,張秋怡做了哪些貢獻?她在接受雲棲社區電子郵件訪談時說:“我主要是參與了 WHATWG URL 標準的實現(在 8.x 我們已經做到能完全通過 Web Platform Test 了),和內部 benchmark 的一些改進,平時也會幫忙維護 issue tracker 和 review 代碼。”回複中,張秋怡也指出,日常工作其實是維護 issue 和 code review 更多一些。
聊到國內為什麼到今天才有第一位CTC成員時,張秋怡表示並不很清楚,但她分析可能和以下兩個原因有關係:1.語言障礙;2.Node.js社區的人基本都是誌願者,需要大家犧牲個人大量周末休閑的時間。有些原因她沒在訪談中說,但卻在稍早些時候——《Node.js Collaboration Summit 與 JSConf EU 紀行》一文中有所點明。她當時感歎中國開發者在國際社區與標準製定過程的缺席,進一步探究原因她則發現,國內工程師大都喜歡自己去尋找曲線救國的解決方案,缺乏標準意識,從長遠角度解決問題……從這來看,或許也能多少知道為什麼在國際技術社區看不到來自國內的現象級人物和技術貢獻的根本原因。
盡管這位年輕的CTC成員本科畢業才一年,但她的技術實力很雄厚,而這來源於她在Node.js領域四年的持續耕耘。因此張秋怡在成為CTC成員之前,也收獲了來自小夥伴的欽佩。2016年年底,張秋怡受邀在Node.js Interactive 2016 North America上做分享,歸來後她寫了一篇文章《Node.js Interactive 2016 North America 紀行》做記錄,阿裏的技術同學除了在內網感歎對最新進展介紹全麵、信息量太大的同時,也有人發自內心的問:“如何成為像你這樣的大神。”
對於下一階段,張秋怡說,原來做什麼,現在還會繼續做什麼,隻不過每周會多參加一次語音會議。在阿裏雲的工作,她說,將繼續維護 alinode 和開發新特性,“會將Node8功能集成到 alinode 平台上,提供更多為 Node.js 應用監控調優和故障排查的手段。”
更多細節,請查看以下完整訪談內容:
雲棲社區:請介紹下自己以及所從事的工作。
張秋怡:我 2016 年從中山大學軟件工程專業畢業,現在在阿裏雲的 alinode 團隊參與 alinode Node.js 應用服務解決方案的開發和維護,也對阿裏內部和外部的客戶提供技術谘詢的服務。目前主要做 Node.js 應用的監控調優、故障排查和穩定性保障相關的事情,開發的工作從底層 Node.js 運行時的定製,到上層的監控平台和可視化調優工具都有涉及。此外也協助一些阿裏雲其他產品與 Node.js 開發相關的工作。
雲棲社區:你是什麼時候接觸 Node.js 的?你為什麼會選擇不斷在 Node.js 社區做貢獻?
張秋怡:第一次接觸 Node.js 大概是在大二的時候,有同學給我們看了他用 Node.js 寫的一個 Demo,當時學習過 Python 的 Tornado,發現 Node.js 的 Koa 和 Tornado 比較相似,出於好奇心就了解了另一個平台下的 Web 開發對比來看看。後來對編程語言的編譯器和虛擬機實現產生了興趣,在探索 JavaScript 引擎的實現的同時也有去閱讀 Node.js 的源代碼,了解抽象了計算機網絡和操作係統這些課程知識的跨平台庫(libuv),與一個腳本語言的運行時(v8)嵌在一起在實際應用中會長什麼樣子。大三實習轉崗到 alinode 團隊之後開始有在 Node.js Core 的代碼上做一些開發,但是沒有向上遊提交過 patch。
大四畢業前在 Node.js Live Beijing 做過一次關於 V8 GC 日誌的分享,被 Node.js 基金會邀請到當年北美的 Node.js Interactive 再做一回,在那次會議上有一個 Code and Learn 的活動,現場指導熟悉給上遊提交代碼的流程,因為這個契機就開始熟悉上遊 Node.js Core 的工作流程了,後麵在業餘時間也有不斷給 Node.js Core 做一些維護 issue tracker、提交和 Review 代碼之類的事。
要說為什麼會一直不斷做這些的話,大概就是沒有家庭負擔,所以業餘時間比較閑吧……加上 Node.js 社區整體氛圍還是很友好的,對新加入的貢獻者都很鼓勵,大家都很遵守 code of conduct ,比較有禮貌。偶爾有疑似火藥味出現的時候也會私下溝通,很注意不要互相冒犯,所以在裏麵一起工作感覺很愉快。碰過的代碼多了之後也會經常被 ping 去做 code review,慢慢就變成習慣了。Node.js 底層的代碼涉及的技術範圍比較廣,在參與貢獻的過程中也可以了解很多平時工作不怎麼打交道的技術領域。
雲棲社區:Node.js 社區隻會對有足夠大貢獻的人吸納為CTC(核心技術委員會)成員,能不能和大家分享下,你都做了哪些貢獻?
張秋怡:我主要是參與了 WHATWG URL 標準的實現(在 8.x 我們已經做到能完全通過 Web Platform Test 了),和內部 benchmark 的一些改進,平時也會幫忙維護 issue tracker 和 review 代碼。不過這種是比較成熟的開源項目,日常工作其實是維護 issue 和 code review 更多一些。
雲棲社區:從接觸到的信息來看,你是首位國內 CTC 成員,就你個人來看,能否分析下之前為什麼國內沒有人成為 CTC 成員?
張秋怡:坦白說我也不是很清楚,我認識四五個在國內工作的 Node.js Core collaborator,感覺區別隻是活躍程度不同吧,我平時泡在上麵的時間會多一些。
據我了解,現在 CTC 裏起碼一半的人本職工作和 Node.js Core 的日常維護沒有關係,完全是誌願者,真正受公司讚助對 Node.js 這個項目負責,全職參與開發的人寥寥無幾。我已經算是工作關係比較密切的,平時工作也要接觸同一個 code base。雖然維護上遊代碼並不是我的本職工作,隻是 APM 這類工作的本質需要對運行時底層做一定的修改而已,所以我在上遊提交的代碼和我在內部提交的代碼關係也不大,維護 issue 和做 review 這些工作關係就更遠了。我認識的其他幾個 collaborator 平時的工作和 Node.js Core 的日常維護關係也不大,日常工作如果忙起來,留給開源項目做義務勞動的時間也不多也很正常。
工作和 Node.js 相關是一回事,願不願意犧牲自己周末玩樂的時間,陪伴家人的時間去給底層依賴的項目做義務勞動是另外一回事,畢竟 Node.js 已經是很成熟的開源項目,多一個維護者少一個維護者影響並不大。但是這樣比較知名的項目日常維護需要投入不小的精力,每天一覺起來收件箱多出上百個通知是家常便飯,每個月都會有兩三百個 commit 合並到 master,相應地每天都有很多 PR/issue 要看,所以全跟進是不太可能的。Node.js 的 collaborator 有不少不太活躍選擇退回權限的,CTC 也有一些成員因為個人事務變多沒有時間繼續參與 CTC 的活動而離開(參考 CTC Emeriti:https://github.com/nodejs/node#ctc-emeriti),大家也都很理解。我們也有完整的流程來處理這種情況,有新的活躍貢獻者出現,也有完整的流程吸收成為新血,總體有進有出還是比較健康的。
從我的角度看來,我和其他人的區別隻是我燃燒了一下自己個人的時間而已,我能理解為什麼其他人不選擇放棄更多自己的個人時間做這種義務勞動,也不保證自己會一直堅持花費這麼多的業餘時間(現在本職工作比較忙所以活躍程度也有所降低,但還是盡量保持每周都會做一些工作),這些都是很正常的。
如果要拿國內和國外對比來問(考慮到人口基數)的話,還有一點是語言障礙。雖然 CTC 大概有一半的人母語並不是英語,也不居住在英語國家,collaborator 母語不是英語的也很多,但是 Node.js 的注釋、commit message 的語言、issue tracker 上交流的語言都是英語,CTC 每周開電話會議也是用英語的。另外國外開會和活動的時候,即使有旅費讚助,考慮到語言和簽證問題,國內的開發者要去參加難度也高一些,我到國外開會的時候很多人都表示他們是第一次和來自中國的活生生的開發者交談。雙方平時打的交道不多,了解不深的話比較難吸引作為新成員進來。
雲棲社區:CTC(核心技術委員會)成員有哪些義務?它和 Node.js 社區的Collaborators 有什麼區別?
張秋怡:CTC 主要負責 Node.js Core 大方向上的技術決策,成員主要的工作包括參加周會討論 GitHub Node.js 組織下麵所有提交給 CTC 討論或者 Review 的事項,參與 CTC 郵件列表的討論,對有爭議的 issue 進行投票,Review Node.js Core semver-major 的不兼容改動(semver-major 的 PR 必須要有 CTC 成員的 sign-off 才能合並),以及其他 Node.js Core Collaborator 的工作 (CTC 成員也是 Collaborator)。
Collaborator 的人數更多一些,隻要在 Node.js Core 有足夠多的代碼貢獻就可以成為 Collaborator,Collaborator 有 push 到 GitHub 上 nodejs/node 這個代碼倉庫的 master 分支的權限和運行 CI job 的權限,也可以編輯、標記和關閉 nodejs/node 的 issue 和 PR。
兩者的主要區別……日常能察覺到的大概就是 semver-major 的 PR 需要通過至少一個 CTC 成員的 code review,所以一個 PR 如果被標記成了 semver-major 而且有 Collaborator review 後同意合並了,但是還沒有 CTC 成員 LGTM 的話,會需要 ping @nodejs/ctc 這個團隊的人提醒過來 review(注:LGTM 就是 Look Good To Me,通過了 code review 的意思)。另外有爭議的 PR 或者 code review 中產生的問題如果沒辦法在討論中達成一致,會召集 CTC 來投票做決定。
此外還有 CTC 每周都要開語音會議和有自己的郵件列表。
雲棲社區:CTC 成員與成員之間都是怎麼進行交流的?日常會有聚會嗎?
張秋怡:大家日常在 GitHub 上都是低頭不見抬頭見的,還有就是包括很多 collaborator 都會上的 #node-dev 的 IRC 頻道和 twitter。CTC 每周都會開一次語音會議,討論 Node.js 組織下麵所有標記了 ctc-agena 或者 ctc-review 的 issue/PR,把反饋、決定或者下一步要做的事情回複在對應的地方。不過因為我們分散在世界各地,CTC 的會議時間是北京時間周三晚上7點,晚上12點,周四淩晨4點三個時間輪流的,由於時差一般每次會議隻能聚集到大概三分之一到一半的人。此外 CTC 還有自己的郵件列表用於討論一些比較敏感的話題。
線下主要是 Node.js 基金會每年會組織兩三次 collaboration summit,一般會在 JavaScript 或者 Node.js 社區的大型會議周邊舉行。不過這個活動的參與範圍也包括所有的 Core Collaborator 和 Node.js 基金會下其他 Working Group 的成員。一般 Collaboration Summit 主要是分小組討論一些需要集齊人討論的問題,線下見麵談會更有效率一些。
雲棲社區:我們知道,你也在維護阿裏雲基於 Node.js 推出應用服務解決方案alinode,因此有兩個問題:第一個問題是,alinode 主要改動了什麼,體現的優勢是?適用於什麼場景;第二個問題是:當下在阿裏雲的工作和 Node.js 社區交集多嗎?如果不多,你是怎麼分配這兩塊時間的?
張秋怡:alinode 運行時的改動主要是 APM 方麵的一些東西,包括從底層采集性能數據輸出到日誌等,以及接受遠程開啟性能數據快照(CPU Profile、Heap Snapshot、GC Log 等)並定時關閉的功能,配合我們的 agent 和控製台完成對線上 Node.js 應用的監控和調優。優勢其實主要不在於運行時本身,是我們提供配套的監控、報警、性能調優、慢日誌和錯誤日誌采集等,一係列完整的用於保障 Node.js 線上應用穩定性、方便故障排查和優化線上應用性能的服務。
我平時的工作除了 alinode 運行時和配套工具服務的開發,還要做一些技術谘詢的工作,另外最近主要在協助阿裏雲的其他產品團隊做一些 Node.js 相關的比較上層的工作,按比例的話在公司的實際工作內容其實和我在上遊的工作交集不太多,雖然保持對上遊變動的關注對我的日常工作也是有用的。線下聚會我會借助一些其他機會去,比如到被附屬的開發者會議投 Proposal 做 Speaker,或者像今年集團派遣參加 JSConf Europe 就順便參加在 JSConf 前兩天舉辦的 Collaboration Summit,這樣申請差旅會比較合理一些。
剛開始參與社區的時候因為收件箱消息太多,上班時間也會處理一下郵件,不過現在日常工作比較忙,雖然工作中有一些問題還會需要到 ssue tracker 和上遊的代碼提交記錄去尋找相關線索,但是一般達到目的就會回去繼續完成公司的工作,避免注意力分散得太嚴重。現在主要是下班時間在參與一些社區的工作,周末和節假日會花多一些時間(我今年最活躍的時間其實是春節假期……)。
參與開源項目肯定會占據個人時間的,畢竟有時差就不存在休息時間,就算不專門騰時間出來工作,也會有無窮無盡的消息 24 * 7 小時轟炸收件箱,我會盡量用比較瑣碎的時間處理掉一些比較瑣碎的任務(比如在手機上閱讀 issue,分清哪些是不需要我關注的,那些是需要我關注的),再把需要跟進或者花更多時間工作的東西記下來在下班時間找比較長的空閑時間來處理。另外工作時間等編譯或者發布的時候如果手頭沒有其他事,偶爾也會處理一下消息或者做一下簡單的 Review。
雲棲社區:在阿裏雲和 Node.js CTC 中,接下來你會怎麼做?
張秋怡:在社區的工作其實沒有很明確的計劃,畢竟 Node.js 項目本身其實也沒有明確的 Roadmap,所以基本還是原來做什麼現在做什麼,就是每周要多參加一次語音會議。
在公司的工作主要是繼續維護 alinode 和開發新特性,上遊現在已經發布了 Node 8,alinode 也會在 10 月 Node 8 成為 LTS 的時候發布新版本,我們正在將這段時間做的一些功能集成到 alinode 平台上,提供更多為 Node.js 應用監控調優和故障排查的手段。此外還會幫阿裏雲的其他產品團隊做一些與Node.js 開發相關的工作。
另外 Node.js 基金會計劃在今年 7 月上海舉辦的 JSConf China 辦一次 Code and Learn 活動(討論參見這裏),到時候有幾個國內外的 Node.js CTC 成員和 collaborator 會過來擔任導師,現場指導參加的人為 Node.js Core 提交 PR,我也會去這個活動做導師。
最後更新:2017-07-19 10:02:31