開源十問, 社區新人快速上手指南

​第一次接觸開源,該從何處入手?前端

沒有基礎,怎麼在開源社區作貢獻?後端

如何成長爲開源社區的大牛?架構

……框架

剛接觸開源的你,可能還有不少困惑。別擔憂,SegmentFault 思否經過調查問卷的方式收集了開發者對於開源的十大問題,並邀請社區開源大咖對這些問題進行深刻講解,他們的答案或許可帶你輕鬆上手。機器學習

第一問:第一次接觸開源,我該從何處入手?

來自 openEuler 社區的開源大咖馬全一回答道,「想幹的事情、適合乾的事情和最終能幹的事情是否匹配,是決定未來工做是否幸福的關鍵。」選擇一個適合本身的開源項目相當重要。學習

那麼具體應該如何選擇適合本身的開源項目呢?能夠考慮如下四個方面:優化

  1. 技術趨勢,綜合考慮技術趨勢發展,選擇一個有前景的技術方向才能在將來的競爭中得到優點。
  2. 我的技術領域,須要開發者認真評估自身技術棧,選擇和自身能力、興趣愛好匹配的開源項目,只有真正有興趣投入的技術領域才能最大的發揮開發者的能動性,也纔有機會得到更大的成功。
  3. 合理調配投入時間,在工做、生活和家庭之間須要合理平衡投入,經過合理規劃可支配時間,保證對技術領域的研究和投入,只有持續的參與開源項目,才能從開源中得到優厚的回報。
  4. 創建開發者關係,和社區內的核心開發人員創建緊密的聯繫,良好的開發者關係有利於擴展人脈,爲在開源項目的發展創建紮實的基礎

第二問:沒有基礎,如何在開源社區作貢獻?

做爲開源社區裏活躍着的年輕開發者,華東師範大學、X-lab 實驗室成員夏小雅表示:「新人對於一個社區是格外珍貴的,在郵件列表、會議中收到的迴應和鼓勵也會很是多,這一點我深有體會。」因此千萬不要以爲本身是一個「後來者」就羞於表達。不懂就問、敢於表達、刷臉熟、主動請求幫助,積極參與討論、活躍貢獻是享受開源的第一步。搜索引擎

想要爲開源項目貢獻代碼,確實須要必定的技術功底。但沒有基礎就不能爲開源社區作貢獻了嗎?並非!Apache北京本土社區發起人姜寧強調,除了提交軟件代碼,還有不少參與開源貢獻的方式。做爲新手區的咱們,能夠先參與一些翻譯和本地化、文檔撰寫、設計等工做,這些非代碼貢獻對於項目也同等重要,還能幫助咱們快速和社區大牛熟悉起來,加深對開源項目的理解。spa

在新手如何參與開源這一問題上,馬全一也給出了一些建議:開放源代碼

  • 寫代碼遠遠不夠,開發者須要善用搜索引擎。同時與社區大牛創建溝通聯繫,去了解各種開源開發問題;
  • 仔細觀察,深刻思考。搜索引擎及社區大牛給出答案後,你能不能看到東西,能不能思考,這一點很重要;
  • 窮舉法。有時候思考的結果不見得對,你能夠把全部的可能試一遍;
  • 寫文章。輸出是最好的輸入,若是你可以給別人講明白這件事情,你本身對這個問題就是理解的;
  • 參與社區活動。

第三問:哪些開源項目是值得關注、有前景的?

挑選值得關注、有前景的開源項目須要考慮多種因素,好比技術和社區運營是否前沿 ——

  • 技術的前沿性既涵蓋技術自己的先進性,還體如今支撐該項技術的底層技術是否先進。好比開源軟件的基礎設施是否主流、開源,這決定了項目的開放性、透明性和可持續性。
  • 社區運營的前沿性體如今社區是否有完整的治理機制,是否具有多樣性,有不少企業參與項目貢獻,社區玩家是否覆蓋完整的產業鏈。此外,在挑選項目時,咱們還須要關注社區貢獻者的活躍度。

另外,開源項目是否在基金會也是一個重要的考量要素。

固然,在選擇值得關注的項目時,每一個開發者自己都是帶着本身的興趣和待解決問題的。找到本身感興趣的項目,開發者才能支撐本身投入更多時間作這件事。

目前,開源社區涵蓋大量項目,如 Vue.js、React.js、Angular 等前端項目,Django、Spring-Boot、next.js等後端框架,TensorFlow、PyTorch 等機器學習框架,還有華爲 MindSpore、KubeEdge 等新秀項目。

第四問:怎麼纔算加入開源社區?

  1. 成爲某個開源項目的用戶(user)
  2. 當你開始在該項目的郵件列表 (mailing list) 裏參與討論並提供補丁、文檔和建議,就會成功晉升爲開發者(Developer)或貢獻者 (Contributor )
  3. 當你不斷修煉 (提交 Bug 報告、貢獻代碼、參與郵件列表討論、參與社區建設),就有可能受邀成爲提交者(Committer)或維護者(Maintainer)
  4. 成爲有影響力的貢獻者後,可能會進一步被推選進入該開源項目的技術決策委員會等,更深度參與開源項目的管理與決策

