English [en]   fran?ais [fr]   português do Brasil [pt-br]   русский [ru]   簡體中文 [zh-cn]  

這是針對英文原版頁面的中文翻譯。

為了明確,請不要說 “使用 GNU GPL 2 授權”!

Richard Stallman

當我在 1989 年寫成 GNU 通用公共許可證(GNU GPL)時,我就意識到它將來會有所更改:FSF 可能需要在未來的某一天發布一個新的版本。因此,我把那個版本的許可證叫做 “版本 1”,并且構建了一套允許用戶將程序許可證升級到后來版本的框架。

當時并沒有一個升級自由軟件許可證的慣用方法;就我所知,以前也從來沒有人這么做過。開發者使用一個不同的許可證發布軟件的新版本,他們也可能使用一個不同的許可證作老版本軟件的新發布,但是從來也沒有為用戶提供選擇已發布程序要使用的新版許可證的系統方法。

我并不知道開發者對這個新事物的反應,所以我決定讓每個開發者自己選擇新版許可證的使用。這就意味著開發者可以按照 使用 GNU GPL 版本 1 授權,或者使用 GPL 版本 1 或任何以后版本 授權。開發者可以在每個源文件開頭的 許可證聲明 處陳述他們的選擇。GPL 就是這么說的。

自由軟件基金會敦促開發者選擇 或任何以后版本,這樣的話,用戶就有自由按照 GNU GPL 版本 1、或版本 2(一旦有了版本 2)、或版本 3(一旦有了版本 3)來使用程序。而他們也有自由按照版本 4 使用程序,如果將來我們要發布版本 4。

從那時起,FSF 先后在 1991 年發布了 GNU GPL 版本 2,在 2007 年發布了版本 3。每個版本都為開發者提供了只使用一個許可證版本、或允許使用將來的許可證版本這兩個選項。(GPL 3 還允許 “代理” 選項,它會指向一個特定的網頁,該網頁會指明程序所用許可證的將來版本。)

允許程序的許可證升級對使用不同版本 GPL 發布的程序保持兼容性非常重要。

如果缺失明確的兼容機制,那么兩個不同的 copyleft 許可證將很難保持兼容。其原因就是每個許可證都必然會要求修改按照完全一樣的許可證發布。后果就是,僅按照 GPLv2 發布的代碼無法和僅按照 GPLv3 發布的程序合并。

GPL 各版本之間的兼容機制就是讓程序可以按照遵循 “版本 N 或任何以后版本” 來發布。按照 GPL-2.0-或-以后版 發布的程序可以和按照 GPL-3.0-或-以后版 的代碼合并,因為 “3 或以后版” 是 “2 或以后版” 的子集。

有些開發者說,“我目前只按照 GNU GPLv3 發布軟件。當 GPLv4 發布時,如果我喜歡,我會把我的程序重新按照版本 4 發布。”如果你是唯一的作者,這個行得通,還得假定你健在、健康、聯系得上、關注這件事。但是現今的版權會持續非常長的時間;如果沒有大的變化,在美國,代碼的版權在你死后 70 年都有效(墨西哥是 100 年)。如果你不在場,難道你已經讓繼承者考慮重新按照 GPL 版本 4 來發布你的代碼?

但是在你的有生之年就會煩惱不斷。如果我們在 10 年后發布了 GNU GPL 版本 4,假定那時已經有 50 個人為你的程序添加了代碼,難道他們就應該僅僅是因為你選擇按照僅使用 GPL-3.0 發布就必須繼續這樣?你也許可以批準你的原始程序使用 GPL 4,但是聯系其他 50 個程序員來獲取他們的許可是一個艱巨的工作。

避免這些麻煩的方法就是在許可證聲明里批準使用將來的 GPL 版本。請在每個源文件的許可證聲明里加上你所使用的 GPL 版本末尾的許可證聲明。

由于我們這樣處理許可證兼容性的問題,當人們告訴你一個程序是按照 “GNU GPLv2” 發布的,那么他們沒有理清該程序的許可證狀態。它是僅按照 GPL-2.0 發布,還是按照 GPL-2.0-或者-以后版 發布?你是否可以把它和按照 GPL-3.0-或者-以后版 發布的軟件合并?

當諸如 GitHub 這樣的網站邀請開發者選擇按照 “GPL 3” 或者 “GPL 2” 等許可證來發布時,并沒有提出許可證將來版本的問題,這就導致數以千計的開發者沒有理清他們代碼的許可證。如果請這些用戶在 “僅” 和 “或者將來版” 之間選擇,那么他們代碼的許可證問題就會比較清晰。這也讓大家有機會了解后一個選項如何避免了許可證未來的不兼容性。

象 “GPL-2.0” 或者 “GPL-3.0” 這樣的許可證縮寫也會導致混亂。人們或其他組織無法區分 “僅 2” 和 “2 或以后版” 之間的區別,他們就可能都寫成 “GPL-2.0”,而實際上兩者是應該明確區分的。

因此,如果你要使用 SPDX1 許可證縮減版,請使用以下:

請不要使用過去的、模糊的許可證縮寫,它們就要被廢棄:

讓開發者有權利選擇 GPL 版本 “僅 1” 或者 GPL 版本 “1 或以后版” 在 1989 年看起來是必須的,但是它帶來的復雜性比沒有這個選項更多。同時,好多無條件給予用戶選擇升級到以后版的許可證被廣泛的接受。它們包括 Mozilla 公共許可證,Eclipse 公共許可證以及全部的 Creative Commons 許可證。每個版本都說明用戶有自由選擇以后版的該許可證,如果有的話。

我們也許在將來的 GNU GPL 版本上也采取這樣的策略。但這是將來要考慮的事情。

我們感謝 SPDX 決定為 GNU 許可證家族修改縮寫,這樣就使 “或者以后版” 和 “僅” 變得明確。SPDX 許可證列表下一版的縮寫就會包含我們上面建議的縮寫。而那些產生混淆的縮寫,比如 “GPL-2.0” 會被廢棄。我們懇求大家盡可能地把舊的縮寫換成新的明確的許可證縮寫。

通過明確使用 或者 任何以后版本,我們能夠讓社區明白這些不同,并且鼓勵開發者清新地表述他們的決定。

譯注

  1. SPDX,Software Package Data Exchange. 這是一個溝通軟件組成(組件、許可證、版權和安全參考)的開放標準。
最頂

[FSF 標志]“自由軟件基金會(FSF)是一個非盈利組織。我們的使命是在全球范圍內促進計算機用戶的自由。我們捍衛所有軟件用戶的權利。”

加入 購物

招财蟾蜍APP 做数学老师怎么赚钱 浙江十一选五开奖情况 想赚钱多吗 哪里可以买幸运赛车 街边cos赚钱吗 吉林十一选五遗漏查询 成吉思汗3赚钱2014 宁夏11选5杀号技巧 揭阳福彩投注站微信交流 新疆11选5购买 加拿大pc蛋蛋开奖预测 黑鲨系统重装靠什么赚钱 浙江11选5玩法 澳洲幸运10免费计划软件下载 黄金城棋牌平台官网 复式双色球计奖办法