GNU通用公共许可证

歷史

GPL由理察·斯托曼於1989年編寫，提供給列入GNU專案的一些軟體程式所使用。 原始的GPL基於GNU Emacs （1985）， GNU Debugger和GNU C編譯器的早期版本中使用的類似授權條款的統一。 這些授權條款包含與現代GPL類似的規定，但具體針對每個程式，使其不相容，儘管是相同的授權條款。 Stallman的目標是提供一個可用於任何專案的授權證，從而使許多專案得以共用程式碼。
GPL版本1就這樣，在1989年1月誕生。
到1990年時，某些因素使得程式庫（Library），應該要有比GPL更寬鬆的授權許可的需求。所以當GPL版本2在1991年6月發布，另一授權條款——程式庫通用授權證（Library General Public License，簡稱 LGPL）也隨之誕生，並記作「版本2」以示對GPL的補充。版本號在LGPL版本2.1發布時不再相同，而LGPL也被重新命名為GNU寬通用公眾授權條款以體現GNU的哲學觀。
授權條款的第二個版本，版本2，在1991年發布。在接下來的15年中， 自由軟體社群的成員很關心GPLv2授權條款中的問題，可能會讓某些人鑽漏洞而違反授權條款，而違背了原先GPL許可授權軟體的原意。 這些問題包括Tivo化 （來自硬體的軟體限制，意指將GPL授權軟體安裝在硬體上，又拒絕運行更動相關軟體的修改版本），類似與Affero通用公眾授權條款類似的相容性問題，以及微軟和自由開源軟體，其中一些被認為試圖將專利申請用作於對付自由軟體社群的武器。
第3版旨在解決這些問題，並於2007年6月29日正式發布。

用語

根據創用CC官方網站，GNU General Public License 的台灣法律用語翻法為「GNU通用公共授權條款」，香港法律用語翻法亦為如此。

GPLv1

1989年2月25日發布的GNU GPL 版本1 阻止了軟體經銷商限制自由軟體定義的兩個主要方式。第一個問題是經銷商可能僅發布二進制檔案 - 可執行，但不能由人類讀取或修改。為了防止這種情況，GPLv1表示，任何分發二進制程式碼的供應商還必須按照相同的許可條款（授權條款的第3a和3b節）提供可讀的原始碼。
第二個問題是經銷商可能會增加授權條款的限制，也可能會將軟體與其他具有其他分發限制的軟體相結合。兩套限制的聯合將適用於組合工作，從而增加不可接受的限制。 為了防止這種情況，GPLv1表示，修改後的版本作為一個整體，必須按照GPLv1（授權條款第2b和4節）的條款分發。 因此，根據GPLv1條款分發的軟體可以以更寬鬆的條款​​與軟體相結合，因為這不會改變整體可以分發的條款。 然而，根據GPLv1分發的軟體不能與在更嚴格的授權條款下分發的軟體相結合，因為這與根據GPLv1的條款可以分發的要求相衝突。

GPLv2

根據理察·斯托曼的說法，GPLv2的主要變化是「自由或死亡」（Liberty or Death）條款。就如字面上所說，「被許可人只有在滿足所有授權條款的義務下」才可以分發包含GPL授權的軟體，儘管他們可能擁有任何其他法律義務。換句話說，就算有相互矛盾的義務，授權條款的義務也可能不被切斷 。 該條款旨在阻止任何一方使用專利侵權索賠或其他訴訟來損害用戶在授權條款下的自由。這章中的意思是，為了在一定程度上保障和尊重其它一些人的自由和權益，無論任何人要發布源於GPL的軟體的時候，同時也須遵守強制的條款分享原始碼，否則他將根本無權發布該軟體。（因為在一些國家裡，人們只能以二進制程式碼的形式發布軟體，以保護開發軟體者的著作權。）
到1990年，越來越明顯的是，對於C函式庫來說，本質上已經跟受專利保護的軟體函式庫的功能表現相當，有一個限制較少授權條款對於自由軟體發展的策略上來說更為實用；因此，當GPL的版本2（GPLv2）在1991年6月發布時，第二類別的授權條款：函式庫通用公眾授權條款（英語：Library General Public License），也同時被引入，並從第二版編號開始，表明兩者是互補的。版本號在1999年發行，當時LGPL的版本2.1被發布，更名為GNU通用公眾授權條款，以反映其在哲學中的地位。
最常見的是「GPLv2並延伸到未來版本」的聲明，讓授權條款的用戶了解，得以允許更新到GPLv3。

