第七屆曼陀號計畫分享 - 影響力:參與開源軟體社群

更新於 發佈於 閱讀時間約 9 分鐘

曼陀號是一個為期六個月,邀請各領域專家擔任船長,分享經驗傳承來幫助水手縮短摸索時間並突破職涯瓶頸的計畫。我參加的是 Enginearing 組,在今年擔任助教的角色~

第七屆 Enginearing 組的船長是顧職創辦人 Bryan,本次月會分享的內容「影響力:參與開源軟體社群」介紹了入門參與開源的方式,也有一些我的見解、查的補充資料來提供大家參考,對開源軟體有興趣的大家可以繼續看下去!

Why Open Source

  1. 閲讀陌生程式碼 / Debug 的能力:
    - 透過閱讀 Commit/ Issue 等歷史資訊,嘗試看出軟體發展設計的方向。
    - 在陌生的程式碼中嘗試復現、解決問題也是工作常會用到的技能。
  2. 學習多人協作框架設計:
    - 在大規模專案中,透過模組化抽象化設計,以及清晰定義的介面,可以將動作侷限在各自負責的模組範圍內,避免多人同時修改同一份檔案,降低產生衝突(conflict)的機率。更適合已經有框架設計概念基礎的人觀察開源的設計,之後要實作可能更有方向。
  3. 接觸協作、寫測試、重構、處理效能、CI/CD:
    如果在工作中沒有這些機會,開源是個可以學習的機會,但可能對 Junior 來說較為複雜,建議可以尋求更資深的人導覽或建議。
  4. 可以跟大神們一同工作:
    你可能暫時還無法進入Google 但可以參與 Google 的開源專案跟他們一起工作。
筆者小建議:開源社群聽起來很酷也很有參與的價值,但如果 Junior 程式開發基礎概念不穩,很容易加深挫敗感。可以考慮從公司內部的專案開始練習閱讀程式架構,像是考古詢問資深前輩當初的設計原則,來熟悉模組化等概念。

How Open Source

