如何禁止自己的開源項目的衍生品使用GPL-like(LGPL除外)協議?

理由如下

1.眾所周知,GPL-Like具有傳染性;強迫衍生品使用該協議這一點令人不爽(正如古話曰:己所不欲勿施於人)

2.原版如果使用的不是GPL協議(例如MIT),如果衍生品是GPL-Like;那麼原版吸收衍生品的成果就會收到阻礙(原版會被傳染)……很明顯GPL協議是利己主義

3.使用GPL-like,勢必會出現大量無意義項目(因為有些不想開源的同志們會使用各種方式去繞過,例如使用進程通信……假設衍生品就只加了與特定進程通信介面就開源了,這只是浪費磁碟空間,意義何在)

4.不靈活,沒有明確聲明除衍生品必須開源或尋求作者之外的其他更有用方式(例如直接為原作品貢獻代碼可以不必開源)

綜上所述,我認為GPL-like不代表自由(寫這協議的組織的名字FSF明顯是種諷刺)

暫時得出的結論:我希望任何人無限制使用我的代碼,但是衍生品中對我的代碼的一切修改都得遵守MIT(舉例,假設有人我的A項目進行修改變為A+,用在他的B項目裡面,我要求A+部分必須遵守MIT;B項目除A+之外的項目可以使用任意協議)

再修改下,經過討論發現也許自己需要一個weak copyleft協議……不知道有什麼更好的建議

剛剛看到farseersc的回復,正好是我在昨天晚上騎車時想出的最終結論。

我希望一定要使用lgpl,不能relicense為其他兼容協議……但不知道是否可行

(話說我只是反感除了lgpl之外的gpl風格協議罷了)

利益相關:開源愛好者


如果你能達到這個目的,那麼你必須屏蔽掉所有與gpl兼容的協議,否則會有如下情況

你的協議→兼容協議→gpl

那麼實際上是,你造了另外一個"share alike"協議。

關於copyleft和open source的哲學問題,我只能說,share alike/copyleft是目前保護「自由」的必要手段。

對於bsd協議的支持者來說,僅僅是為了阻止gpl而放棄某些他們珍視的某些自由,顯然是不可接受的,如果有兩全的方法的話,一定會有可用的bsd like協議。

當然,如果你僅僅需要另外一個協議的話……

*任何一個copyleft協議,只要沒有特別的協議設計,都和其他的copyleft協議排斥,甚至是cc sa系也是這樣,畢竟copyleft/share alike本身就具有排他性。

除了cc sa還有cpl,epl,cddl,josl等不太出名的弱copyleft協議和gpl不兼容。

apache 1.1/1.0協議是強行和gpl不兼容的非copyleft協議,但是可以轉bsd然後轉gpl。

4句bsd是和gpl不兼容的非copyleft協議,但是可以轉3句bsd。

mspl,msrl,弱copyleft,所以不兼容。

不過gpl除了有copyleft這一點以外,其他的都還挺好的啊


先回答問題,你把這一條寫進你的協議里不就行了。

然後吐槽一下。

當初 RMS 弄出 GPL 這個東西是為了什麼?RMS 的理想是用自由軟體去代替,或者說打敗,所有商業軟體,而 GPL 就是為這個目的而生的協議,是具有戰略用意的。

自由軟體如果沒有了 GPL,就好像用愛發電一樣。你用了寬鬆協議,或者發布在了公有領域,那就不要怪別人把你的勞動成果拿去抄一遍,改改,變成自己的作品。這就給了商業軟體公司很大的空間去利用開源社區的成果為自己服務,還不用對社區做任何反饋和貢獻。而有了 GPL,就有了約束,不管你是改代碼,還是用我的東西做了新的東西,你都必須把代碼開源,那麼社區就可以吸取你修改的成果,保持自身的先進性,保持這個軟體始終可以以開源的形式發布出來。

當然,也許你很無私,你覺得別人把你的代碼拿去用也不反饋給你也無所謂。但很多人,至少我不是這樣。如果我寫出了開源軟體,我只是把代碼公開,讓你免費使用而已,但我還是希望別人用我的軟體,而不是用我的勞動成果為他自己服務,更不希望被商業公司拿去做商業產品,使得自由軟體不再自由。這樣 GPL 為軟體作者提供了一種保障,就好像保護了作者的版權一樣,同時也保護了使用 GPL 的軟體始終能保持自由,因此叫做 Copyleft。

