OpenSource 開源新手村 - 簡單聊聊開源究竟是什麼、如何加入成為開源人

Wed Aug 25 2021

OpenSource

這篇與其說是文章,其實更像是我參與了 COSCUP 開源人年會 後的一些心得筆記,不過我希望即使是這樣的簡單心得,對於一些想加入開源的行列卻不得其門而入的朋友來說,還是能帶來一些正向的幫助。

# 開源的定義?什麼叫開放?

首先要聊聊的就是定義了,難道說免費給你用就是開放嗎?原始碼給人看就是開源嗎?

在講開源之前,我想應該要先聊聊開源軟體的前輩:自由軟體

# 自由軟體四大自由

  1. 使用(自由之零): 依照你的想法執行該程式的自由,無論任何目的。

  2. 研究(自由之壹): 研究該程式如何運作的自由,並依照你的想法修改它以符合你的運算所需。 能存取程式的源始碼 (source code) 是這項自由的先決條件。

  3. 散佈(自由之貳): 再次散佈程式副本的自由,如此你就能幫助他人。

  4. 改良(自由之參): 將你修改過後的版本散佈給他人的自由。 如此你就有機會讓你的改善惠及社群整體。能存取源始碼是這項自由的先決條件。

看這些定義應該看到腦袋都花了吧?

我們來舉兩個簡單的小例子吧:

# 某軟體售價新臺幣 2,000 元,消費者購買後可以取得原始碼並修改、散佈之,沒有其他限制。

這樣其實是符合「自由軟體」的原則的喔,畢竟自由軟體四大自由當中並沒有規定一定要能免費取得啊,所以 自由軟體是可以收費的 呢。

甚至,你買了以後要賣出去也可以,價格亦不限。GPL 限制價格的部分是限制「使用者擁有目的程式後,不得收取高價才讓使用者取得原始碼。」

# 某軟體可免費在網路上下載,且於網站一併提供原始碼,作者僅有一個條件:此軟體不可用在壞事上

這個案例其實反而違反了「為任何目的而使用」的自由囉!

有沒有覺得從這兩個例子來看,自由軟體的精神跟許多人的刻板印象有點落差呢?

# 開源 VS 自由,都幾?

Free 這個字雖然指的是 自由,卻蠻容易被人誤解為 免費

於是就有一群人另外發起了一個詞彙 「開放原始碼」 ,開放原始碼更注重在應用層面,而自由軟體強調的是本質的精神。

簡單來說呢:

  • 「開放原始碼」的定義源自於一個軟體專案審定授權的「規則」

  • 「四大自由」最開始更多是為了描述一些理念原則

不過兩者差異真的很小,我們身為現代的軟體開發者也不一定只能選邊站,我們可以將軟體同時用兩種以上的授權條款釋出。

可能其中一個已經被認可是「開源條款」,另一個被認可是「自由條款」,使用者願意走哪條路就走哪條路。

# 參與開源專案一定要寫 Code 嗎?

我相信剛開始想加入開源社群的朋友,常常會遇到這樣的心理障礙:

「我的程式寫那麼爛,怎麼有辦法貢獻」

其實先撇除掉冒牌者症候群的問題,參與開源社群也不是一定要從程式碼貢獻開始的,其實包含了 LGTM Code review 、 提出 issue 討論、設計、活動協辦、推廣......等等,也都是開源貢獻的一部分,所以也可以放心地從其他面向開始切入的喔。

所以不要緊張,我自己也是從 review、翻譯文件這類的工作開始的,而當你覺得你準備好了之後,就...

# 開始推 PR 吧!

而對於已經準備好要加入開源貢獻的朋友來說,這邊也分享一個協作的流程作為參考。

  1. PR 一定要有對應的 issue。

  2. 注意發 issue 之前避免重覆,要先搜尋。

  3. 不要緊張,有任何問題,就算是配色建議之類的都可以開 issue。

  4. 開 issue 的時候如果已經有口袋解法了,可以提出後馬上就認領,並且做一個 PR 指到這個 issue 上把它解掉,或者只是提出建議,讓其他有興趣的人互相討論、認領、貢獻後把它解掉。

  5. 許多專案已經有設定好 CI/CD 了,所以其他人幫忙 Code Review 之後就可以等專案擁有者進行合併。

  6. 合併完成之後假如沒有其他問題就可以 Close 掉這個 issue 了。

大家一起來參與開源專案吧!

參考資料:

  1. 什麼叫「開放」? What is open, anyway? (opens new window) By Bob Chao (趙柏強)
  2. 東京都新冠肺炎對策網站開源參與經驗 (opens new window) By Pichu Chen