LINE 開發社群計畫: 「手把手教你建立自己的開源專案」

前言

大家好,我是 LINE Developer Relations 團隊的資深開發技術推廣工程師 – Evan Lin 。主要的工作項目就是平台技術推廣與技術品牌的建立與溝通。 這次很榮幸受到邀請幫 DSC (Developer Students Club) 開發者學生社群的暑期夏令營活動 (Summer BootCamp) 分享關於如何打造自己的開源專案的經驗分享。

投影片

LINE 有參與開源專案嗎?

經常在參與許多開源聚會上,許多開發者朋友都不了解 LINE 有參與過相關的開源專案。但 LINE 其實也已經開源了超過 93 個專案,不僅有訊息平台的軟體開發工具套件,更有 LINE 開發內部專案過程中也在使用的套件:包括 Armeria 與 Central Dogma 等數個知名的開源專案,並且也開始經營相關的開源社群。大家可以參考一下 2019 年的 COSCUP Keynote 分享 LINE 企業內部的開源流程,並說明 LINE 企業文化鼓勵員工分享,更以開放的心胸接觸開源及參與開發者社群。

img

如何打造一個成功的開源專案

要打造一個知名的開源專案,建議各位同學們的步驟如下:

  • 找到一個好點子 / Find a great idea
  • 良好的說明 / Well Documentation
  • 完整的 CI/CD 流程 / Well Workflow
  • 找到你的第一個貢獻者 / Find your first contributor
  • 宣傳! 宣傳! 宣傳! / Promote ! Promote !

這邊依序開始講解這些步驟,其中「找到一個好點子」放在最後(因為最難 :p )。

良好的說明 / Well Documentation

首先先分享給各位(也是最容易被開發者們忽略的)就是好的文件。(也許可能是開發者們刻意不想寫的 :p ) 。 對於軟體開發來說,好的文件相當的重要。 而開源專案最重要的就是 README.md 這個檔案往往會出現在 github 的專案頁面。透過上面的範例,這邊有一幾個重點希望同學們能注意到:

  • 足夠多的 Badge (徽章):
    • 徽章本身是講解相關的狀況( build 成功,有說明文件…),此外也可以比較漂亮啦。
  • 專案說明
    • 一句短短話,讓路過的人知道你專案的摘要。
  • 如何安裝 (install) /引用 (include):
    • 這個往往是許多初期開源專案開發者遺忘的。你需要讓路過的人知道如何安裝,如何能夠正確 include 。這樣想要使用的人,不會第一部卡在環境設定上的相關問題。 比如說有一些 Python 相關的專案,在許多套件的相依性處理上,沒有寫清楚的話。往往之後看到的人都無法正確使用。自然而然就不會使用。
  • 如何貢獻 / How to contribute :
    • 這也是很重要的部分,包括了說明白開源專案的授權方式。 (可以參考 自由及開放原始碼軟體授權條款比較 ) 還有就是可以告訴想要貢獻的人,你希望他們能跑過哪一些基本的 unit testing 。越多的說明就可以讓你的貢獻者越安心。

參考資料:

完整的 CI/CD 流程 / Well Workflow

這邊指的是相關的 Github Action , Github Action 可以幫助開源專案以下幾個部分:

參考資料:

找到你的第一個貢獻者 / Find your first contributor

當你為了你的開源專案準備好了文件,也準備好所有的流程後。接下來就是開門來歡迎第一位一起開發的人員了。(這邊往往需要很多的時間)。到底要如何找到你的第一位貢獻者呢?

這時候第一步建議你可以先為了自己的專案寫下幾個讓想要貢獻的夥伴們可以上手的部分。這個在開源社群被稱為是 「Good First Issue」。 透過這些比較容易上手的問題:

  • 可能是文件修改(中文化,日文化等等)
  • 可能是加參數。
  • 相關文件補充需求。

這些可以讓想要幫忙的人有一個好的開始,也是可以吸引到更多願意幫忙的人的方式。

參考資料:

宣傳! 宣傳! 宣傳! / Promote ! Promote !

做好了相關的說明後,建議要經常去推廣你的專案。畢竟你需要透過不段的推廣,你也才知道哪些東西是大家有興趣的。推廣的方式可以有以下幾個方式:

  • 準備一些說明文章,透過文章的說明來解釋這個 Github Repository 的主要功能。雖然在 README 會提到,但是透過文章的敘事方式往往可以讓更多的人願意去了解你的專案本質,體會專案主要解決的痛點。
  • 分享! 就是不斷的第透過線上分享,線上演講去分享。這也是最直接的方式可以讓你接觸到你的潛在用戶。相當推薦可以在「開源者年會」去分享你的專案,每一次的分享就會直接有許多星星(Github Like ) 的進帳。

找到一個好點子 / Find a great idea

