Categories
程式開發

開源社區對開發者的價值到底有多大?


自去年 9 月 openEuler 操作系統宣布開源以來,其開源進展,尤其是社區生態的構建,時刻牽動著軟件產業的關注和好奇。

從去年 12 月份其源代碼正式上線後,所有關於服務器操作系統相關的代碼、能力、文檔在 openEuler 社區(鏈接)全部進行了開放。隨著這個新生開源社區不斷發展,參與其中的開發者隊伍也逐漸壯大起來。那麼在開發者的眼中, openEuler 社區是否滿足了他們的期待?開發者們究竟從開源社區獲得了什麼?為此,我們採訪了參與 openEuler 社區的兩位開發者,試圖從他們的經歷和感受中尋找答案。
開源社區對開發者的價值到底有多大? 1

在 openEuler 社區的 8 個月

作為 openEuler Infrastructure SIG Committer ,馬俊傑在社區啟動之初便投入其中,從事基礎設施建設工作。 Infrastructure 組負責社區中 2000 多個包的維護與管理。回顧在社區的 8 個月,馬俊傑總結道:“這個過程,痛并快樂著。”

抱怨(2019.9-2019.10)

去年9 月至10 月,是馬俊傑剛剛加入openEuler 社區的時候,此時的社區還處於建設籌備階段,很多功能尚待完善,比如維護人員在更新代碼時缺乏代碼審查機制;社區中每個軟件包的詳細信息還未做到充分的公開透明,只能通過.spec 或changelog 去猜測… 馬俊傑經常出入oVirt、Istio 等發展相當完備的社區,openEuler 在一開始的表現無不令他抱怨。

“現在這些問題已經逐步得到解決,發起人經常會對我們這些參與者說,你們還有什麼想吐槽的地方就儘管吐槽。而我們的意見也會得到及時的響應。所以,我覺得整個openEuler 社區是很開放的,也在朝著非常健康的方向發展。”

早期嘗試(2019.10-2019.12)

在參與者的“抱怨”中,社區裡的很多問題得到快速解決,馬俊傑也開始了自己的嘗試。在去年 10 月至 12 月這段時期,他將精力主要投入到社區治理方面,包括社區的貢獻準則(contribution guidelines)、項目說明(project specification)的製定等。與此同時,他也在積極地參與到 go-gitee、ci-bot、Jenkins 等基礎設施團隊的建設工作中。

從 0 到 1 組建團隊(2020.1-2020.3)

進入 2020 年,馬俊傑開始在公司組建開源社區團隊。起初,團隊中的成員對開源及開源社區不太了解,於是他首先擔起佈道師的角色為大家講解開源,並耐心教導他們如何使用 git、pull request 和 issue。由於 openEuler 是一個國際化社區,英語是社區的首選語言,因此幫助團隊成員進行英文讀寫訓練也成了他日常工作的一部分。此外,馬俊傑還不忘鼓勵每一個人去做博主,將自己的經驗寫下來,以此幫助更多的人。

待 5 個人的團隊組建完畢,馬俊傑開始帶領團隊成規模地為社區做貢獻。他們組建起了社區第一個外部引入的 SIG 組——oVirt SIG。很快,其他參與者積極響應,越來越多的 SIG 組在 openEuler 社區裡如雨後春筍般成立起來。

在積極參與各種 SIG 組之外,該團隊還基於以往的產品研發經驗,在 Shadow、PAM、protobuf、gRPC 等軟件包中踴躍提交 issue 和 patch。在社區網站、博客進行經驗傳播也成了家常便飯… 在社區開放的環境下,馬俊傑覺得自己和團隊能做的事情有很多。

新的開始

由於工作變動,馬俊傑從全職負責 openEuler 開源社區回歸到了個人開發者參與其中。對此,他表示,“接下來我將更專注於社區基礎設施的建設工作,另外,還會根據自身工作的特點貢獻特定的軟件包,並為更多加入到社區的參與者提供及時的幫助。”

“參與開源社區是自我價值的超越”

作為一名程序員,馬俊傑早期的工作內容並非原從業公司最核心的部分,儘管在編碼階段有不少付出,但並沒有獲得較大的成就感。在接觸開源社區之後,他結識到了很多志同道合的朋友,大家一起寫代碼,一起為社區做貢獻。對於他而言,做開源讓他“實現了自我價值的超越”。

“能夠從早期就參與到如此大規模的社區建設中,並且能夠與來自華為、阿里及其他兄弟廠商的同事一起工作,是我特別喜歡的。”馬俊傑由衷說道。在他看來,做開源能夠與來自於全國乃至全世界的優秀工程師一起工作,非常具有吸引力。

對於“開源”這件事,馬俊傑有自己的親身經歷和體會。在做了近三年的開源後,如今他也開始以佈道者的身份帶動更多的人參與其中。不過,談及周圍人對開源的認知,他還是感到有些無奈。

他坦言:“其實以前也經常宣傳開源,但是大家的觀念與自己不太一樣。比如很多人覺得開源即免費,只要拿來包裝成產品銷售就可以,貢獻開源沒有價值;或者認為做開源只是為了個人,對公司毫無價值。甚至覺得做開源是不務正業,即使你用的是業餘時間,也會認為你沒有好好工作。”

在開源社區裡,志同道合的人顯得非常重要。所謂志同道合,無外乎是大家對“開源”這件事的看法一致。其中,openEuler 開源生態的負責人李永樂、技術架構組工程師李中華讓馬俊傑印象頗為深刻。這二人不僅在其參與社區治理、貢獻代碼的過程中給予了他很大的幫助,也為他參與開源帶來了足夠的信心。

“我們經常一起探討如何做好openEuler 社區,如何讓更多的開發者或企業用戶參與進來,也會相互鼓勵。永樂和中華讓我覺得開源這條路是可以做下去的,對我而言,他們不只是工作上的助力者,更在精神層面給予我支持。”

丁麗麗是一位接觸開源社區不久的年輕女性開發者,她對此也深有感觸。儘管還沒有足夠的技術沉澱和經驗積累,但在 openEuler 社區中,她依然能很快找到自己的參與方式。 “參與社區的形式是非常多樣化的,並不是只有提交核心代碼才算是貢獻,而且一開始就著手向社區提交核心代碼顯然是有難度的,所以可以從社區文檔方面著手。

我剛開始參與社區就是先從社區文檔、網站建設等方面提出自己的建議,後續才開始慢慢提交代碼。社區中的李老師(李永樂)、馬老師(馬俊傑)對我提出的意見、提交的 PR(Pull Request)給予了很多幫助和鼓勵。對於我自己來講,參與社區是一個提陞技能、擴展知識面的機會,我們的付出最終都會反哺到工作當中,提高效率。 ”

除此之外,openEuler 社區也給丁麗麗的生活帶來了不小的改變。以前她每天”上班時努力完成領導佈置的任務,下班後看看書、查閱一些資料”。在加入openEuler 社區之後,她每天打開電腦首先想到的是:社區裡有沒有新的PR 被提出來;自己之前提交的PR 有沒有被合併,是否需要修改;今天又有哪位老師給了自己新的意見;自己為別人提供的意見有沒有被採納,如果沒有,原因又是什麼… 用她的話來講,“每天又多了一種期待”。也正是在這樣的“期待”和社區參與者的幫助下,從今年2 月至今,丁麗麗在短短三個月的時間裡不僅成為了openEuler 社區中活躍的參與者,其技術能力也得到了快速提升。

無論是有經驗的開發者,還是初階發者,他們都在積極擁抱開源,並在 openEuler 社區中找到了適合自己的成長路徑。

可是,究竟有多少開發者在真正擁抱開源?

從上述內容我們知道,儘管開源社區為參與者帶來了諸多好處,但周圍也不乏對“開源”抱有不同認知和理解的人。這並非個例。

對企業和開發人員來說,開源貢獻同樣具有重要意義。它能幫助企業建立自己的開源標準,同時能夠吸引多樣化人才,可以幫助開發人員豐富開發經驗,提升個人能力。但事實上,如此明顯的優勢並沒有吸引更多的開發人員從事這個行業。

在CSDN 的《2019-2020 中國開發者調查報告》中,53% 開發者表示很少參與開源項目,但企業不支付工資,純粹靠熱愛“發電”的志願投入也不少,佔比達到22% ,而公司讓全職參與的僅佔8%。

縱觀 IT 行業這二十多年的發展,開源軟件從黑客的“理想之國”,已經形成了一股推進計算機及相關行業不停進步的巨大力量。我們使用的計算機、手機、電視,甚至是小小的數碼產品中都運行有開源軟件,尤其是互聯網服務器端軟件,幾乎全部都有開源軟件的影子。而無論是大數據、區塊鏈、人工智能還是物聯網領域,其中最為重要的、最受歡迎的技術也都是開源的。但是儘管如此,還是有超過一半以上的國內開發者鮮少參與開源項目,這種情況多少都令人遺憾。

馬俊傑表示:“其實貢獻開源社區的難點不在於開發者能力不夠,或者找不到貢獻的點,而在於心中沒有開源的思想。其實開源已經在重構整個IT 產業了,我真的不認為在這個行業裡,有誰做的工作和開源項目、開源代碼沒有一點關係。”

