龍蜥開發者說:開源是場馬拉松!來自廣州大學姚同學的開源成長記 | 第 13 期

OpenAnolis小助手發表於2022-11-28

「龍蜥開發者說」第 13 期來了!開發者與開源社群相輔相成,相互成就,這些個人在龍蜥社群的使用心得、實踐總結和技術成長經歷都是寶貴的,我們希望在這裡讓更多人看見技術的力量。本期故事,我們邀請了龍蜥社群開發者姚胤楠來分享「開源是場馬拉松!來自廣州大學姚同學的開源成長記 」。

歡迎閱讀上期故事《 一人行快,眾人行遠!在龍蜥社群的日子,我想說這些》。開發者說系長期活動,對於積極投稿、多次分享的童鞋,我們還有神秘大禮鼓勵!誠邀開發者們分享真實體驗,以文會友、共同學習、一起進步。

龍蜥開發者說:開源是場馬拉松!來自廣州大學姚同學的開源成長記 | 第 13 期

本期故事主角:姚胤楠,大學研二學生,個人研究方向是容器執行時安全,主要涉及到使用 eBPF 等技術對容器執行時安全進行實時監控和追蹤取證等方面的研究。

大家好,我是姚胤楠,目前就讀於廣州大學,是網路空間安全學院的一名研二學生,個人研究方向是容器執行時安全,主要涉及到使用 eBPF 等技術對容器執行時狀態進行實時監控和追蹤取證等方面的研究。

在學習容器安全過程中,我深入瞭解了安全容器 Kata Containers 專案併產生了濃厚興趣。我深信開源領域是值得人們去探索的未來,它並不神秘,但卻引人入勝,點燃了我們年輕人投身學習的熱情。入門之初,空有熱情卻沒有方向的我就像一個無頭蒼蠅,一直在尋找入門的機會。直到今年一月,有一位前輩提示我,既然如此熱愛開源,那為什麼不加入到開源社群裡呢?那裡有更多的開源人才,能結交志同道合的人,也能學到更多的開源知識。

得到這個提示,我才意識到我差點錯過一個絕佳的學習機會!要知道,當前進的過程中遇到阻礙的時候,受到專業人士的指點,比自己進行盲目摸索的效率不知要高多少倍。藉助當時遇到的專案,我正式加入了 Kata 社群中,開始了我的容器專案研究之旅。

在參與社群的過程中,起初的工作是搭建開發環境,做一些相容適配和修復 BUG 等簡單的工作。但當我逐漸熟悉了開源社群的工作後,也融入了社群氛圍的時候,便開始嘗試協助導師組織和主持容器相關課題的週會。

參與專案的半年多的時間裡,讓我從一個學習者成長為了一名開發者,也從當初參與者的身份轉變成了如今的組織者。這些角色的轉變,不僅僅是身體上加入了開發者社群,也讓我的精神得到了滿足。在這個過程中,不僅精進了我的計算機技術,而且學到了如何去更好地交流、合作,還結識了各個企業的開源前輩和同樣來自高校的朋友。

在這段開源之旅中,我非常榮幸獲得了 OpenInfra Days 2022 China 社群新星的稱號,這個獎項對我來說是莫大的肯定,鼓勵著我走向開源的遠方。今後我也會持續關注 Kata 3.0 的建設工作,希望能夠更好地為這個專案做出貢獻。

在完成了大部分 Kata Containers 專案相關內容後,我發現一直在關注的 阿里巴巴程式設計之夏(ASOC)活動開始了 2022 年度的報名比賽。看到龍蜥社群在此次活動中釋出了 8 個開源專案,其中有一個是關於「基於 dragonball-sandbox 開源元件搭建簡易虛擬機器」的任務,我不假思索地報了名。報名後加入了龍蜥社群,在龍蜥社群專案導師的指導下,順利地完成此次活動專案,從而有了一個精彩的程式設計之夏。

龍蜥開發者說:開源是場馬拉松!來自廣州大學姚同學的開源成長記 | 第 13 期

我始終認為開源社群是交流的社群,只有交流合作才可以更好地打造一個個頂尖的專案。如果說加入 Kata 社群源於我對開源世界和安全容器的興趣愛好,那麼加入龍蜥社群,選擇這個專案則是來自我對開源技術的探索與追求。除此之外,我在龍蜥官網上發現有近 50 個技術 SIG(Special Interest Group) 組,對其中一些 SIG 組也很感興趣,比如 eBPF 技術探索 SIG,因為它與我在學校的研究方向有很大關係。

我在程式設計之夏的旅程是由一個一個任務堆起來的,每週的任務從專案的架構設計到 CLI 模組,再到 CPU 虛擬化、記憶體虛擬化和裝置虛擬化,充實而艱難,但完成這些專案後所獲得的成就感是巨大的。專案程式碼的實現,以及如何去總結對自身而言晦澀難懂的知識並輸出的過程都是我點滴的積累。經過幾個月持續不斷的輸入、輸出,我終於得到了一個結論性的成果——基於 dragonball 元件搭建的簡易虛擬機器 Miniball。