條款和條件

GPL的條款和條件必須提供給任何接受GPL應用的作品的副本（「被許可人」）的人員。任何遵守條款和條件的被授證人員都有權修改作品，以及複製和重新分發作品或任何衍生版本。被許可人被允許為此服務收取費用，或無償。後一點將GPL與禁止商業再分發的軟體許可區分開來。FSF認為，自由軟體不應該限制商業用途，GPL明確規定GPL作品可能以任何價格出售。
GPL還規定，經銷商不得對GPL授予的權利施加「進一步限制」。禁止根據不披露協定或合同分發軟體等活動。
授權條款版本2的第四部分和版本3的第七部分要求，作為預編譯二進製檔案分發的程式應附有原始碼的副本，通過與前一版本相同的機制分發原始碼的書面報價編譯的二進製檔案或書面報價，以獲取用戶在GPL下接收預編譯二進製檔案時獲得的原始碼。版本2的第二部分和版本3的第五部分還要求「所有收件人本程式附帶的授權條款副本」。 授權條款的版本3允許以其他方式提供原始碼來實現第七部分。這些包括從相鄰網路伺服器下載原始碼或通過對等傳輸，只要編譯程式碼是可用的，並且在哪裡可以找到原始碼的「清晰方向」。
除非作者明確賦予 FSF 著作權（除了作為GNU項目一部分的程式很少發生），否則FSF對GPL發布的作品不具有著作權。只有個人著作權持有人有權在發生授權條款時才起訴。

使用許可軟體

GPL下的軟體可以用於所有目的，包括商業目的，甚至作為創建專有軟體的工具，例如使用GPL授權的編譯器時。分發GPL許可作品（如軟體）的用戶或公司可能會收取副本費用或無償提供費用。 這將GPL與共用軟體授權條款區分開來，允許複製用於個人使用，但禁止商業發布，或著作權法禁止複制的專有許可。 FSF認為自由軟體不應該限製商業使用和發布（包括再發布）。GPL明確規定，GPL工作可能以任何價格出售。
在純私人（或內部）使用 - 沒有銷售和沒有發行 - 軟體程式碼可能被修改和零件重複使用，而不需要發布原始碼。 對於銷售或分銷，整個原始碼需要提供給最終用戶，包括任何程式碼更改和添加 - 在這種情況下，應用copyleft來確保最終用戶保留上面定義的自由。
然而，作為GPL許可作業系統（如Linux）下的應用程式運行的軟體不需要根據GPL進行許可或者以原始碼可用性分發 - 許可只依賴於使用的庫和軟體組件，而不是依賴於底層平台。例如，如果一個程式僅由自己的原始客製化軟體組成（software component），或者與其他軟體組件的原始碼組合在一起，則自己的客製化軟體組件不需要根據GPL授權，不需要使其程式碼可用; 即使所使用的底層作業系統是根據GPL授權的，運行在其上的應用程式也不被視為衍生作品。  只有在程式中使用了GPLed部件（程式已經分發）的情況下，程式的所有其他原始碼才能在相同的許可條款下提供。GNU較寬鬆公眾授權條款（LGPL）被創建為具有比GPL更弱的Copyleft，因為它不需要在相同的許可條款下提供自己客製化的原始碼（不同於LGPLed部分）。

Copyleft

