<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          新手如何參與 GitHub 開源項目

          共 3849字,需瀏覽 8分鐘

           ·

          2022-05-30 02:28



          很多人都知道?GitHub?上面有非常多優(yōu)秀的開源項目, 如果能夠參與到一些開源項目中, 對自己的技術(shù)提升和職業(yè)發(fā)展都是非常有幫助的. 對于項目經(jīng)驗不足的應(yīng)屆生來說, 也可以豐富一下自己的簡歷的~

          有些同學說, 我還是個技術(shù)小白, 怎么參與開源項目呢? 應(yīng)該怎么找到自己適合的項目呢? 下面就來詳細展開說說.

          參與開源項目的好處

          參與開源項目最有趣的地方就是可以開闊自己的眼界, 鏈接到世界各地的人, 讓自己加入到某個圈子里.

          深入到感興趣的圈子

          比如你對某種小眾的語言感興趣, 你可以在這些項目中找到非常多志同道合的朋友. 有時候開源項目組的人會組織一些線下的?meetup, 你有機會接觸更多的人, 甚至是一些技術(shù)大牛.

          幫你找到工作

          當你對某個開源項目非常熟悉, 對它的源碼和整個項目的歷史變動以及未來規(guī)劃設(shè)計都非常清楚, 你就很可能被邀請到做類似產(chǎn)品的公司團隊中工作. 也有非常多小初創(chuàng)公司在社區(qū)里面尋找合適的兼職/全職/遠程程序員. 你會發(fā)現(xiàn)有很多獲得額外收入的途徑, 甚至是開拓自己的副業(yè), 又或者成為一個自由職業(yè)者. 總之有可能收獲一些意外的機會.

          提升自己的影響力

          在開源項目中貢獻代碼, 可以得到來自其他人的 Code Review, 提升自己的代碼能力, 文檔, 溝通和組織能力等. 當你貢獻的足夠多, 還有可能成為項目的核心人員, 領(lǐng)導項目的發(fā)展等機會, 建立自己的技術(shù)影響力.

          既然參與開源項目的建設(shè)有這么多的好處, 作為一個小白或者對自己不太自信的同學, 應(yīng)該怎么著手開始呢? 有沒有比較簡單和容易上手的路線呢?

          到底怎么參與開源項目

          很多同學一上來很著急, 覺得自己水平還不夠, 源碼看不懂, 不知道怎么做開源貢獻, 所以這個計劃就一直擱置著, 干著急.

          其實開源項目不僅僅是代碼, 各種水平或者階段的程序員都可以找到自己能夠做貢獻的地方. 比如:

          • 當你發(fā)現(xiàn)項目的介紹中有錯別字, 或者URL鏈接已經(jīng)失效, 你就可以提交一個?Pull Requests?來修改這些錯誤.
          • 一個你經(jīng)常調(diào)用的包 (package), 如果發(fā)現(xiàn)它的測試用例不是很全面, 你可以專門為這個項目添加幾個測試.
          • 最近學習/工作中高頻使用的一個開源框架, 你覺得它的例子寫的不夠好, 對新手不夠友好, 這時候你就可以在文檔中添加一些易讀易理解的例子.
          • 當你看到?Stack Overflow 或者一些開發(fā)者論壇上有人問某個開源項目怎么用的問題的時候, 你如果知道并回答了, 這也是貢獻的過程.

          上面舉的一些例子都比較容易上手, 不管你是一個在校生還是一個編程小白, 只要你會寫東西, 喜歡幫助別人, 樂于分享, 能夠細心和站在用戶使用的角度, 去優(yōu)化這個開源項目, 總有很多地方你可以參與進來.

          開源項目不只是代碼, 你可以想像它其實是一個來自世界各地的志愿者組成的組織, 大家的共同目標是打造一個產(chǎn)品(比如一款桌面游戲, 一個數(shù)據(jù)可視化的項目等), 產(chǎn)品提供給任何有需要的個人或者公司使用.

          在組織中需要有分工合作, 比如有人負責寫文檔, 規(guī)范的文檔提供給外界使用, 就像一個說明書. 有人負責組織一些線下的 meetup, 有人負責整理郵件列表, 有人負責規(guī)劃未來的工作要點, 有人負責寫更多的使用 example, 讓用戶能夠更快的獲得他們想要的東西. 有的人負責寫核心的代碼等等.

          所以一上來不要太著急去寫代碼, 先讓自己沉到社區(qū)里面去, 看看大家討論什么問題, github 的 issues 板塊有大家提出來的一些bug或者存在的問題. 你可以先從一些邊邊角角的地方開始, 整理文檔也是一種貢獻, 時間慢慢積累, 熟悉項目后才有可能提供核心代碼的貢獻.

          說了這么多, 讓我們來看看開源項目的一些共同特點.

          開源項目的通用結(jié)構(gòu)

          每個開源項目的人員組成和項目結(jié)構(gòu)都是不一樣的, 但是每個開源項目都會遵循一些通用的結(jié)構(gòu). 了解這些通用的結(jié)構(gòu)可以讓你在不同的開源項目中切換的更加游刃有余. 一個開源項目一般都會有以下的文件:

          • README: README.md 是一個項目總的介紹入口, 會在github的主頁中展示, 一般會介紹項目是做什么的, 有什么功能, 如何啟動和參與項目等.
          • LICENSE: 每個開源項目都必須有一個開源協(xié)議 open source license. 想了解更多可以看阮一峰老師的 如何選擇開源許可證.
          • CONTRIBUTING: 對于想要參與開源項目的同學來說, 這個文檔非常重要, 如何參與開源項目, 方式和途徑有哪些這里會找到答案.
          • 其他文件: 較為優(yōu)秀和成熟的開源項目, 都會有tutorials, 使用示例, 詳盡的文檔等等, 來幫助新人更快的熟悉項目.

          除了以上的文件, GitHub還提供一些板塊方便用戶跟蹤項目的 Issues(問題/提升), Pull Requests(代碼合并請求), Roadmap(藍圖), Wiki(百科) 等. 這些板塊均可自行瀏覽和學習, 較為大型的項目還會提供mailing lists(郵件列表), 比如 python 社區(qū)就有很多不同的郵件列表, 有的專門是開發(fā)專用的郵箱訂閱, 有些專門用來討論一般性的問題.


          國外的項目還會配有 Slack?(即時通訊工具) 方便大家討論, 國內(nèi)的開源項目可以在 README.md 文件上找到聯(lián)系人的微信進入群聊或者是釘釘.

          以上的各種文檔和工具都是為了讓大家更快速了解項目, 更方便討論問題, 提供更高效的交流合作.

          怎么找到你想看的項目

          GitHub 上面的項目琳瑯滿目, 怎么找到適合自己入手的項目呢?

          1. 選擇一種語言

          首先從選擇你熟悉的語言開始, 比如Python, Java, JavaScript等. 再去找該語言下的項目. 最好是選擇受眾比較多的項目, 這樣社區(qū)比較活躍, 你提的問題一兩天內(nèi)就有人回復(fù). 怎么看社區(qū)的活躍度呢? 一方面可以看這個項目的Watch, Star, Fork數(shù)量.


          其次可以點擊項目主頁的Insights這個tab查看過去一周, 過去一個月的代碼合并次數(shù)以及參與的人數(shù)來看看活不活躍(社區(qū)還活著嗎)?


          2. 找到合適且感興趣的項目



          • 可以到?GitHub Explore?隨便逛逛, 看不同的?GitHub Topics,?GitHub Trending等.
          • HelloGitHub(https://github.com/521xueweihan/HelloGitHub)?這個項目每個月出一刊, 有點類似一個雜志, 在這里也許能夠找到你感興趣的內(nèi)容
          • Follow 一些 GitHub 上面的大神. 看看他們關(guān)注什么, 他們做了什么. 可以先從一個頂尖的項目切入, 找到項目貢獻最頻繁的人, 關(guān)注他們.
          • 找到感興趣的項目記得 star 和 watch(訂閱) 這個項目, 定時收到郵件通知, 就是開始關(guān)注和了解.

          3. 篩選適合新手解決的issue

          GitHub 有標簽的功能, 可以對issues進行分類, 你可以通過篩選, 找到適合新手, 簡單的問題, 看看自己能不能理解并解決這類問題. 具體如何篩選可以看下面這張圖. 找到 good first issue?,?beginner?,?easy 這些標簽, 適合新手上路的就對啦!??


          好啦艾瑞巴蒂, 講了這么多, 小豆作為過來人, 最后還有一些小技巧可以分享給大家~


          不要走馬觀花

          如果一直只是浮在表面的看, 不去關(guān)注, 不去行動, 就會發(fā)現(xiàn)自己很難鉆進一個項目里. 不要對自己要求很高, 也不要追求完美, 先找到一個自己覺得還可以的項目, 未來幾個月就啃這么一個項目. 如果你能夠把一個啃下來, 后續(xù)切換到其他項目是非常快速的.

          長期堅持

          也許短期內(nèi)不會看到什么進步, 也許很長一段時間內(nèi)自己在項目中仍然是個小透明. 給自己個半年時間, 長期去做. 不要因為一時半會兒沒有進步, 項目也無法寫到自己的簡歷里就灰心喪氣, 要有延遲滿足的能力.

          放下焦慮, 平常心看待

          一路上你會發(fā)現(xiàn)很多大牛, 也許你會發(fā)現(xiàn)自己差的東西太多了, 沒有關(guān)系, 從今天開始撿起來, 今天開始行動起來. 種一棵樹最好的時間是十年前, 其次就是今天啦.

          文章中提及很多鏈接,?沒有辦法通過超鏈接的形式放到文章中,?我把相關(guān)鏈接都一一列在參考資料中, 感興趣可以深入探索~

          參考資料:

          • https://opensource.guide/how-to-contribute/
          • GitHub: https://github.com/
          • Meetup: https://www.meetup.com/home/
          • Pull Requests:?http://www.ruanyifeng.com/blog/2017/07/pull_request.html
          • Stack Overflow:?https://www.zhihu.com/question/20824615
          • Code Review:?https://juejin.cn/post/6844904009065578510
          • Slack:?https://slack.com/
          • GitHub Explore: https://github.com/explore

          • GitHub Topics: https://github.com/topics

          • GitHub Trending: https://github.com/trending

          瀏覽 119
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天堂AV资源在线 | 亚洲日韩国产精品 | 成人毛片在线大全免费 | 草草网站 | 人人操人人靠 |