龍蜥開發者說:開源是場馬拉松!來自廣州大學姚同學的開源成長記 | 第 13 期

(圖 / MiniBall 的架構:展示了 CPU 虛擬化、記憶體虛擬化、裝置虛擬化、載入核心的各個模組及所依賴的 crates)

在搭建 MiniBall 的過程中,我遇到過很多的困難。首先就是對於 Rust 語言的實踐。在參與龍蜥社群 Dragonball 專案之前,我對 Rust 語言的基礎還只停留在命令列工具,而 Rust 本身又是一個學習曲線較為陡峭的語言。

知識在於積累!在閱讀 rust-vmm 和 Dragonball 專案原始碼的過程中,如果有鑽研不透的問題我都會隨時請教龍蜥社群導師,就這樣在專案開發期間我一直保持不懂就問的態度外加練習,終於感覺入門了 Rust 語言。在這個專案中,我也是第一次接觸虛擬化,在完成 MiniBall 之前,開發虛擬機器對我而言是從未設想的任務。

專案任務的困難是我接受的巨大挑戰,我不得不承認,若是自己從零學起,要完成任務恐怕遙遙無期。但在阿里巴巴程式設計之夏這裡得到了龍蜥社群前輩們的引導後,我用了更為順暢的學習曲線去掌握這些知識。比如在實現 CPU 虛擬化部分的時候,不僅僅要實現程式碼內容,還需要結合原理輸出一份文件,這個過程對於初學者的我是相當困難的。

輸出文件就意味著需要理解了 CPU 虛擬化的原理並儘可能用自己的表述進行產出。在這個過程中,我的指導老師吳老師給我了極大的鼓勵,他讓我勇敢邁出了第一步——先寫出大概的框架,再透過回顧和交流不斷補充內容、完善細節,直到現在這一份文件變得完整且詳細。

當一份文件完成,之後其他的開發過程和文件輸出就相對明朗且順暢。

我提交的每個 PR 和 issue、寫出的每一篇文件,都是我一步一個腳印邁向遠方的基石,是我顆粒般的知識在聚沙成塔。所以當專案任務結束,我抬起頭看到目的地就在眼前的時候,心裡由衷地感謝為此奮鬥過的每個日夜。

當我回頭看這段時間用過的技術、寫下的每一行程式碼,才意識到我不知不覺間已經建立起了初步的知識框架,但是我很清楚的知道那都不是一蹴而就的,是我這段時間努力的每個瞬間匯聚在一起的結果。

龍蜥開發者說:開源是場馬拉松!來自廣州大學姚同學的開源成長記 | 第 13 期

(圖/MiniBall 專案完成過程中一共提交合並了 13 個 PRs,涵蓋 CPU 虛擬化、記憶體虛擬化、裝置虛擬化、架構文件和使用指南等多項內容)

這只是我在龍蜥社群參與的一個專案,我卻可以把它作為一個開始。今後我很期待能夠成為一個可以做出貢獻的開發者,就像我希望在社群中不僅僅參與專案程式碼維護和功能支援方面的任務,可以嘗試更深地去參與社群專案技術路線的討論,將自己的想法與社群成員探討和碰撞。

龍蜥開發者說:開源是場馬拉松!來自廣州大學姚同學的開源成長記 | 第 13 期

(圖/MiniBall 的專案程式碼展示)

我也關注到龍蜥社群目前正在開展 「人人都可以參與開源」活動。我個人覺得這是個非常好的活動,因為開源對於在校學生而言是一個很好的成長機會,學生們透過這個活動也能夠接觸到業界前沿的技術。但是學生往往會因為開源專案涉及到的技術較難而猶豫是否要參與到社群中,所以這個活動非常友好地給技術還不那麼成熟的學生群體或其他想參與開源的初學者、愛好者提供了機會。不過,我看到目前公開的任務還較少,參與活動的 SIG 還較少,希望未來有更多的專案、SIG 涉及更廣的任務能夠開放給對開源感興趣的開發者。

龍蜥開發者說:開源是場馬拉松!來自廣州大學姚同學的開源成長記 | 第 13 期

也許有不少同學也像我一樣對開源社群和虛擬化感興趣,但是苦於沒有引路人,只能埋頭自學,在看到社群技術比較難的時候就容易放棄,請不要懼怕,積極勇敢地參與到一個社群吧,這會是其中成長最快的道路之一。

社群中有前輩能夠指導正確的路線,讓學習的過程少走彎路。而那些對開源尚且還不瞭解、還在開源大門外徘徊的同學,也不要猶豫,走進來也許就能學習到前沿的技術,認識有趣的人,開啟一段新的故事。開源更像是一場馬拉松,堅持是最重要的,儘自己所能,在自己的興趣驅動下去積極的貢獻社群,希望未來我們都能共同建設一個更加精彩的開源世界!

相關連結地址可移步龍蜥公眾號(OpenAnolis龍蜥)2022年11月24日相同推送檢視。

—— 完 ——


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2925413/,如需轉載,請註明出處,否則將追究法律責任。

相關文章