已經有了想參與開源的想法,如何選擇適合自己的專案,這邊有一些開源專案資源:

  1. GitHub Trending (https://github.com/trending)
  2. Awesome List (https://github.com/sindresorhus/awesome)
  3. 工作常用的開源專案:👍
    - 熟悉使用
    - 有機會邊上班邊當 Contributor
    - 以公司的角度來說,會有各路大神幫公司看功能
筆者個人認為,除非公司使用的專案和功能非常龐大,有開源的協助能大幅提升效率及產值,否則在資安及沒有立即效益的考量下,公司內部很難同意在工作的同時貢獻開源,更多的情況是僅將開源軟體Fork 到 Private 使用。

Quick See

可以以這個專案作為參考,對照一下的架構內容: https://github.com/googleapis/google-cloud-python

典型專案結構介紹

通常以下文件越完善,能降低專案入門的門檻,規範貢獻者的行為,也會有更多人使用,這點後面也會再提到~

  1. README.md
    點入專案第一個看的,通常包含專案目的、架構、如何啟動、如何使用 (demo code)、contributors 等資訊,好的 readme 應該可以幫助你了解專案主要目的,並順利搭建環境運行。
  2. CONTRIBUTING.md
    貢獻者指南,主要包含參與貢獻需要了解的事,如commit msg 、流程要符合規範,是否有文件要簽核 (e.g. apache airflow) 等等。
  3. LICENSE
    開源許可證,說明並規範這份開源軟體能如何被使用,詳細說明分類可以參考這裡,如: - GPL: 崇尚自由,並規定只要「引用/修改/衍生自 GPL 授權程式碼的軟體也必須採用GPL授權」,且要求未來所有的使用者、開發者也必須採用同樣的條款。 - Apache, MIT: 偏向鼓勵原始碼分享、允許代碼修改、衍生再發佈(開源或商業軟體皆可)
  4. 文件內容之外,同樣重要的其他參考:Issue、PR、Wiki,可以由這些內容觀察社群整體的氛圍
    - Issue: 建立專案工作事項的地方,工作事項可以是新的 feature、回報 bug 等,能看出事項的歷史發展,包含關於細節的討論,是否有已經完成的 branch、milestone 或 pull request等等。
    - PR, Pull Request : 一個功能或修正完成後,會發出 PR, 由專案維護者 (Maintainer) 審核過後才能 merge 到主程式中,因此 PR 發出及完成的速度可以看出 Maintainer 及相關社群的活躍程度。
    - Wiki: 存放專案相關的文件,相較於前兩項,wiki 不是一個開源必要的項目,但一定是一個大大的加分項,可以幫助使用者更了解專案的內容和運作。

專案選擇的一些Tips

  1. 適合自己技術背景,能為履歷加分!
  2. 專案文件是否完整:清晰的 README、CONTRIBUTING、Wiki 等文件規畫可以讓入門門檻降低,也能快速地了解專案,詳細可以參考上面的開源架構。
  3. 專案活躍程度:Maintainer 是否經常回覆 Issue/ PR、社群討論多不多,可以判斷日後貢獻的功能能不能友善討論、快速被審核等等。

Start Open Source

小補充:在了解Repo時,也可以使用AI工具輔助快速了解架構讓入門門檻降低,如DeepWiki

Step.1 確認 issue 類型

  • bug 修復
  • 新增功能
  • 文件更新....

Sept.2 判斷 issue 適不適合自己

  • 有沒有具體描述(背景、重現步驟、預期結果等)
  • Maintainer 是否回應過:表示這個 Issue 是值得關注的,且有較容易有額外指導/資訊
  • 涉及的檔案與語言是否熟悉
  • 評估能力是否符合解決問題的需求:選擇與自己背景相符,有能力解決問題
若沒有已經開好適合的,也可以自己開一個,記得檢查確認沒有一樣的噢。
小試身手:可以從修改 typo 、補充文件或 Unit Test 等不影響主程式的功能開始,建立自身信心及Maintainer 的信任度。

Step 3. 重現問題

  • 了解專案架構 ex 程式入口、檔案分類等等
  • Fork 專案,Clone 到本地端,由 README 的指引開始,安裝環境並將程式 Run 起來
  • 嘗試重現 Issue 中提到的問題
  • 追蹤程式碼被 Trigger 路徑,確認核心問題所在
如果無法復現問題也可以嘗試在 Issue 提出跟大家討論更多資訊。

Step 4. 解決問題

修改程式碼之前,記得要 Fork 專案出來避免影響原作者的 git。
  • 建立 branch
  • 針對問題進行程式碼修改
  • 一定一定要在本地端驗證測試並記錄
  • 驗證想法時,有能力的話就可以先寫 unit test
  • commit 並 push 回去自己的 repo
  • 發出 PR (一定要先有 Issue 才開 PR !
注意commit message/ PR 的描述等等是否符合規定。

PR Review

發出PR後,就等 Maintainer 審核你的 PR,但通常他們是怎麼審核的呢?

  • 審查標準 是否符合專案規範(程式碼風格、功能完整性)
  • 常見退件原因 Maintainter 通常會提供具體修改建議,並解釋退件原因,如不符合規範、缺乏測試、功能重複、文件不完整等。

Hint

  • 避免頻繁推送,應該完成後一次性提交,避免過多的 commit 造成難以定義修改內容
  • 專注於目標,PR 範圍要足夠小:一次專注於特定功能或 bug 的修改
  • 不被接受也不要太灰心,可以嘗試說明功能重要性、Bug的嚴重性,說服別人接受你的變更。因為即使現在不接受,相同的問題也有可能重複提出,說不定在多年後突然同意。




以上就是這次月會的內容及心得分享啦!這次的內容花了一點時間消化,才藉著讀書會的分享一同發出文章,在查補充資料時也覺得有所收穫。

謝謝小夥伴們給我動力完成這樣的分享!也謝謝各位的時間跟耐心看到這邊!本篇內含大量 Git 相關的操作,還不熟悉的朋友們也可以去看看這些資源:

看完文章的你會想要貢獻開源社群嗎~

留言
avatar-img
留言分享你的想法!
avatar-img
Cheryl的城堡
6會員
4內容數
筆記分享 心情札記
Cheryl的城堡的其他內容
2025/06/22
第七屆 Enginearing 組船長是顧職創辦人 Bryan,本次月會分享「技術力:如何有效學習一項技術」介紹了將技術學得更扎實的技巧,適合有明確學習方向的人。 去年有個相似的主題:「軟體工程師的技能養成」,從整個職涯的角度看學習新技能,適合對職涯迷茫、連該學甚麼都不曉得的人,歡迎大家搭配使用!
Thumbnail
2025/06/22
第七屆 Enginearing 組船長是顧職創辦人 Bryan,本次月會分享「技術力:如何有效學習一項技術」介紹了將技術學得更扎實的技巧,適合有明確學習方向的人。 去年有個相似的主題:「軟體工程師的技能養成」,從整個職涯的角度看學習新技能,適合對職涯迷茫、連該學甚麼都不曉得的人,歡迎大家搭配使用!
Thumbnail
2025/01/21
曼陀號是一個為期六個月,邀請各領域專家擔任船長,分享經驗傳承來幫助水手縮短摸索時間並突破職涯瓶頸的計畫。 我參加的是Enginearing 組,船長是漸強實驗室的主任工程師Jalex!第一次月會的主題「軟體工程師的價值與發展」,船長分享的內容讓我很驚艷,為了好好記下這些收穫,所以有了這次的心得文!
Thumbnail
2025/01/21
曼陀號是一個為期六個月,邀請各領域專家擔任船長,分享經驗傳承來幫助水手縮短摸索時間並突破職涯瓶頸的計畫。 我參加的是Enginearing 組,船長是漸強實驗室的主任工程師Jalex!第一次月會的主題「軟體工程師的價值與發展」,船長分享的內容讓我很驚艷,為了好好記下這些收穫,所以有了這次的心得文!
Thumbnail
2024/10/03
我們身處在進步速度飛快的科技業,在職涯中不斷學習已經是必備的技能了,這次分享由漸強實驗室的Backend Lead Chris和Staff Software Enginee Jalex主講,分享的內容很精彩充實,我把兩位講者的分享跟月會前導讀的內容混合,分成了三個主軸: 為甚麼學?學什麼?怎麼學?
Thumbnail
2024/10/03
我們身處在進步速度飛快的科技業,在職涯中不斷學習已經是必備的技能了,這次分享由漸強實驗室的Backend Lead Chris和Staff Software Enginee Jalex主講,分享的內容很精彩充實,我把兩位講者的分享跟月會前導讀的內容混合,分成了三個主軸: 為甚麼學?學什麼?怎麼學?
Thumbnail
看更多
你可能也想看
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
明晚會坐船出海玩,不過有機會1號風球,希望可以如期順利出發及無驚無險啦(始終我不懂游泳的)!🐰🙏🏻
Thumbnail
明晚會坐船出海玩,不過有機會1號風球,希望可以如期順利出發及無驚無險啦(始終我不懂游泳的)!🐰🙏🏻
Thumbnail
這趟CP力邀的旅程始於暴雨 車內的氣氛高亢中帶幾絲低鬱 半途導遊接到船家電話沈了臉 說風浪大龜山島賞鯨行得放棄
Thumbnail
這趟CP力邀的旅程始於暴雨 車內的氣氛高亢中帶幾絲低鬱 半途導遊接到船家電話沈了臉 說風浪大龜山島賞鯨行得放棄
Thumbnail
正因為終將需要分離,所以當下的一切更讓人格外地想要珍惜。
Thumbnail
正因為終將需要分離,所以當下的一切更讓人格外地想要珍惜。
Thumbnail
一場與我無關的團建活動,竟意外找到下一春?
Thumbnail
一場與我無關的團建活動,竟意外找到下一春?
Thumbnail
#海軍敦睦遠航訓練支隊 #國內環島航訓 首站高雄港新濱碼頭圓滿落幕⚓ 感謝每一位蒞臨的大、小朋友,無論是欣賞海軍官校學生鼓號樂隊、海軍樂隊、陸戰儀隊、莒拳隊展演時讚嘆的驚呼;還是參觀磐石、迪化及成功軍艦時,給予的肯定與祝福,我們都收到了! 下一站|3/12前進花蓮港,期待與各位
Thumbnail
#海軍敦睦遠航訓練支隊 #國內環島航訓 首站高雄港新濱碼頭圓滿落幕⚓ 感謝每一位蒞臨的大、小朋友,無論是欣賞海軍官校學生鼓號樂隊、海軍樂隊、陸戰儀隊、莒拳隊展演時讚嘆的驚呼;還是參觀磐石、迪化及成功軍艦時,給予的肯定與祝福,我們都收到了! 下一站|3/12前進花蓮港,期待與各位
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News