GPL授權版本的修改後作品的發行權不是無條件的。 當有人分發GPL的作品又加上自己的修改時，分發整個作品的要求不能大於GPL中的要求。這個要求被稱為Copyleft。 它通過軟體程式使用著作權獲得法律權力。 由於GPL的作品受著作權保護，被許可人無權重新分發，即使是以修改形式（除合理使用 ）外，除了許可條款外， 如果希望行使通常受著作權法限制的權利，例如重新分配，只需遵守GPL的條款。 相反，如果在不遵守GPL條款（例如保留原始碼秘密）的情況下分發作品的副本，則原始作者可以根據著作權法提起訴訟 。因此，「Copyleft使用著作權法來完成」與常見法律的設定目的相反，不是施加限制，而是「賦予其他人權利，以確保權利不能隨之被剝奪的方式。」如果在Copyleft聲明中找到任何法律缺陷，它也可以確保不給予無限的重新分發權限。
許多GPL程式的經銷商將原始碼與可執行檔案捆綁在一起 。 滿足Copyleft的替代方法是提供書面報價，以便在物理介質（如CD）上提供原始碼。 實際上，許多GPL的程式通過Internet進行分發，原始碼通過FTP 或 HTTP提供。對於網際網路分發，這符合授權條款。只有當一個人試圖重新分發程式時，Copyleft才適用。 只要不將修改後的軟體分發給任何人，開發人員可以製作私有修改版本，無需洩露修改。 請注意，Copyleft僅適用於軟體，而不適用於其輸出（除非該輸出本身是程式的衍生作品）。
例如，運行GPL內容管理系統（CMS）修改版的衍生產品之公共門戶網站不需將其更動分發給底層軟體，因為其輸出不是衍生產品。
有人辯論，如果以程式碼混淆形式發布原始碼是否違反GPL，例如在作者不太願意提供原始碼的情況下。普遍認為雖然這是不道德的，但無法認為是違法行為。 這問題已得到澄清：當授權條款被更改為v2時，就需要提供原始碼的「首選」版本。

授權條款與合同的區別

GPL被設計為授權條款 ，而不是合同。在一些普通法（Common Law）司法管轄區，授權條款和合同之間的法律區別是重要的：合同可以通過合同法執行，而授權條款是根據著作權法執行的。 然而，這種區別對於合同和執照之間沒有區別的許多司法管轄區（如民法系統）並不有用。
GPL原理很簡單：在著作權法下，你不遵守GPL的條款和條件你就沒有相對應的權利。而作品在沒有GPL的情況下，著作權法作為默認條款發生效力，而不是作品進入公有領域。 那些不接受GPL條款和條件的人根據著作權法沒有許可複製或分發GPL許可軟體或衍生作品。 然而，如果他們不重新分發GPL的程式，他們仍然可以按自己的喜好使用組織內的軟體，使用該程式構建的工程（包括程式）不需要被該授權條款覆蓋。
艾里遜·蘭德爾認為，GPLv3作為授權條款對於讀者來說是不必要的混亂，可以在保留相同的條件和法律效力的情況下進行簡化。

衍生或擴展性

GPL的文案本身，受著作權保護 ，著作權由自由軟體基金會持有。GPL的文案本身，卻不在GPL之下。 經許可的著作權不允許修改授權條款。 允許複製和分發授權條款，因為GPL要求收件人獲得「本授權條款與本計劃一起」的副本。 [62]根據GPL常見問題，任何人都可以使用GPL的修改版本，只要他或她使用不同的名稱作為授權條款，不提「GNU」，並刪除前言，儘管如果使用自由軟體基金會（FSF）獲得許可，則序言可以在修改後的授權條款中使用。
FSF允許人們根據GPL創建新的授權條款，只要衍生的授權條款未經許可不使用GPL前綴。 然而，這是不鼓勵的，因為這樣的授權條款可能與GPL不相容，並導致感染的授權條款擴散（license proliferation）。
由GNU項目創建的其他授權條款包括GNU通用公眾授權條款，GNU自由檔案授權條款和Affero通用公眾授權條款。

爭議：非GPL軟體是否可以合法地連結或動態地連結到GPL函式庫

據FSF稱，「GPL不要求您發布修改版本，或其任何部分，您可以自由地進行修改和留作私人使用，而無需發布。」然而若是向公眾發布GPL許可的實體，則有連結的問題：換言之，「使用GPL函式庫的專利程式是否違反了GPL ？」
這個關鍵的爭議的重點是「非GPL軟體是否可以合法地連結或動態地連結到GPL函式庫」。這個問題有不同的看法。GPL清楚地表明，GPL下的所有衍生作品程式碼都必須屬於GPL。關於使用GPL函式庫和將GPL軟體捆綁到更大的包中（可能通過靜態連結混合成二進制檔案），會出現歧義。這最終不是GPL 本身的問題，而是著作權法如何界定衍生作品。有以下觀點存在：

