2010-05-27 133 views
5

假設我編寫了一些代碼,我們將其稱爲X.它使用了一些GPL代碼,我們稱之爲庫Y.顯然,我必須用GPL發佈X執照。沒關係。我的問題是,我是否可以在麻省理工學院等許可證下另外發布X,這樣如果有人只需要X而不是Y,那麼他們不需要將它用於GPL?許可證軟件,使用非GPL許可證的GPL代碼

回答

1

MIT許可證也是GPL兼容的,這意味着GPL允許與使用MIT許可證的軟件進行組合和再分發。這link應該爲您提供一個全面的分析。圍繞庫,插件和模塊等有很多ifs和buts以及定義需要熟悉。

+0

這不是我要求的。在這種情況下,組合軟件將全部爲GPL。麻省理工學院的許可證僅僅是一個例子,它可以想象得到與GPL不兼容的許可證。 – swampsjohn 2010-05-27 21:26:40

+0

查看此鏈接http://blog.milkingthegnu.org/2008/04/gpl-for-dummies.html進行全面分析。 – 2010-05-27 21:46:19

+0

@swampsjohn:如果您的許可證與GPL不兼容,則不應將其與GPL作品結合使用。 – ninjalj 2010-09-30 19:35:29

1

這裏的關鍵問題是:如果您僅在MIT許可證(或其他一些非常寬鬆的開放源代碼許可證)下許可X,您的軟件X才能分發?

的這個問題的答案是:

  • 沒有如果在GPL許可的庫Y X的依賴是強制性的,無法避免的建立/使用十
  • 是如果的依賴GPL授權庫中的X是可選的Y,並且默認情況下是禁用的。

如果無法避免Y上的依賴,MIT下然後釋放X將從根本上防止任何人(例如Linux發行版,或商業供應商,或Web站點提供預構建的軟件),從與GPL發佈軟件在構建中啓用許可庫。

因此,雖然您可以根據MIT許可證決定授權您自己的軟件,但通過在此許可證下發布軟件,您可能會爲所有用戶頭痛不已。

而我的猜測是,它不是你要找的。

我的建議是,你讓你的心,要麼之間做出選擇:在GPL下

  • 發佈X如果GPL許可的庫Y是你的軟件是必不可少的。 (最簡單的,正確的選項)
  • 如果GPL許可的庫Y是可選的,並且您確實需要根據MIT許可獲得軟件版本,則在雙GPL/MIT許可下發布X ,但希望允許啓用Y支持的X(由您或其他人)分發。 (僅在真正需要時)
  • 如果GPL許可的庫Y是可選的,則在MIT下釋放X,但請注意,在啓用Y支持的情況下,任何人都無法以任何方式分發軟件。(造成用戶潛在的麻煩,對於一個非常不明確的好處)

我希望這會有所幫助。

+0

MIT + GPL = GPL,所以你的第三個要點實際上是GPL。 – ninjalj 2010-09-30 19:42:52

-1

是的,你可以使用GPL庫;並且只要你使用GPL許可證,你就可以使用它。否則Linux內核將不會有非常多的驅動程序。

這意味着你必須有一個單獨的可執行文件(和/或關於你使用該軟件的文檔);在運行時加載而不是編譯時。這也意味着,你是一步步接近Dependency HELL!!!

有依賴地獄的幾個領域,在這裏,他們是在沒有特定的順序:

  • DLL地獄
  • DSO地獄
  • 罐地獄
  • RPM地獄
  • 擴展衝突
  • 定義1 0

每一個

有多種形式,最終進入最糟糕的形式:多重循環和相互衝突的依賴那翻騰到你的大腦吸出你的靈魂的

多長鏈!

+0

哇,人們繼續下去投票,根本沒有評論,甚至不考慮寫任何評論。 – GlassGhost 2010-10-29 22:48:48