開源授權小問答

滿好奇大家對於開源授權的了解程度到哪裡,直接來個開場小問答。

第一題:當你看到有個 GitHub 的公開專案沒有任何 license 相關資訊,而你想要使用這個專案,此時該怎麼做最適當:

(A) 因為放 GitHub 就是開源,直接 clone 下來用就好
(B) clone 下來用,並在自己的專案中附出處,表明有用到這個 repo
(C) 沒有任何 license,所以只能看而已不能用
(D) 雖然沒有 license,但除了看還可以 fork,不過還是不能用

第二題:有個採用 MIT 授權的 GitHub 公開專案,在附上原本 LICENSE 檔案的前提下,有哪些事情是允許的(複選):

(A) clone 下來用
(B) clone 下來用,但不特別標注來源 repo 是哪裡
(C) clone 並把 commit 紀錄全部刪掉之後重新傳到 GitHub 新的 repo
(D) 把這個專案包成 SaaS 拿去賣
(E) 在閉源專案裡使用它
(F) 把程式碼包成壓縮檔,拿去網路上販賣

回答前先聲明一下,因為非專業人士,這兩題的答案我沒有 100% 把握,但我能講出背後的理由。如果有解讀錯誤的地方,麻煩在留言區不吝打臉並附上證據,我會修改原文。

第一題的答案是 D,你可以看可以 fork,但不能用。

GitHub 為了幫助大家了解各種開源授權,弄了一個 choosealicense 的網頁,其中有一個 No License 的頁面,說明了在沒有附上任何授權條款的前提下,就代表你保留所有權利,所以連複製都不行。

但是,因為你上傳到 GitHub 了,所以要遵守平台的 ToS,而 GitHub 的 ToS 就是允許其他使用者觀看以及 fork 你的 repo,因此 fork 是可以的,但 fork 後你也不能改它,因為你還是沒有 modify 或 copy 的權利。

第二題的答案是「全部都可以」。

MIT License 裡面寫著只要你附上了原本的 LICENSE 檔案,你可以「use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software」,基本上想做什麼就做什麼,拿去賣或任意修改都是可以的。換句話說,只要附上原本 LICENSE 檔案(跟裡面的 copyright),沒有什麼不能做的。

看到這裡,不曉得大家會不會覺得 MIT 授權能做的事比自己想得還寬鬆許多?居然還可以直接拿去賣。至少我第一次知道的時候是這麼想的沒錯,以前都是看別人用我就用,沒讀過授權條款本身,讀了才發現原來這麼寬鬆。

最近圈子裡出現了兩起授權爭議相關事件,第一件跟工研院有關,但這件已經很多專業的人跳出來講了,就先不聊了。我自己對第二件比較有興趣,先強調一下這件雖然也與授權有關,但跟工研院的事件完全不同,所以不能混為一談,可以視為兩個獨立事件。

事件發生在 4/25,@stanma9107 跳出來指控 @clarencetw 的 expo-tappay-ios 這個專案是抄襲自他的 expo-tappay-apple-pay,而指控的內文格式直接參考了剛講的工研院事件的 issue,導致許多人覺得這又是一起類似的事件。不過就像我剛講的一樣,在仔細了解過後,會發現兩起事件完全不同。

指控內容主要有兩點:

  1. 我就有開源你為什麼 Fork 完還要另開專案複製 Source Code
  2. 完全移除原始專案的 LICENSE 與作者資訊

先不管開源授權的話,站在一般的角度來看,這兩點其實是有道理的,「用我的專案就該給我完整的 credit」跟「你可以 fork 幹嘛直接開新的,是不是想當作自己寫的」之類的,我都能理解。

但如同開頭講的,在 MIT 授權的前提下,只要原本的 LICENSE 有保留,不必特別寫出處,也沒有一定得 fork,甚至其他人直接拿去賣錢也可以。

而這個專案值得討論的點在於,只在 package.json 裡面有一行 license:MIT,並沒有其他 LICENSE 檔案,就會構成兩個路線:

  1. MIT 授權不成立?
  2. 也算 MIT,但沒有 LICENSE 所以沒東西複製

如果是第二種路線,代表也沒什麼抄襲的問題,在 MIT 授權的前提下直接 copy 全部改掉都可以,而原本的條件「必須附上 LICENSE」也沒東西可以附。但我自己覺得「宣稱自己是 MIT 授權但沒有完整的 LICENSE」這件事,說不定會更偏向第一種。

總之呢,在我看來這確實有討論空間,也是與工研院事件差很多的地方。工研院的案例原本的專案就有 LICENSE,很明顯是違反授權,但這次的專案並沒有 LICENSE 檔案,只有 package.json 中標明是 MIT,所以「移除原始專案的 LICENSE」這件事是不存在的。

這個事件也已經在雙方有共識的狀況下落幕,兩方我都不認識,雖然還有其他角度跟觀點可以討論,我先不多做評論。

總結一下,我覺得我們這些局外人從中可以學習到的是對開源授權有正確的認識,當你明確表示你的開源專案是 MIT 授權的時候,代表其他人只要附上 LICENSE 檔案,想幹嘛就幹嘛。如果有其他要求,例如說禁止商用或是衍生專案也要開源等等,那應該要選擇其他的授權條款。

當你在 GitHub 上傳了一個專案,就只是公開程式碼而已,在沒有明確附上 LICENSE 的前提下,別人其實也不能拿去用。如果想讓別人使用,記得要指定好授權,而且要先了解各種不同授權的內容差在哪裡,才能選到適合自己的。

補充文章:https://ossf.denny.one/en/legal-column-list/513--mit.html

評論