每一個社區的文化和風格其實各不相同,若是把「加入」開源社區看做一個動做,那麼以前你在不經意間,使用開源社區某一個項目,就能夠當作是加入開源社區的開端。

第五問:如何成長爲開源社區的大牛?

Apache 軟件基金會首位華人董事,Apache SkyWalking 創始人吳晟向咱們介紹 ——

開源社區的大牛,每每是已經把開源的技術、品牌和宣傳,變成職業化的一羣人。

他們以開源的模式進行普遍的協做和雙贏。所以他們在開源社區的設計、開發、跨社區合做和基金會工做中,展示出高人一等的職業性素養,以及開源愛好者沒法比擬的超長投入時間。

相似你們熟悉的一萬小時定律,在開源圈子也一樣成立。當這些愛好變成了職業性,在高強度的投入後,其餘人會看到他們異乎尋常的成長速度。

因此,確保本身有足夠的時間來從事開源。讓本身參與的開源成爲經濟正向循環的一環,才能成爲你們眼裏所謂的「大牛」。

但與此同時,我並不建議你們去過度追求成爲「大牛」。畢竟開源在職業化、商業化以外,也能夠給貢獻者帶來屬於本身的成就感和知足感。並非每一個人都須要成爲一個職業開源人,普通開發者和愛好者也能享受到開源協做的樂趣。

此外,姜寧強調,對於普通開發者而言,若是你夢想有一天成爲開源社區的大牛,要從勇敢承擔開源項目的核心任務開始,在不斷貢獻中得到成長。

開源社聯合創始人劉天棟補充道「這個社會有提出問題的人,有製造問題的人,可是更須要的是解決問題的人。當咱們參與到開源貢獻裏,協助他人解決問題的時候,不但能更好的實現自我,也可以讓他人更快的認識咱們的價值,成爲他人眼中的「大牛」。而咱們參與開源貢獻的經歷就是咱們最有價值的履歷表。」

第六問:怎樣深度參與開源項目?

要回答這個問題,首先須要回答「怎樣纔算深度參與了開源項目?」——
成爲核心貢獻者擁有代碼倉庫直接寫入權限?
入選項目委員會會直接參與開源項目的管理與決策?
或者哪怕只修復過一次代碼核心 BUG?
……

這個問題見仁見智,業內並無一個絕對標準。

做爲潛伏在各大社區的開源大咖,SegmentFault 思否創始人、 CTO 祁寧表示 「其實,開發者並不須要把「深度」二字看得過於沉重—— 實際上國際上不少知名的開源大咖也都是在某次不經意的貢獻中「入坑」開源的,或許第一次只是爲了收穫一件社區周邊、或是使用開源軟件過程當中的順手爲之。隨後才逐漸深刻接觸、持續貢獻,從 Contributor 到 Maintainer。」因此深度參與開源項目和成爲開源大牛同樣,都是一個按部就班、水到渠成的過程。

但須要強調的是,若是你期待深度參與某一開源項目,或者成爲某一項目的核心成員,必定要多思考、多維度貢獻 —— 當你除了貢獻代碼、解決 issue 之外,也在開始思考項目的價值、規劃項目的前景時,就離深度參與不遠了。

第七問:開發者如何經過參與開源項目提高技術?

許多開發者,特別是應屆畢業生,大多面臨缺乏大型、高質量項目開發經驗的困境。較爲成熟的開源項目,不少已具有必定的生產環境應用經驗,參與貢獻的開發者能夠深刻項目,理解、學習優秀的代碼邏輯、架構設計等,收穫寶貴的研發經驗。

咱們都知道,做爲一名開發者,學習與解決問題的能力相當重要,開源項目能夠給予每位參與者充分的鍛鍊空間。具體來講,提高技術的方式大體分爲如下幾種:

  • 關注社區動態,緊跟技術潮流新方向,向技術選型庫中裝填新「彈藥」;
  • 閱讀開源項目中的高質量源碼,研究代碼邏輯,在平常工做中學以至用;
  • 持續貢獻文檔,經過提交 PR、貢獻 Issues 等方式,提高書面表達能力;
  • 經過郵件列表,issue或者代碼審查的方式與社區前輩交流, 學習他們的研發經驗,提高視野;
  • 與使用者多交流,根據反饋不斷優化項目,更好地理解產品、瞭解用戶需求;
  • 學會提問,在開源社區中,不是全部問題都可以獲得答案。提問者須要把問題的上下文環境講清楚,而且儘可能謙虛的表達纔可能獲得幫助,當你學會提問,溝通的能力勢必也會提高很多。