我很懷疑,當初 Linux 如果沒有用 GPL,能否走到今天。

另外,對於 GPL 和 LGPL 的使用,RMS 也是有很多考慮的。一般來說 LGPL 用於庫。而 RMS 認為,如果是開源社區獨有的庫,就應該用 GPL,這樣商業軟體如果要使用就不得不開源。否則的話,則用 LGPL,這樣使得原本依賴商業庫的人和公司會出於價格等方面考慮使用開源庫。

所以,可以說 GPL 和 LGPL 都是為「自由軟體打敗商業軟體」這個戰略目的服務的。它們很好的詮釋了一點:自由不是沒有代價的,自由意味著權利和義務。(L)GPL 清晰地定義了這個權利和義務的邊界。

當然現實和 RMS 當初所想的很不一樣,有很多大公無私的人,商業公司也沒他想像的那麼壞。他的自由軟體理想本身怎麼樣,我不評價,我也並不是 GPL 的狂熱愛好者。但這種為理想奮鬥的精神和智慧,我是十分尊敬的。

當然,如果你是個大公無私的人,你盡可以用寬鬆的協議。


用一個和 GPL 不兼容的協議,或者加一句和 GPL 不兼容的條款就夠了……

這裡有一堆和 GPL 不兼容的自由開源協議可以選:

Various Licenses and Comments about Them

比較著名的例子是 ZFS 用 CDDL 開源,所以不兼容 GPL ,於是和 Linux 內核一起發佈的時候有各種麻煩。

甚至可以用不自由的開源協議,一個著名的例子是 JSON 協議,它就比 Expat/MIT 協議多了一句話:

不得將本軟體用於作惡

然後它就不自由了,因爲限制了用戶作惡的自由(並不,細節請自行搜索)。

=============================================

以上是我原本的回答。

看了題主和別人的回答的對話之後,稍微總結一下,題主其實想要這樣一個協議:

1. 基本約束類似 LGPL ,對衍生作品不具傳染性。

2. 不能 relicense 到 GPL 。

換句話說,還是一個具有一定傳染性的 copyleft 協議,只是不兼容 GPL ,同時對衍生作品的衍生部分不具約束。

其實雲天明也提到了 copyleft 相互都是不兼容的,於是題主的要求只是從一個 copyleft 的坑,跳入另一個看起來約束松一點的 copyleft 的坑裏。

於是想說點與法律約束無關的話題,開源社區看似表面祥和,背後其實就是一個又一個 copyleft 的坑,同一個坑裏的軟體們互相抱團取暖。選擇協議固然具有一定的法律意義,但是更重要的同時還具有選擇陣營的意義,同爲 copyleft 的不同陣營之間,除了協議條款的細微差異之外實則沒那麼大的區別,更多時候人們只是選擇一個更大的陣營以贏取更多開發者的關注。一個冷門的協議即使本質上和別的協議差不多自由,只不過因爲其冷門,於是爭取不到足夠的開發者,最終會導致在同質軟體的競爭中敗下陣來。

如果不是當初 Sun 給 ZFS 選了 CDDL ,ZFS 自身的實力絕對能吸引到 Linux 陣營更多的開發者,也就不會有 btrfs 重新發明輪子,不會有現在 ZFS 相對緩慢的開發速度了。如果 ZFS 是 GPL compatible ,Linux 世界的大多數人或許現在早已跳出了無盡的 fsck 過上了分分秒秒 snapshot 的幸福日子。CDDL 的 ZFS 能否和 GPL 的 Linux 一起發佈,這在法律上還有待爭論,在實踐上也有待 Ubuntu/Debian 等先驅的開路,而在事實上不兼容的 copyleft 協議已然減慢了開源社區整體前進的步伐。

當然並不是說題主這樣選擇協議是徒增煩惱,這種對協議本質的審視是需要的,這種對自由的追求是整個開源社區賴以生存的基石。僅僅是想提醒題主,除了法律層面之外,還有社區運作的層面需要考慮。


