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