Hi Kurapika,
您是要問:將不同授權條款的文字內容,都放在同一檔案之中,是否OK?
是低,我想問說將不同授權條款的文字內容,都放在同一檔案之中,是否OK?同一個程式的所有元件基本上都用GPL2授權,但GPL2,還有BSD, MIT之類的授權條款還有其他商業軟體的授權都放在一個檔案中,這樣可行嗎?
這樣是可行的,有些授權條款狀態較為複雜的自由軟體專案也是這樣做,他們將軟體中所利用到的其他元件名稱與授權條款全部都放在一個文字檔中,這樣其他開發者可以一覽所有元件與它們的授權條款。Netbeans就是個很好的例子,他在第1層目錄之下,有三個與授權法律相關的檔案:LICENSE、THIRDPARTYLICENSE、LEGALNOTICE。LICENSE中有這個Netbeans所採用的授權條款說明文字以及授權條款全文;THIRDPARTYLICENSE中羅列了Netbeans中所利用到的他人元件/軟體,以及這些元件/軟體的授權條款全文內容;LEGALNOTICE則是使用者應該注意的其他法律事項,因為這些資訊無法被歸類在前兩個檔案中,所以單獨成立一個說明檔案。
Netbeans網址:
netbeans.org/downloads/zip.html。
不過除此之外,我個人還強烈建議,在每一個原始碼檔案的檔頭中插入授權資訊的扼要說明文字,還有如何可以閱讀授權條款的全文,若是之後這些原始碼檔案被個別散布的話,後續拿到這些原始檔案的開發者也一樣可以清楚知道這個檔案的授權內容為何。
進一步資訊您可以參考下列文章:
1) 自由軟體授權的標示通則:授權條款的宣告方式,
www.openfoundry.org/tw/for-developers/1884-2010-07-13-09-48-09
2) 利用到GPL元件的商業產品應該如何標示:林誠夏,內含 GPL授權元件產品的標示義務,
www.openfoundry.org/tw/legal-article-/2384--gpl-
還有您提到GPL 2.0的規定都不能被更動一字一句, 某些授權條款如Apache 2.0可能會跟GPL 2.0衝突,
我想請問一下哪些條約比較不會和GPL 2.0相衝突的? ACME Labs Freeware License www.acme.com/license.html是不是不會和GPL 2.0相衝突呢?
BSD、MIT是典型可以與GPL2相容、不會產生衝突的授權條款,其他的條款則要視狀況而定,很難有一個抽象、概括的原則說明。
至於您所提到的ACME Labs Freeware License(以下簡稱ACMELFL)是屬於BSD類的授權條款,我看過內容,這是一份可以跟GPL2相容在一個軟體當中的授權條款,並不會產生衝突,也就是說,若是ACMELFL授權部份的程式碼是被GPL感染的話,這些部份可以改為GPL2授權,而不會發生問題。 不過請記得,在整個程式散布的時候,還是註明你們有利用到ACME Labs的哪一個軟體,它的版本號為何,並將ACMELFL全文附上。
關於GPL2.0和3.0的問題, 您是說同一包GPL的source code, 都要全部被授權成GPL2.0或全部被授權成GPL 3.0囉
是的!同一包的原始碼若是GPL2授權,其中就不能存在GPL3授權的部份;若同一包的原始碼是GPL3授權,其中也一樣不能存在GPL2授權的部份。若沒有依照這樣的規則,無論是依據GPL2或GPL3,就都是違反授權規定。
此外,這樣的規則不僅是用於原始碼,也適用於「目的碼」。所以同一包的目的碼也必須全部被授權成GPL2或全部被授權成GPL3。
另外請問一下,如果將程式碼隨著執行檔一起移交給使用者了,但若該使用者把程式碼弄丟了, 該使用者還可以跟開發者要程式碼嗎?如果可以,那麼開發者該保留程式碼多久呢?
這個問題的重點應該是在於:開發者是否還負有提供原始碼給使用者的義務?若答案為「否」的話,即使在現實上,使用者當然可以跟開發者要原始碼,但是開發者因為沒有義務,所以他當然可以不用給。
GPL軟體的使用者之所以擁有可以索取原始碼的權利,是因為有了原始碼才方便修改程式,一旦可以方便修改程式,使用者就是真正地實踐了GPL所授與的「修改權」。既然使用者已經隨著執行檔拿到過原始碼,也就是使用者已經擁有實踐修改權的條件,那麼相對地,開發者就已經盡了他該盡的義務,對於這位使用者就沒有再次提供原始碼的義務。因此這時候使用者自己必須自行承擔沒有原始碼的後果。
不過以上僅是理論的推演,在現實生活中,若使用者真的將原始碼弄丟了,當然還是可以跟開發者再次索取,只是開發者是否一定會再次給予原始碼,就要看這位開發者的態度而定。假如這位所謂的開發者是一家商業公司,並且已經將軟體改為封閉原始碼的方式來授權,這時候使用者跟這家公司再次索取原始碼,我相信應該是無法成功。不過若這是一位持續參與自由軟體開發的開發者,使用者敘明理由跟他再次索取原始碼,我想他應該還是會給的。
最後再問個問題, 若是A將執行檔給B, B再將執行檔給C, 那麼C可以直接跟A要程式碼嗎? 在B有修改程式碼的情況下, C應該不能夠跟A要吧, 那如果B沒修改程式碼的情況下,C可以跟A取得程式碼嗎?
在GPL軟體未被修改的情況下,這個問題會因為A是否為GPL軟體的著作權人,而有不同的答案。
若A是GPL軟體的著作權人,也就是說A是這個GPL軟體的原始授權人,依據GPL的規定,B與C都是A的被授權人,因此C不但可以跟B索取原始碼,還可以直接跟A這個原始授權人索取,假如C將軟體執行檔原封不動地轉給D,D除了有權利跟C索取原始碼之外,也一樣可以跟A索取。
假如A只是GPL軟體的後手使用者,並非是著作權人或原始授權人,此時A就只對B有提供原始碼的義務,對於C並沒有義務,若是C來向A索取的話,A是可以拒絕不給原始碼,A並且可以主張自己已經將原始碼給了B,請C去跟B索取原始碼。
若GPL軟體被B修改過,然後B將這個衍生軟體給C,C這個時候當然只能跟B要,而不能跟A要,因為A並沒有這個B修改的衍生軟體,A只有未經修改過的。這在A是軟體著作權人的情況,也是一樣。
GPL真是複雜 看了好久都看攏無
感謝您們的回答^^
不會。若是還有什麼問題或者想法,歡迎繼續回文!
冬梅 Florence
20100928 1506