最後,也就是最難的環節。 經常有同學與朋友問我,你怎麼有那麼多的點子可以準備那麼多的開源專案?(筆者的開源專案有接近 200 個 repositories)。這邊想要跟各位分享的是,建議方式有以下兩個:

  • 透過一些小工具 Trello 或是其他記事工具,把你想要打造的工具先記錄下來。 有空的時候把它拿出來開始寫。
  • 看到好的專案,先試著 Fork出來開始學習裡面相關內容。可以透過你喜歡的語言,或是練習寫一個更精簡的版本出來(也就是功能比較少的版本)。

透過這兩個方式,主要分享給同學們的是:

  • 不要因為靈感而卡住,開源專案的重點就是努力寫,拼命寫。覺得有趣就可以寫。
  • 很多時候,學習其他人偉大的專案。往往是開啟自己專案的好契機。

開源專案與學生實習工作的關係

最近經常看到同學們在討論,到底從事開源專案或是寫一些自己的 side project 跟工作有沒有關係? 這邊可以分享關於 LINE 的實習工作機會 LINE TECH FRESH 就很在意你的開源專案,因為從開源專案可以看出以下一些重點:

  • 你是否有良好的文件習慣(端看 README.md)
  • 專案是否有良好的 CI/CD 流程,也代表了你是否懂一些基本的流程。
  • 看相關專案的程式碼,可以了解你對於 Git 了解的程度。
  • 除了這些之外,好的開源專案代表你也有良好的 Pull Request 的訓練與習慣。對於多國協作上,你也更容易能適應相關團隊合作的方式。

關於 LINE 學生實習機會: LINE TECH FRESH 介紹

LINE 台灣工程團隊每年透過 LINE TECH FRESH – 技術新星人才計劃,招募資訊科技相關科系,或對此領域有所涉略的大學生 / 研究生加入 LINE 團隊進行長期實習 (一年期),讓同學們能在國際級科技公司中觀摩學習。LINE TECH FRESH 由經驗豐富的技術專案經理帶領團隊,接觸多元化的專案與產品開發,學習業界實際的軟體專案分工,並體驗跨國團隊合作。往年工作內容包含 server、web、mobile app、chatbot、IoT、data、DevOps 等領域,並透過實習熟悉 LINE 平台系統、SDK、API 等。值得一提的是,LINE TECH FRESH 是有給薪的實習機會,對於軟體開發有熱情、有想法的同學們,千萬別錯過這個揮灑創意與衝勁的機會!

更多關於 LINE TECH FRESH 介紹文章有:

同學們的相關詢問:

1. 如何讓自己的 Github 容易被找到?

A:

  • 試著多寫一點文章,每一篇文章都是 SEO 好的入口。可以讓更多的人看見你的專案。
  • 永遠別忘了,要將自己得開源專案當成產品一樣宣傳。可以多參與一些演講來分享。

2. Github 專案建議以 Quality 為主,還是 Quantaty 最主?

A:

  • 建議想到就寫,因為你不會知道哪個專案會紅。
  • 我也有許多專案,因為機運就超過了 1K 的 Star 。

3. 會不會擔心自己的專案被人家抄走?

A:

  • 不會,開源專案不需要擔心你的專案被抄走。與其擔心被抄走,你應該更擔心你的專案一顆 Star 都沒有。
  • 真正擔心的部分,建議都先寫論,先寫專案。然後才開源。

4. 哪一些 Github 是企業比較在意的?

A:

  • 如果以 LINE 而言,如果你有 LINE Bot 的開源專案,我們除了可以知道你已經對於公司相關聊天機器人瞭解之外。也能了解你對於錯誤控管的方式(也就是對於使用者隨意輸入文字的處理),可以透過這些方是來了解每一個開發者細心的程度。
  • 跟前面呼應類似的話題,主要是看你每一個專案處理的細緻程度。有沒有文件化,有沒有良好的流程。

5. 是不是一定要學會 Git 指令才能開始做開源專案?

A:

  • 不需要,許多同學也來問我是否需要買一本 Git 教學手冊才開始做開源專案?
  • 其實不需要,建議先開始建立專案。往往許多基本指令,可以透過 VSCode 等等相關軟體都可以快速協助你處理。
  • 真正等你需要更底層的指令,你就會去查詢 git pull -rebase 等等相關指令。

6. 還有問題該如何問?

A:

  • 如果你還沒開啟你的 Github 帳號,而且你有許多疑問。可以考慮透過 Github 來詢問我。
  • 任何開源問題都歡迎: https://github.com/kkdai/AMA ,你也可以學習如何開啟一個 issue。
  • 小絕竅: Github Issue 也算是一種 Contribution 喔!

關於 LINE 開發者官方社群

立即加入「LINE開發者官方社群」官方帳號,就能收到第一手Meetup活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE開發者官方社群」官方帳號ID:@line_tw_dev

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,已經舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看: