第一次接觸開源,該從何處入手?
沒有基礎(chǔ),怎么在開源社區(qū)做貢獻(xiàn)?
如何成長為開源社區(qū)的大牛?
……
剛接觸開源的你,可能還有很多困惑。別擔(dān)心,SegmentFault 思否通過調(diào)查問卷的方式收集了開發(fā)者對于開源的十大問題,并邀請社區(qū)開源大咖對這些問題進行深入講解,他們的答案或許可帶你輕松上手。
第一問:第一次接觸開源,我該從何處入手?
來自 openEuler 社區(qū)的開源大咖馬全一回答道,“想干的事情、適合干的事情和最終能干的事情是否匹配,是決定將來工作是否幸福的關(guān)鍵。”選擇一個適合自己的開源項目至關(guān)重要。
那么具體應(yīng)該如何選擇適合自己的開源項目呢?可以考慮以下四個方面:
1. 技術(shù)趨勢,綜合考慮技術(shù)趨勢發(fā)展,選擇一個有前景的技術(shù)方向才能在未來的競爭中獲得優(yōu)勢。
2. 個人技術(shù)領(lǐng)域,需要開發(fā)者認(rèn)真評估自身技術(shù)棧,選擇和自身能力、興趣愛好匹配的開源項目,只有真正有興趣投入的技術(shù)領(lǐng)域才能最大的發(fā)揮開發(fā)者的能動性,也才有機會獲得更大的成功。
3. 合理調(diào)配投入時間,在工作、生活和家庭之間需要合理平衡投入,通過合理規(guī)劃可支配時間,保證對技術(shù)領(lǐng)域的研究和投入,只有持續(xù)的參與開源項目,才能從開源中獲得優(yōu)厚的回報。
4. 建立開發(fā)者關(guān)系,和社區(qū)內(nèi)的核心開發(fā)人員建立緊密的聯(lián)系,良好的開發(fā)者關(guān)系有利于擴展人脈,為在開源項目的發(fā)展建立扎實的基礎(chǔ)
第二問:沒有基礎(chǔ),如何在開源社區(qū)做貢獻(xiàn)?
作為開源社區(qū)里活躍著的年輕開發(fā)者,華東師范大學(xué)、X-lab 實驗室成員夏小雅表示:“新人對于一個社區(qū)是格外珍貴的,在郵件列表、會議中收到的回應(yīng)和鼓勵也會非常多,這一點我深有體會?!彼郧f不要覺得自己是一個“后來者”就羞于表達(dá)。不懂就問、勇于表達(dá)、刷臉熟、主動請求幫助,積極參與討論、活躍貢獻(xiàn)是享受開源的第一步。
想要為開源項目貢獻(xiàn)代碼,確實需要一定的技術(shù)功底。但沒有基礎(chǔ)就不能為開源社區(qū)做貢獻(xiàn)了嗎?并不是!Apache北京本土社區(qū)發(fā)起人姜寧強調(diào),除了提交軟件代碼,還有很多參與開源貢獻(xiàn)的方式。作為新手區(qū)的我們,可以先參與一些翻譯和本地化、文檔撰寫、設(shè)計等工作,這些非代碼貢獻(xiàn)對于項目也同等重要,還能幫助我們快速和社區(qū)大牛熟悉起來,加深對開源項目的理解。
在新手如何參與開源這一問題上,馬全一也給出了一些建議:
- 寫代碼遠(yuǎn)遠(yuǎn)不夠,開發(fā)者需要善用搜索引擎。同時與社區(qū)大牛建立溝通聯(lián)系,去了解各類開源開發(fā)問題;
- 仔細(xì)觀察,深入思考。搜索引擎及社區(qū)大牛給出答案后,你能不能看到東西,能不能思考,這一點很重要;
- 窮舉法。有時候思考的結(jié)果不見得對,你可以把所有的可能試一遍;
- 寫文章。輸出是最好的輸入,如果你能夠給別人講明白這件事情,你自己對這個問題就是理解的;
第三問:哪些開源項目是值得關(guān)注、有前景的?挑選值得關(guān)注、有前景的開源項目需要考慮多種因素,比如技術(shù)和社區(qū)運營是否前沿 ——技術(shù)的前沿性既涵蓋技術(shù)本身的先進性,還體現(xiàn)在支撐該項技術(shù)的底層技術(shù)是否先進。比如開源軟件的基礎(chǔ)設(shè)施是否主流、開源,這決定了項目的開放性、透明性和可持續(xù)性。
社區(qū)運營的前沿性體現(xiàn)在社區(qū)是否有完整的治理機制,是否具備多樣性,有很多企業(yè)參與項目貢獻(xiàn),社區(qū)玩家是否覆蓋完整的產(chǎn)業(yè)鏈。此外,在挑選項目時,我們還需要關(guān)注社區(qū)貢獻(xiàn)者的活躍度。
另外,開源項目是否在基金會也是一個重要的考量要素。當(dāng)然,在選擇值得關(guān)注的項目時,每個開發(fā)者本身都是帶著自己的興趣和待解決問題的。找到自己感興趣的項目,開發(fā)者才能支撐自己投入更多時間做這件事。目前,開源社區(qū)涵蓋大量項目,如 Vue.js、React.js、Angular 等前端項目,Django、Spring-Boot、next.js等后端框架,TensorFlow、PyTorch 等機器學(xué)習(xí)框架,還有華為 MindSpore、KubeEdge 等新秀項目。
2. 當(dāng)你開始在該項目的郵件列表 (mailing list) 里參與討論并提供補丁、文檔和建議,就會成功晉升為開發(fā)者(Developer)或貢獻(xiàn)者 (Contributor )
3. 當(dāng)你不斷修煉 (提交 Bug 報告、貢獻(xiàn)代碼、參與郵件列表討論、參與社區(qū)建設(shè)),就有可能受邀成為提交者(Committer)或維護者(Maintainer)
4. 成為有影響力的貢獻(xiàn)者后,可能會進一步被推選進入該開源項目的技術(shù)決策委員會等,更深度參與開源項目的管理與決策
每個社區(qū)的文化和風(fēng)格其實各不相同,如果把“加入”開源社區(qū)看作一個動作,那么之前你在不經(jīng)意間,使用開源社區(qū)某一個項目,就可以當(dāng)做是加入開源社區(qū)的開端。Apache 軟件基金會首位華人董事,Apache SkyWalking 創(chuàng)始人吳晟向我們介紹 ——開源社區(qū)的大牛,往往是已經(jīng)把開源的技術(shù)、品牌和宣傳,變成職業(yè)化的一群人。他們以開源的模式進行廣泛的協(xié)作和共贏。因此他們在開源社區(qū)的設(shè)計、開發(fā)、跨社區(qū)合作和基金會工作中,展現(xiàn)出高人一等的職業(yè)性素養(yǎng),以及開源愛好者無法比擬的超長投入時間。類似大家熟悉的一萬小時定律,在開源圈子也同樣成立。當(dāng)這些愛好變成了職業(yè)性,在高強度的投入后,其他人會看到他們異乎尋常的成長速度。所以,確保自己有足夠的時間來從事開源。讓自己參與的開源成為經(jīng)濟正向循環(huán)的一環(huán),才能成為大家眼里所謂的「大?!?。但與此同時,我并不建議大家去過分追求成為「大牛」。畢竟開源在職業(yè)化、商業(yè)化之外,也可以給貢獻(xiàn)者帶來屬于自己的成就感和滿足感。并不是每個人都需要成為一個職業(yè)開源人,普通開發(fā)者和愛好者也能享受到開源協(xié)作的樂趣。 此外,姜寧強調(diào),對于普通開發(fā)者而言,如果你夢想有一天成為開源社區(qū)的大牛,要從勇敢承擔(dān)開源項目的核心任務(wù)開始,在不斷貢獻(xiàn)中獲得成長。開源社聯(lián)合創(chuàng)始人劉天棟補充道“這個社會有提出問題的人,有制造問題的人,但是更需要的是解決問題的人。當(dāng)我們參與到開源貢獻(xiàn)里,協(xié)助他人解決問題的時候,不但能更好的實現(xiàn)自我,也能夠讓他人更快的認(rèn)識我們的價值,成為他人眼中的「大牛」。而我們參與開源貢獻(xiàn)的經(jīng)歷就是我們最有價值的履歷表。”要回答這個問題,首先需要回答“怎樣才算深度參與了開源項目?”——
成為核心貢獻(xiàn)者擁有代碼倉庫直接寫入權(quán)限?
入選項目委員會會直接參與開源項目的管理與決策?
或者哪怕只修復(fù)過一次代碼核心 BUG?這個問題見仁見智,業(yè)內(nèi)并沒有一個絕對標(biāo)準(zhǔn)。作為潛伏在各大社區(qū)的開源大咖,SegmentFault 思否創(chuàng)始人、 CTO 祁寧表示 “其實,開發(fā)者并不需要把「深度」二字看得過于沉重—— 實際上國際上很多知名的開源大咖也都是在某次不經(jīng)意的貢獻(xiàn)中「入坑」開源的,或許第一次只是為了收獲一件社區(qū)周邊、或是使用開源軟件過程中的順手為之。隨后才逐漸深入接觸、持續(xù)貢獻(xiàn),從 Contributor 到 Maintainer?!彼陨疃葏⑴c開源項目和成為開源大牛一樣,都是一個循序漸進、水到渠成的過程。但需要強調(diào)的是,如果你期待深度參與某一開源項目,或者成為某一項目的核心成員,一定要多思考、多維度貢獻(xiàn) —— 當(dāng)你除了貢獻(xiàn)代碼、解決 issue 以外,也在開始思考項目的價值、規(guī)劃項目的前景時,就離深度參與不遠(yuǎn)了。第七問:開發(fā)者如何通過參與開源項目提升技術(shù)?許多開發(fā)者,特別是應(yīng)屆畢業(yè)生,大多面臨缺少大型、高質(zhì)量項目開發(fā)經(jīng)驗的困境。較為成熟的開源項目,很多已具備一定的生產(chǎn)環(huán)境應(yīng)用經(jīng)驗,參與貢獻(xiàn)的開發(fā)者可以深入項目,理解、學(xué)習(xí)優(yōu)秀的代碼邏輯、架構(gòu)設(shè)計等,收獲寶貴的研發(fā)經(jīng)驗。我們都知道,作為一名開發(fā)者,學(xué)習(xí)與解決問題的能力至關(guān)重要,開源項目可以給予每位參與者充分的鍛煉空間。具體來說,提升技術(shù)的方式大致分為以下幾種:- 關(guān)注社區(qū)動態(tài),緊跟技術(shù)潮流新方向,向技術(shù)選型庫中裝填新「彈藥」;
- 閱讀開源項目中的高質(zhì)量源碼,研究代碼邏輯,在日常工作中學(xué)以致用;
- 持續(xù)貢獻(xiàn)文檔,通過提交 PR、貢獻(xiàn) Issues 等方式,提升書面表達(dá)能力;
- 通過郵件列表,issue或者代碼審查的方式與社區(qū)前輩交流, 學(xué)習(xí)他們的研發(fā)經(jīng)驗,提升視野;
- 與使用者多交流,根據(jù)反饋不斷優(yōu)化項目,更好地理解產(chǎn)品、了解用戶需求;
- 學(xué)會提問,在開源社區(qū)中,不是所有問題都能夠得到答案。提問者需要把問題的上下文環(huán)境講清楚,并且盡量謙虛的表達(dá)才可能得到幫助,當(dāng)你學(xué)會提問,溝通的能力勢必也會提升不少。
在 SegmentFault 思否 COO、開源社副執(zhí)行長江波看來,參與開源項目是初學(xué)者、大學(xué)生最好的練兵場,除了提升技術(shù),還會有很多額外收益,“近兩年,SegmentFault 思否一直在支持中科院軟件所和 openEuler 社區(qū)聯(lián)合發(fā)起的開源之夏活動,有不少大學(xué)生在社區(qū)導(dǎo)師的指導(dǎo)下提升技術(shù)、結(jié)識大牛、收獲了寶貴的工作機會,或通過選舉成為開源項目的 Committer、受到了社區(qū)的認(rèn)可。而 9 年前,SegmentFault 的誕生也和開源息息相關(guān),SegmentFault 最早的幾位合伙人正是因為在大學(xué)時期參與開源項目相識,后來一起成立了公司?!?/span>參與開源是彎道超車的最佳路徑,快讓開源社區(qū)成為你的成長加速器吧!第八問:項目捐給開源軟件基金會與不捐開源軟件給基金會,有什么區(qū)別?CNCF大使王澤鋒介紹“一般來講,基金會對于項目的治理是有開放性要求的,對于其他潛在的參與者來說,參與一個基金會管理的開源項目,可以有穩(wěn)定的心理預(yù)期?!?/span>參與開源軟件基金會管理的開源項目時,只要有一定足夠的投入,就能在社區(qū)中獲得相應(yīng)的話語權(quán),進而影響社區(qū)的發(fā)展,把自己對于開源項目的發(fā)展方向和訴求推進社區(qū)。相反,個別企業(yè)的開源項目,開放性和連續(xù)性是存在一些問題的 —— 近年來發(fā)生了很多類似的事件:MongoDB、Redis、ELK 等項目修改開源協(xié)議,背后其實是商業(yè)公司控制開源項目時,開源與商業(yè)變現(xiàn)的沖突,其參與伙伴便失去了保障。此外,姜寧補充道:“捐獻(xiàn)給基金會的項目還會有更完善的法律保障?!遍_源軟件允許使用、修改、分發(fā),但是用什么樣的方式呢?這里就涉及到開源協(xié)議的問題,不同于商業(yè)軟件靠知識產(chǎn)權(quán)控制,開源軟件是靠 License 控制的,對開源社區(qū)而言,License 更像是開源社區(qū)的“基本法”,它是跨國別跨地域的存在,甚至是全球的基本法。第九問:開源社區(qū)如何能持續(xù)發(fā)展?openEuler 社區(qū)品牌宣傳委員會主席梁冰向我們介紹,一個開源社區(qū)能否獲得持續(xù)發(fā)展,關(guān)鍵要看以下四個關(guān)鍵指標(biāo):1. 任何社區(qū)運營的關(guān)鍵指標(biāo)都是開發(fā)者開發(fā)者是社區(qū)的靈魂,開發(fā)者的數(shù)量和質(zhì)量決定了這個社區(qū)的項目的數(shù)量和質(zhì)量。我們有了高質(zhì)量和高數(shù)量開發(fā)者,自然會有開發(fā)者帶來高質(zhì)量的代碼。任何一個開源社區(qū)對自己所有的定義,都取決于用戶對你的定義。只有你有足夠多的用戶才能反饋使用中的具體需求,對項目形成一個非常正向的推動。這其實跟你做產(chǎn)品營銷是一樣的,一個產(chǎn)品沒有用戶就活不下來,一個開源項目沒有用戶也是活不下來的。就像產(chǎn)品需要手冊一樣,如果開源項目沒有很好的文檔,很多開發(fā)者來了無從下手。所以對于一個成熟、友好的社區(qū),一定要有一套文檔去指導(dǎo)大家如何用,如何參與,如何來貢獻(xiàn)。管理和運營社區(qū)是開源項目持續(xù)發(fā)展的核心,一個健康、友好的社區(qū)需要完整的治理制度,公平開放的社區(qū)氛圍,這可以不斷吸引新的貢獻(xiàn)者加入。當(dāng)然,資金、資源、基金會的幫助也對開源項目的持續(xù)發(fā)展有很大幫助,不過最重要的還是項目核心團隊不斷地努力與持續(xù)的投入。第十問:開放治理對社區(qū)的成長到底意味著什么?openEuler 在過去一年凝聚了超過 3000 名貢獻(xiàn)者,有超過 4 萬次下載、4萬社區(qū)用戶,也吸引了中國移動、中國聯(lián)通、銀聯(lián)、飛騰等 60 多家企業(yè)、機構(gòu)和高校的加入。全方位的快速發(fā)展就與社區(qū)的開放治理密切相關(guān).梁冰向記者介紹,“只開放源代碼,沒有社區(qū)開放治理的項目是沒有前途的。開放治理對于一個開源項目而言就好比養(yǎng)育和陪伴它成長,至關(guān)重要,這背后也體現(xiàn)了開源項目的成熟度和嚴(yán)謹(jǐn)、認(rèn)真、持續(xù)投入的態(tài)度?!?/span>而以 MindSpore 舉例,MindSpore 可能是國內(nèi)第一個采用開放社區(qū)治理的深度學(xué)習(xí)開源框架。在 MindSpore 社區(qū)里,有著非常完善的章程,多國家、多樣性團隊組成的技術(shù)治理委員會,所有流程都在社區(qū)公開的郵件列表中,一切決定都有標(biāo)準(zhǔn)化的章程作為依照。公開和開放讓 MindSpore 受到了眾多開發(fā)者的信賴和支持,得以快速發(fā)展。我們常常說“Community Over Code(社區(qū)勝于代碼)”,一個活躍、開放、友好的社區(qū)對開源項目而言,意義非凡。健康的社區(qū)甚至遠(yuǎn)遠(yuǎn)比優(yōu)秀的代碼更重要 —— 代碼不夠優(yōu)秀不要緊,只要持續(xù)有貢獻(xiàn)者,代碼便可以被不斷優(yōu)化、迭代,但如果沒有社區(qū),再優(yōu)秀的代碼也會付之東流。只有對新老成員一視同仁、公平開放的社區(qū)氛圍,才能夠持續(xù)吸引新成員加入項目貢獻(xiàn),也為開源項目帶來持續(xù)的生機與活力。
以上十問是否解答了你心中對開源的困惑呢?春風(fēng)十里,不如代碼和你。開源大勢所趨,快和我們一起上車吧!