觀點：動態和靜態連結違反GPL

自由軟體基金會（其擁有若干著名的GPL軟體產品和授權文字本身的著作權）聲稱，使用動態連結函式庫的可執行檔確實是衍生作品。然而，這不適用於彼此通訊的單獨程式。自由軟體基金會還創建了LGPL，LGPL與GPL極為相似，但額外允許以「使用函式庫」為目的的連結。理察·斯托曼和自由軟體基金會特別鼓勵函式庫作者根據GPL來進行授權，以便專有程式無法使用GPL函式庫，透過為自由軟體世界提供比專有世界更多的工具來保護自由軟體世界。

觀點：靜態連結違反GPL，但動態連結則有待釐清

有些人認為，當靜態連結產生衍生作品時，不清楚動態連結到GPL程式碼的可執行檔是否應被視為衍生作品（請參閱Weak Copyleft）。Linux作者Linus Torvalds同意動態連結可以創建衍生作品，但在這種情況下不一致。一位Novell律師寫道，動態連結不算是衍生作品的觀點合理但是不夠明確，專有的Linux核心驅動程式就是善意的動態連結的一大明證。在Galoob對任天堂案中，美國第九巡迴上訴法院將衍生作品定義為具有「形式」或「永久性」，並指出「侵權作品必須以某種形式包含一部分受著作權保護的作品」，但是沒有明確的法院裁決來解決這一特定的衝突。

著作權所有人

GPL文字是著作權所有的，且著作權人是自由軟體基金會。但是，自由軟體基金會沒有在GPL下發行作品的著作權（除非作者指定自由軟體基金會是著作權人）。通常認為，只有著作權人才有權對授權條款的違反進行起訴，但是那並不准確。法國的一個教育組織AFPA於2000年從Edu4購買課堂使用的電腦裝置發現其使用GPL軟體但並未附帶原始碼。 
自由軟體基金會允許人們使用以GPL為基礎的其他授權條款，但不允許演繹的授權條款未經授權地使用GPL的前言。不過像這樣的授權條款通常與GPL不相容。
GNU計劃創立的其他授權條款包括：GNU寬通用公眾授權條款和GNU自由文檔許可證。

相容性

大多數自由軟體授權條款，比如MIT/X授權條款、BSD授權條款、LGPL，都是「 GPL相容的」，即它們的程式碼與GPL程式碼混用無衝突（但新程式碼則是GPL下的）。但是有某些開源軟體授權條款不是GPL相容的。通常意見是開發者僅只使用GPL相容的授權條款，以免法律問題。
參見軟體授權條款列表以查證相容性。

批評

2001年微軟的首席執行官史蒂夫·巴爾默稱Linux為「癌症」，因為GPL的影響。微軟批評者指出，微軟憎惡GPL的真正原因是因為GPL對微軟的「包圍、擴展、消滅」策略起了反作用。注意微軟已以GPL為授權條款發行了SFU（Microsoft Windows Services for UNIX）中所包含的部分組件，例如GCC。
GPL的批評者常常認為GPL是有「傳染性」的「病毒」，因為GPL條款規定演繹作品也必須是GPL的。由於「演繹作品」通常被解釋為包含GPL程式碼或動態連結到GPL庫（如上）的軟體，「病毒說」來源於GPL對於授權條款的強制繼承的要求。這正是GPL與BSD式授權條款的哲學思想上的差異。 GPL的支持者確信自由軟體世界應具有自我保護能力和可持續發展性——確保自由軟體的演繹作品同樣「自由」，但其他人認為自由軟體應給予「所有人」最大的自由。
不同版本之間的GPL並不相容。例如，當原始的作品以GPLv2發布，而補丁以GPLv3發布時，因為這樣的原因，其編譯之後產生的二進製版本不可以再行傳播。因此，FSF通常會推薦以「GPLv2 or later」這樣的形式來標示授權授權條款，或GPLv2 + GPLv3雙授權條款以規避這一問題。