在 SegmentFault 思否 COO、開源社副執行長江波看來,參與開源項目是初學者、大學生最好的練兵場,除了提高技術,還會有不少額外收益,「近兩年,SegmentFault 思否一直在支持中科院軟件所和 openEuler 社區聯合發起的開源之夏活動,有很多大學生在社區導師的指導下提高技術、結識大牛、收穫了寶貴的工做機會,或經過選舉成爲開源項目的 Committer、受到了社區的承認。而 9 年前,SegmentFault 的誕生也和開源息息相關,SegmentFault 最先的幾位合夥人正是由於在大學時期參與開源項目相識,後來一塊兒成立了公司。」

參與開源是彎道超車的最佳路徑,快讓開源社區成爲你的成長加速器吧!

第八問:項目捐給開源軟件基金會與不捐開源軟件給基金會,有什麼區別?

CNCF大使王澤鋒介紹「通常來說,基金會對於項目的治理是有開放性要求的,對於其餘潛在的參與者來講,參與一個基金會管理的開源項目,能夠有穩定的心理預期。」

參與開源軟件基金會管理的開源項目時,只要有必定足夠的投入,就能在社區中得到相應的話語權,進而影響社區的發展,把本身對於開源項目的發展方向和訴求推動社區。相反,個別企業的開源項目,開放性和連續性是存在一些問題的 —— 近年來發生了不少相似的事件:MongoDB、Redis、ELK 等項目修改開源協議,背後實際上是商業公司控制開源項目時,開源與商業變現的衝突,其參與夥伴便失去了保障。

此外,姜寧補充道:「捐獻給基金會的項目還會有更完善的法律保障。」開源軟件容許使用、修改、分發,可是用什麼樣的方式呢?這裏就涉及到開源協議的問題,不一樣於商業軟件靠知識產權控制,開源軟件是靠 License 控制的,對開源社區而言,License 更像是開源社區的「基本法」,它是跨國別跨地域的存在,甚至是全球的基本法。

第九問:開源社區如何能持續發展?

openEuler 社區品牌宣傳委員會主席梁冰向咱們介紹,一個開源社區可否得到持續發展,關鍵要看如下四個關鍵指標:

1.任何社區運營的關鍵指標都是開發者
開發者是社區的靈魂,開發者的數量和質量決定了這個社區的項目的數量和質量。

2. 第二個指標是CODE
咱們有了高質量和高數量開發者,天然會有開發者帶來高質量的代碼。

3. 第三個指標是用戶案例
任何一個開源社區對本身全部的定義,都取決於用戶對你的定義。只有你有足夠多的用戶才能反饋使用中的具體需求,對項目造成一個很是正向的推進。這其實跟你作產品營銷是同樣的,一個產品沒有用戶就活不下來,一個開源項目沒有用戶也是活不下來的。

4.第四個是文檔
就像產品須要手冊同樣,若是開源項目沒有很好的文檔,不少開發者來了無從下手。因此對於一個成熟、友好的社區,必定要有一套文檔去指導你們如何用,如何參與,如何來貢獻。

管理和運營社區是開源項目持續發展的核心,一個健康、友好的社區須要完整的治理制度,公平開放的社區氛圍,這能夠不斷吸引新的貢獻者加入。固然,資金、資源、基金會的幫助也對開源項目的持續發展有很大幫助,不過最重要的仍是項目核心團隊不斷地努力與持續的投入。

第十問:開放治理對社區的成長到底意味着什麼?

openEuler 在過去一年凝聚了超過 3000 名貢獻者,有超過 4 萬次下載、4萬社區用戶,也吸引了中國移動、中國聯通、銀聯、飛騰等 60 多家企業、機構和高校的加入。全方位的快速發展就與社區的開放治理密切相關.

梁冰向記者介紹,「只開放源代碼,沒有社區開放治理的項目是沒有前途的。開放治理對於一個開源項目而言就比如養育和陪伴它成長,相當重要,這背後也體現了開源項目的成熟度和嚴謹、認真、持續投入的態度。」

而以 MindSpore 舉例,MindSpore 多是國內第一個採用開放社區治理的深度學習開源框架。在 MindSpore 社區裏,有着很是完善的章程,多國家、多樣性團隊組成的技術治理委員會,全部流程都在社區公開的郵件列表中,一切決定都有標準化的章程做爲依照。公開和開放讓 MindSpore 受到了衆多開發者的信賴和支持,得以快速發展。

咱們經常說「Community Over Code(社區勝於代碼)」,一個活躍、開放、友好的社區對開源項目而言,意義非凡。健康的社區甚至遠遠比優秀的代碼更重要 —— 代碼不夠優秀沒關係,只要持續有貢獻者,代碼即可以被不斷優化、迭代,但若是沒有社區,再優秀的代碼也會付之東流。只有對新老成員一視同仁、公平開放的社區氛圍,纔可以持續吸引新成員加入項目貢獻,也爲開源項目帶來持續的生機與活力。

以上十問是否解答了你心中對開源的困惑呢?春風十里,不如代碼和你。開源大勢所趨,快和咱們一塊兒上車吧!

相關文章
相關標籤/搜索