: 搜尋一下發現這邊有在討論相關的事情,所以來這邊詢問
: 通常會來問版權都是想要商用或閉源
: 不過我是相反....我開放自己的程式碼無所謂
: 只求我在專案中使用的別人的原始碼或是.dll or .so檔 不要產生著作權的問題。
: 我寫了一個程式,裡頭會用到別人的原始碼或動態庫
: 我只想單純分享,並沒有任何營利的打算
: 在這個前提下,是不是我只要我公布我的專案(內含原始碼)
: 然後用比別人的原始碼License更寬鬆的License就可以了?
: 譬如說原本的是LGPL,我使用MIT發布?
這問題很複雜,如果是你公司的 code,還牽扯著作權歸屬,建議諮詢公司法務
以下講的是一般原則,不一定適合你的狀況
首先看你如何「使用」別人的 library,和對方的 license 如何規定
如果你是拿別人的程式來「改寫」,這算衍生著作,要看對方的 library
是否允許改作以及再散佈,如果不能,那你的也連帶不能 open
如果你只是 runtime 動態 link 他的 dll,你是「呼叫」他提供的 API,
那你並沒有「改寫」他的程式,單純只是執行的時候需要他的檔案,這一般不算
「衍生著作」,所以你的程式碼是你自己的,你要用什麼授權開放都可以。
舉個例子,你的程式呼叫微軟 .NET 的 dll 提供的系統服務,很顯然你的程式
只是呼叫他,但並不是微軟 .NET 的「衍生著作」,所以你的程式想怎樣授權隨你高興
不用跟原本 dll 一樣。(這點不同授權認定不同,LGPL 比較寬鬆)
但有爭議的是如果你「靜態連結」成單一 exe,則別人的 lib 包進你程式的一部分了
這時候就可能會受到「衍生著作」的規範 (有爭議)
另外像是 GPL 不論你是動態還是靜態連結,都會認定是衍生著作,所以只是用 dll
你仍然會被 GPL 授權規範要 Open source 並且使用 GPL,他管非常寬
https://en.wikipedia.org/wiki/GNU_General_Public_License#Libraries以下講的是一般原則,不一定適合你的狀況
首先看你如何「使用」別人的 library,和對方的 license 如何規定
如果你是拿別人的程式來「改寫」,這算衍生著作,要看對方的 library
是否允許改作以及再散佈,如果不能,那你的也連帶不能 open
如果你只是 runtime 動態 link 他的 dll,你是「呼叫」他提供的 API,
那你並沒有「改寫」他的程式,單純只是執行的時候需要他的檔案,這一般不算
「衍生著作」,所以你的程式碼是你自己的,你要用什麼授權開放都可以。
舉個例子,你的程式呼叫微軟 .NET 的 dll 提供的系統服務,很顯然你的程式
只是呼叫他,但並不是微軟 .NET 的「衍生著作」,所以你的程式想怎樣授權隨你高興
不用跟原本 dll 一樣。(這點不同授權認定不同,LGPL 比較寬鬆)
但有爭議的是如果你「靜態連結」成單一 exe,則別人的 lib 包進你程式的一部分了
這時候就可能會受到「衍生著作」的規範 (有爭議)
另外像是 GPL 不論你是動態還是靜態連結,都會認定是衍生著作,所以只是用 dll
你仍然會被 GPL 授權規範要 Open source 並且使用 GPL,他管非常寬
再舉個例子,你軟體用到某個 GPL 的 lib,但你的使用方式是「複製他的 code」
然後做了一些修改,那你的程式就成為衍生著作,要遵守 GPL 規範,所以你的程式
也自動變成要 GPL open source,再散佈也要遵守 GPL 規範。
例外狀況是(這有爭議),如果你修改的程式架在 server 上,是 web server 後端
那使用者連上你的「網頁」算「使用者」嗎?一般認定是不算,所以連上網站的人
並不能根據 GPL 要求要你網站的程式碼 (否則我們就可以跟很多電商要程式碼了...)。
但如果你的網站系統賣給別人架站使用,那架站的人是「使用者」,根據GPL他可以跟你
要求 server 程式碼。
以上是 code 的授權,但使用別人的 dll 問題不是只有 source code 授權
如果你是 link dll 不會有程式碼衍生問題,但對方的 dll 不一定允許「複製再散佈」
也就是你可以 open 你的程式碼,但使用者拿來編譯需要 library 的 dll,
但那個 dll 不是你的版權,你不一定有權利提供,使用者要自己去買這個 dll
但如果這 dll 是 LGPL 授權,那他是允許再散佈的(但要遵守 LGPL)
另外補充,license 的「授權」跟「著作權」不一樣
你寫的 code 就算用 LGPL 發出來 open,大家有權使用以及改寫再散佈
但原始的「著作權」還是你的,所以「你寫的那部份」code 改天你想改用
別種授權,或是想改回私有,都是可以的,但如果專案摻入別人的 code
那你不能改變別人 open 的部份的授權,只能改你自己寫(擁有 copyright)的部份。
以上如果不清楚,歡迎討論! 希望有點幫助
: 另外想請問一下所謂的遵從License的具體動作是什麼?
: 我稍微查了一下,好像在公開的專案的資料夾裡面
: 新增一個名稱為全大寫LICENSE,且無任何附檔名的文字檔
: 裏頭複製著標準的LICENSE的內文 (假如沒有其他要求的話)
: 然後把開頭的年份與名字署好
: 不知道我的理解是否有錯誤?
: 感謝閱讀
--
Sent from PCMan on PCMan's PC
--