談及為什麼會選擇openEuler 社區並一直堅持到現在,馬俊傑告訴InfoQ:“不同於以前參加的其他社區,我感覺加入到openEuler 社區相當於在從頭做一個操作系統社區,你有很多地方可以做貢獻,也有更多施展能力的空間,同時在社區的不同發展階段,都能學習到豐富的知識。其實,在推動社區發展的同時,我們做的這些努力也會回饋到我們自身,這其實是一個相互促進、共同成長的過程。”

參與開源社區還能為開發者帶來什麼?

“開源社區是能讓你快速成長,因為在開源社區裡沒有職業天花板,我對此深信不疑。”馬俊傑談到,以前自己的視野太窄,只看到公司產品使用的技術,接觸的人也僅限於同事,對行業、技術、人脈的認知,會局限起來,公司在無形中成為自己的天花板。 “但是當你進到開源社區,你是看不到天花板的,因為到處都是新的知識、新的技術,於是只想著要抓緊時間去學,這對於個人發展是非常有幫助的。”

作為開發者,只看到自己頭頂上方的藍天並不利於個人發展,開源社區能夠提供更廣闊的天空。馬俊傑表示:“做開源社區不僅僅是寫代碼,還需要學會與不同的人打交道。很多開發者可能平時在公司坐一天都說不了幾句話。但是在社區裡,如何跟來自世界各地、有不同文化背景的人交流,如何提意見能讓大家都願意回答你,而不是每天一看到你就煩… 其實這些都是需要積累,很多程序員恰恰缺乏這種能力。”

退一步講,對個人開發者而言,有一句話叫“開源社區是程序員最好的簡歷”。 “說的更功利和直白一點,隨著開源社區在國內開始蓬勃發展,我相信大家都能通過貢獻開源社區拿到一個更好的offer。現在很多招聘職位中會有’開源社區貢獻’一項,這對應聘是很大的加分項。”

開發者如何更好地參與到 openEuler 社區?

對此,作為資深的參與者,馬俊傑給出瞭如下幾點中肯的建議:

1、多學多看,先從“小事”做起。他表示:“參與社區並非寫出一個模塊才算貢獻。新加入的開發者可以從看文檔、改文檔裡的錯別字開始,從安裝openEuler、把安裝時的Bug 提交給社區開始,在積累自身能力之後,一定找到合適自己的SIG 組去貢獻代碼。openEuler 社區成立不到四個月,還有很大的發展空間,這也意味著開發者有很多領域可以參與進來,能做的事也非常多。”

2、對於新人而言,如果實在不知道怎麼去貢獻,可以從到上游社區搬 patch(補丁)到 openEuler 社區開始。 “這是非常有價值的,比如openEuler 有一個名為’A’軟件包的1.0.0 版本,但是該版本有一個嚴重的安全漏洞,在最新的1.0.1 版本中解決。如果沒有人將1.0 .1 版本的patch“搬”到openEuler 社區,那麼所有用了1.0.0 版本的openEuler 用戶,將面臨巨大的安全風險。”

3、對開發者而言,“搬 patch”最終的目的是要對自己搬的 patch 非常了解,能在代碼層面有比較深刻的認識,能清楚地知道它是如何解決問題的。在這之後,馬俊傑建議開發者可以嘗試給上游社區提 patch。他表示:“當提交的 patch 在上游社區合併後,開發者可以再把這個 patch 再搬到 openEuler 社區中,因為 openEuler 社區的理念是‘Upstream first’,即上游社區優先。”

丁麗麗也結合自身的實踐建議:“在openEuler 社區最重要的是勇於參與,不要擔心自己會犯錯。在尊重他人勞動成果的前提下,有什麼問題或意見可以隨時提出來,社區的人都很友好,大家會很快速地幫你解決。另外在openEuler 社區推薦使用英文,所以大家也需要好好學習英文。”

寫在最後

“目前我們可以看到openEuler 社區有2000 多個包,未來肯定會更加完善,規模也將越來越大。無論是社區理念、氛圍、還是協作模式,整體都在朝著一個健康的方向發展,我個人是對openEuler 社區寄予厚望的。”馬俊傑在採訪最後如是說道。

其實,在開發者真正擁抱開源的同時,一個開放、多樣且極具成長空間的開源社區不該被錯過,它將為開發者回饋更大的價值。無論是 openEuler 社區,還是參與其中的眾多開發者,相信都能在良性的互動中,相互促進,獲得快速且長足的發展。