題主問題的核心在於把世界想的太美好:

如果全世界都像題主一樣,那麼GPL絕對是約束,關鍵是事實不是這樣,為了保證不被小人利用,只好約束為傳染性。這樣至少不會更糟。


開源的核心目的是減少重複勞動,獲益群體是開發者。

自由軟體的核心目的是維護軟體使用者的權利。

你從開發者的角度看,傳染不傳染,利己還是利他,由你自己評斷。


lz你想太多了,許可證其實一點都不重要,關鍵在於你的東西要有人用,而且一直是你主導的,做不到這兩點,無論什麼許可證都並沒有什麼區別。


謝邀,我的代碼使用的許可證是倆極端,大的項目GPL/AGPL,小項目是Public Domain/MIT。實踐上,改GPL為其他許可證的話,也沒問題,把所有developer都叫到一起直接改就行了。GPL當然是絕對自由,但只是開發者意志上的,一旦有使用者想搞事情做點什麼的話,這些使用者肯定覺得不自由的。但問題,大家都弱到必須依賴某些特定的開源項目才能活下去么?!


直接寫個新協議就好了。避免漏洞的話請找個律師。

不過,這裡有個微妙的矛盾。

你恨GPL的原因是它的傳染性,但是你阻止你自己的項目衍生品使用GPL-like license的唯一辦法顯然也是讓你自己的license帶上傳染性。

最終你的目標大概可以實現,但是你能不能做到不恨自己的新license,我就不知道了。


你完全可以自己寫一個協議啊。以BSD或者Apache或者什麼其他協議為基礎,加一句「任何衍生作品不得使用GPL-Like協議」就行了。

現成的輪子不夠用就自己改裝一個嘛……無論協議還是代碼都是一樣。


自己寫個就可以了,寫明白不許用gpl,反正是你自己的你想怎麼寫都行,寫上「必須請作者吃飯」都可以。當然這麼搞完別人用不用就是另外一說了,畢竟你如果開源的話還是希望有更多的人用的。還有這沒啥奇怪的,自己寫的各種奇怪的用戶協議在學術界非常常見,大部分是「使用本軟體必須引用某某某論文」,還有比較奇怪的比如「任何修改不許公開但是必須給作者一份」。


所以,這個「讓衍生品不使用 GPL-Like 許可證」也是一種「傳染性」咯?

其實,並不是 GPL 噁心,而是使用 GPL 的軟體開發者有意為之,再說,世上哪兒有隨便使用他人勞動成果的好事?既然你要使用別人的勞動成果,就要付出相應的代價,僅此而已罷了。


講真,國內連法律都無視


開發者使用什麼許可協議,這是權力,由於它主要影響到的是別人(用戶和其他修改者)

而作者以外的人複製、修改、使用、販賣、整合是自由,因為主要影響自己。

關鍵在於GPL是在限制開發者的權力,但對用戶自由是無限制的,這就是民主。

然而,非copyleft等於是讓許多開發者都能開發私有化產品,這就像軍閥割據。

完全私有,誰都要受限,開發者權力無限大,這就是中央集權。

這三種對比不是很形象地說明了問題么。。


用Copyright


你可以自定一個協議,要求所有的修改都必須把修改部分的版權所有權轉移給你。然後,你再把該項目結合了修改部分的成品再次在前面自定的協議下發布。就可以了。

不過一般人的代碼,就算開源了,也沒人用。所以還是用三大標準授權BSD/LGPL/GPL算了,可以節省別人的時間。


考慮到除了我司法務部門認為CDDL -&> GPL沒問題外, 其他公司都不太敢把zfs弄進kernel裡面. 所以我覺得你選CDDL應該是安全的.


推薦閱讀:

.Net 新一代編譯器 Roslyn 會帶來怎樣的影響?
有哪些有趣的開源機器人項目?
把程序做成開源的,對程序作者有什麼好處呢?
你在使用Android開源項目的過程中都遇到過哪些坑?
假如開源項目創始人去世了,項目怎麼辦?

TAG:代碼 | 開源 | 軟體授權 | 開源項目 |