LGPL

LGPL

LGPL是 GNU Lesser General Public License (GNU 寬通用公共許可證)的縮寫形式,舊稱GNU Library General Public License (GNU 庫通用公共許可證),後來改稱作Lesser GPL,即為更寬鬆的GPL,在寬鬆程度上與BSD, Apache,XFree86 許可證相似。GPL(General Public License)和LGPL是GNU的兩種License。越來越多的自由軟體(Free Software)使用GPL作為其授權聲明,如果對GPL一點都不了解,有可能在使用自由軟體時違反GPL的授權,恐怕會有被起訴的風險。所以任何公司在使用自由軟體之前應該保證在LGPL或其它GPL變種的授權下。

概念


Log4cpp最初的版本使用GPL作為授權聲明的,在0.2.1版本以後改用更為寬鬆的LGPL。LGPL最初是Library GPL的縮寫,後來改稱作Lesser GPL,即為更寬鬆的GPL。當一個自由軟體使用GPL聲明時,該軟體的使用者有權重新發布、修改該軟體,並得到該軟體的源代碼;但只要使用者在其程序中使用了該自由軟體,或者是使用修改後的軟體,那麼使用者的程序也必須公布其源代碼,同時允許別人發布、修改。也就是說,使用GPL聲明下的自由軟體開發出來的新軟體也一定是自由軟體。
LGPL是GPL的變種,也是GNU為了得到更多的甚至是商用軟體開發商的支持而提出的。與GPL的最大不同是,可以私有使用LGPL授權的自由軟體,開發出來的新軟體可以是私有的而不需要是自由軟體。所以任何公司在使用自由軟體之前應該保證在LGPL或其它GPL變種的授權下。

論述


為什麼你不應該使用LGPL發布你的下一個庫
GNU計劃在使用庫時有兩個首要的許可證。一個是GNU LGPL(庫GPL);另一個是普通的GNU GPL.選擇不同的許可有很大的不同:選擇LGPL允許在私有程序中使用該庫;選擇普通的GPL則只允許在自由軟體中使用它。
關於哪一種許可證對指定的庫是最好的這一問題實際上是一個策略問題,它取決於實際情況。當前,大多數的GNU庫被採用LGPL,這意味著我們只使用著其中的一個策略,而忽略了另一個. 所以我們在尋求更多以普通的GPL許可證形式發布的庫。
私有軟體開發者有金錢上的優勢;自由軟體開發者需要相互之間利用各自的優勢。對一個庫採用普通的GPL對自由軟體開發者的優勢要大於對私有軟體開發者:他們可以使用的庫對於私有軟體開發者是不可利用的。
使用普通的GPL並不是對於所有的庫都有好處。在某些情況下更有理由來使用LGPL。最常見的情況就是當一個自由庫的特性可以很容易地被私有軟體以其他可替代庫來實現。在這種情況下,庫不能給與自由軟體任何特別的優勢,因而最好還是為LGPL發布該庫。
這也就是為什麼我們為GNU C 庫選擇LGPL.總之,有很多的其他C庫;我們使用GPL發布該庫,將迫使私有軟體開發者不得不使用其它的庫--對他們來說這不成問題,而我們則有了麻煩.
然而,當一個庫所提供的功能是非常獨特的時候,如GNU Readline,情況就大不一樣了。Readline庫可實現輸入編輯和記錄互動式程序操作,這在別處通常是不可多得. 在GPL下發布它並限制它只能在自由程序中使用,這對我們的社團是一個重要的促進。至少今天某個應用程序之所以是自由軟體,只是因為它必需要用到Readline。
如果我們收集一些強大的、私有軟體中沒有相類似東西的、採用GPL的庫,它們將提供一系列有用的模塊用於新的自由軟體的構造.。這對於將來的自由軟體開發將是一個顯著的優勢,一些項目將為了使用這些庫而考慮使軟體自由化。大學的項目是易於被影響的;而且今天,隨著某些公司開始考慮使軟體自由化,甚至一些商業項目也會由此受到影響。
私有軟體開發者試圖否認自由競爭的重要性,他們會拚命說服作者不要將庫使用GPL來發布。例如,他們會呼籲利己主義,信誓旦旦地說如果我們讓他們在私有軟體產品中使用代碼,將有“更多的用戶”用到該庫。流行是一種誘惑,它使一個庫開發者傾向於相信這種觀點:社會首先需要的是促進一種庫的流行。
但是我們不應該聽從這種誘惑,因為如果我們聯合起來,我們可以做得更好。我們這些自由軟體開發者應該相互支持。通過發布只能為自由軟體使用的庫,我們可以互相幫助,使彼此的自由軟體包優於其它的私有替代品。整個自由軟體運動將會有更多的機會,因為自由軟體作為一個整體將會在競爭中表現更佳。
因為"LGPL(Library GPL)"的稱呼傳達了關於這一問題的錯誤觀點,我們計劃將稱呼改為"次級GPL(Lesser GPL)".事實上要更換名稱要花一定的時間,但你不必再等--你可以發布應用GPL許可證的庫。

導言


大多數軟體許可證決意剝奪您共享和修改軟體的自由。相反的,GNU 通用公共許可證力圖保證您共享和修改自由軟體的自由 —— 保證自由軟體對所有使用者都是自由的。
這個許可證,較寬鬆公共許可證,適用於一些由自由軟體基金會與其他決定使用此許可證的軟體作者,所特殊設計的軟體套件 —— 象是函數庫。您也可以使用它,但我們建議您事先仔細考慮,基於以下的說明是否此許可證或原來的通用公共許可證在任何特殊情況下均為較好的方案。
當我們談到自由軟體時,我們所指的是自由,而不是價格。我們的 GNU 通用公共許可證是設計用以確保使您有發布自由軟體備份的自由(如果您願意,您可以對此項服務收取一定的費用);確保您能收到程式原始碼或者在您需要時能得到它;確保您能修改軟體或將它的一部分用於新的自由軟體;而且還確保您知道您可以做上述的這些事情。
為了保護您的權利,我們需要作出限制:禁止任何人否認您上述的權利,或者要求您放棄這些權利。如果您發布軟體的副本,或者對之加以修改,這些規定就轉化為您的責任。
例如,如果您發布此函數庫的副本,不管是免費還是收取費用,您必須將您享有的一切權利給予接受者;您必須確保他們也能收到或得到原始程式碼;如果您將此函數庫與其他的程式碼連結,您必須提供完整的目的對象文件和程序(object file)給接受者,則當他們修改此函數庫並重新編譯過後,可以重新與目的檔連結。您並且要將這些條款給他們看,使他們知道他們有這樣的權利。
我們採取兩項措施來保護您的權利: (1)用版權來保護函數庫。並且,(2)我們提供您這份許可證,賦予您複製,發布和(或)修改這些函數庫的法律許可。
為了保護每個發布者,我們需要非常清楚地讓每個人明白,自由函數庫是沒有擔保責任的。如果由於某人修改了函數庫,並繼續加以傳播,我們需要它的接受者明白:他們所得到的並不是原始的版本。故由其他人引入的任何問題,對原作者的聲譽將不會有任何的影響。
最後,由於軟體專利不斷地威脅自由軟體的存在,我們希望商業公司無法藉由自專利持有者取得一個受限的許可證,而有效地限制自由軟體的使用者。因此,我們堅持一個函數庫所能取得的任何專利,必須與本許可證所聲明的“完全自由使用”一致。
大部分的 GNU 軟體,包括一些函數庫,是受到原來的 GNU 通用公共許可證的保護。本許可證, GNU 較寬鬆通用公共許可證,適用於特殊設計的函數庫,且與原來的通用公共許可證有很大的不同。我們在特定的函數庫中使用它,以准許非自由的程式可以與這些函數庫連結。當一個程式與一個函數庫連結,不論是靜態連結或使用共享函數庫,二者的結合可以合理地說是結合的作品,一個原來的函數庫的衍生品。因此,原來的通用公共許可證只有在整個結合品滿足其自由的標準時,才予許連結。較寬鬆通用公共許可證則以更寬鬆的標準允許其他程式碼與本函數庫連結。
我們稱此許可證 "較寬鬆" 通用公共許可證,是因為它比起原來的通用公共許可證對使用者的自由做到較少的保護。在與非自由軟體競爭時,它也提供其他自由軟體的寫作者較少的優勢。這些不利之處正是我們使用原來的通用公共許可證於許多函數庫的理由。然而,較寬鬆的許可證可在某些特殊場合下帶來好處。例如,在少數情況下,可能會有特殊的需要而鼓勵大家儘可能廣泛地使用特定的函數庫,因而使它成為實際上的標準。為了達到此目標,必須允許非自由的程式使用此函數庫。一個較常發生的情況是一個自由的函數庫與一個被廣泛使用的非自由函數庫做相同的工作,在此情況下,限制只有自由軟體可以使用此自由函數庫不會有多少好處,故我們如用了較寬鬆通用公共許可證。
在其他情況下,允許非自由程式使用特定的函數庫,可以讓更多的人們使用自由軟體的大部分。例如,允許非自由程式使用 GNU C 函數庫可以讓更多的人們使用整個 GNU 作業系統,以及它的變形,GNU/Linux 作業系統。
儘管較寬鬆通用共公許可證對使用者的自由是較少的保護的,它卻能確保與此函數庫連結的程式的使用者擁有自由,而且具有使用修改過的函數庫版本來執行該程式的必要方法。
以下是複製、發布、以及修改的精確條款與條件。請注意 "基於函數庫的作品" 以及 "使用函數庫的作品" 之間的差異:前者包含來自函數庫修改過的原始碼;而後者則必須與函數庫結合才能執行。

條款條件


0. 本許可證適用於任何軟體函數庫,或其他包含了由版權所有者加入的注意事項的程式,或其他有公信力的團體宣稱其程式可以在較寬鬆通用公共許可證 (也稱之為 "本許可證") 的條款下發布。每一位許可證接受者以 "您" 來稱呼。
一個 "函數庫" 意指一些軟體函數的集合,以及或準備好的資料以方便與應用程式 (其使用了其中某些函數與資料) 連結形成可執行的程式。
以下,"函數庫" 一詞指的是任何在本條款下發布的這一類軟體函數庫或作品,一個 "基於本函數庫的作品" 意指函數庫或任何在版權法下的衍生作品:也就是說,一個包含了本函數庫或其一部分的作品,可以是原封不動的,或經過修改的,和/或直接翻譯成其他語言的。(在下文中,翻譯是不受限地包含在 "修改" 的條款中。)
作品的 "原始碼" 意指對作品進行修改最優先擇取的形式。對函數庫而言,完整的原始碼意指所有模組的所有原始程式,加上有關的介面的定義,加上控制函數庫的安裝和編譯的 script。
本許可證條款不適用於複製,發布和修改以外的活動。這些活動超出這些條款的範圍。使用本函數庫來執行本程式的動作不受條款的限制,而程式的輸出只有在其內容所構成的作品是基於本函數庫時 (與在什麼樣的工具中使用本函數庫來輸出無關) ,這一條款才適用。以上是否為真則取決於本函數庫具體用來做什麼。
1. 只要您在每一程式副本上明顯和恰當地宣告版權聲明和不承擔擔保的聲明,並保持此許可證的聲明和沒有擔保的聲明完整無損,並和程式一起給其他每位程式接受者一份許可證的副本,您就可以用任何媒體複製和發布您收到的函數庫的完整原始碼。
您可以為轉讓副本的實際行動收取一定費用。您也可以選擇提供擔保以換取一定的費用。
2. 只要您同時滿足下面的所有條件,您就可以按前面第一款的要求修改函數庫的一個或幾個副本或它的任何部分,以此形成基於此函數庫的作品,並且複製和發布這一經過修改的程式或作品:
被修改的作品本身必須是一個軟體函數庫。
您必須在修改過的檔案中附有明確的說明:您修改了此一檔案及任何修改的日期。
您必須讓整個作品允許第三方在此許可證條款下可以免費使用。
如果修改過的函數庫其某個設備使用到了「使用本函數庫的應用程式」所提供的函數或資料表格,卻不是當此設備被呼叫時以參數列傳入時,則您必須確實做到,當應用程式不提供這樣的函數或表格時,則此設備依舊能工作,且其執行的任何目的仍然有意義。
(例如,一個函數庫的函數用來計算平方根,其目的是有完整的定義且與應用程式是無關的。因此, 2d 小節要求任何本函數會使用的,由應用程式所提供的函數或表格必須是選擇性的:如果應用程式不提供的話,則計算平方根的函數必須依舊能計算平方根)
這些要求適用於整個修改過的作品。如果能夠確定作品的一部分並非本函數庫的衍生產品,且可以合理地單獨考慮並將它與原作品分開的話,則當您將它作為獨立的作品發布時,它不受此許可證和其條款的約束。但是當您將這部分與基於本函數庫的作品一同發布時,則整個套件將受到本許可證條款約束,其對於其他許可證持有人的使用範圍擴大到整個產品,也就是套件的每個部分,不管它是誰寫的。
因此,本條款的意圖不在於索取權利,或剝奪完全由您完成的作品的權利,而是履行權利來控制基於本函數庫的集體作品或衍生作品的發布。此外,將與本函數庫無關的作品和本函數庫 (或基於本函數庫的作品) 一起放在貯存媒體或發布媒體的同一卷上,並不導致將其他作品置於此許可證的約束範圍之內。
3. 對於一個函數庫的副本,您可以選擇性地使用原來的 GNU 通用公共許可證上的條款來取代本許可證上的條款。如果您要這麼做,您必須修改所有的參考到本許可證的注意事項,使它們指向原來的 GNU 通用公共許可證,第二版,以取代本許可證(如果有比第二版的原來的 GNU 通用公共許可證更新的版本出現的話,則如果您願意的話可以特別指明使用新版)。請不要對這些注意事項做出其他的改變。
一旦在一個副本上做了這樣的改變,則該副本就無法撤回這樣的改變,故原來的 GNU 通用公共許可證將適用於所有後續的副本以及由此副本衍生出來的作品。
此一選擇性適用於當您想要將一部分的函數庫原始碼複製到一個非函數庫的程式使用時。
4. 您可以以目標碼或可執行形式複製或發布本函數庫 (或符合第 2 款,基於本函數庫的作品),只要您遵守前面的第 1、2 款,並同時提供完整的相關機器可讀的原始碼,而這些原始碼必須在前面的第 1 與第 2 款條件下,在一般習慣上用來做軟體交換的媒體上發布。
如果所發布的目標碼是由指定的地點提供拷貝索取,那麼由同一地點所提供等價的原始碼拷貝索取可以算作原始碼的發布,即使第三方不強求與目標碼一起複制原始碼。
5. 一個程式若包含不經任何部分修改的函數庫,但卻是設計經由編譯或連結的方式與本函數庫一同工作者,稱之為 "使用函數庫的作品"。這樣的一個作品,嚴格地說,並非本函數庫的衍生作品,因而不在本許可證的範圍之內。
然而,將 "使用函數庫的作品" 與本函數庫連結而產生可執行程式,則是本函數庫的衍生品 (因為它包函了本函數庫的一部分),而不是 "使用函數庫的作品",因此其可執行程式包含在本許可證的範圍內。第 6 款說明了發布此可執行程式的條款。
當 "使用函數庫的作品" 使用了函數庫部分的標頭檔內容時,則此作品即使其原始碼不屬於本函數庫的衍生品,但其目標碼仍然是。這一點是否為真特別在是否本作品可以在不需要本函數庫即可連結,或者是否該作品本身也是一個函數庫時特別明顯。
如果這樣的目標檔只使用數字參數、資料結構層級與附屬品、以及小巨集和小內□式 (小於或等於十行) ,則此目標檔的使用是不受限的,不論是否它是合法的衍生作品。 (但可執行程式若包函此目標檔以及一部分的函數庫,仍然將在第 6 款的規定下)
否則的話,如果本作品是本函數庫的衍生品,您必須在第 6 款的規定下發布該作品的目標碼。任何包含該作品的可執行程式也在第 6 款的範圍內,不論它們是否直接與本函數庫連結。
6. 做為上述條款的例外情況,您也可以將 "使用函數庫的作品" 與本函數庫結合或連結,以產生包含部分本函數庫的作品,並在允許使用者自身使用時可以修改該作品,以及在對修改進行反組譯除錯的情況下,您可以依照您的選擇發布該作品。
您必須在每個作品的副本突顯出如下的注意事項:本函數庫在作品中被使用,以及本函數庫以及它的使用是在本許可證的規定下。您必須提供本許可證的副本。如果該作品在執行時顯示版權聲明,您必須在其中包含本函數庫的版權聲明,以及指引使用者取得本許可證的副本。同時,您必須做到以下其中一件事:
必須將完整的機器可讀的函數庫原始碼包含在該作品中,包括任何該作品使用到的改變 (這些改變必須在前述第 1 與第 2 款的要求下發布);而且,如果該作品是一個與函數庫連結的「完整的、機器可□的 "使用函數庫的作品"」,則要有目標碼和/或原始碼,如此使用者可以修改本函數庫且可以重新連結,以產生包函修改過的函數庫的修改過的可執行程式。 (理所當然的若使用者修改了函數庫的檔案定義內容時,則該作品不必然可以重新編譯以使用修改過的定義。)
在與函數庫連結時使用適當的分享函數庫連結機制。一個適當的機制是: (1) 在執行時使用已存在於使用者的電腦中的函數庫副本,而不是將函數庫的函數複製到可執行程式里,以及 (2) 如果使用者安裝了一份修改過的函數庫,只要修改過的版本在介面上與該作品在編譯連結時所用的版本是相容的,則該執行程式可以與修改過的函數庫運作良好。
在該作品內提供書面報價,有效期不少於三年,以提供同樣的使用者上述第 6a 款中的內容,費用不得超過該程式發布的實際成本。如果所發布的作品是由指定的地點提供拷貝索取,則由同一地點提供上述內容的等價拷貝索取。
確定使用者已經收到該作品的一份複製,或是您已經寄給該使用者一份複製品。
對於一個可執行程式,其所需的 "使用函數庫的作品" 的形式必須包括任何要從中再產生可執行程式時所需的資料與工具程式。然而,有一個特殊例外,其所發布的內容不需要包括任何一般與「可執行本程式的作業系統」的主要部分 (如編譯器、核心等) 一起發布的部分 (不論是原始碼或可執行碼),除非這些組成部分和可執行作品結合在一起。
有一個可能情況是,這些要求與其他通常不與作業系統在一起的私有函數庫的版許可權制相抵觸,這樣的抵觸表示您不能將它們與本函數庫一起用於您發布的可執行程式中。
7. 您可以將使用本函數庫的函數庫設備,以及其他不在本許可證範圍內的函數庫,對等地放入一個單獨的函數庫中,並在基於本函數庫的作品以及其他函數庫在其他狀態下同意可以個別發布,以及您做到以下兩點的情況下,您可以發布此結合的函數庫:
將基於本函數庫的作品單獨不與其他函數庫設備結合地,與此結合的函數庫一同發布。該作品必須在上述條款的規定下發布。
在此結合的函數庫中明顯地指出其中一部分的作品是基於本函數庫,並且說明那裡可以找到同樣不具結合形式的作品。
8. 除非您明確按許可證提出的要求去做,否則您不能複製、修改、轉發許可證、與本函數庫連結、和發布本函數庫。任何試圖用其他方式複製、修改、轉發許可證、與本函數庫連結、和發布本函數庫是無效的,而且將自動結束許可證賦予您的權利。然而,對那些從您那裡按許可證條款得到副本和權利的人們,只要他們繼續全面履行條款,許可證賦予他們的權利仍然有效。
9. 您沒有在許可證上簽字,因而您沒有必要一定接受此一許可證。然而,沒有任何其他東西賦予您修改和發布本函數庫及其衍生作品的權利。如果您不接受許可證,這些行為是法律禁止的。因此,如果您修改或發布函數庫 (或任何基於函數庫的作品) ,您就表明您接受這一許可證以及它的所有有關複製、發布和修改本函數庫或基於它的作品的條款和條件。
10. 每當您重新發布函數庫 (或任何基於函數庫的作品) 時,接受者自動從原始許可證頒發者那裡接到受這些條款和條件支配的複製、發布、連結或修改本函數庫的許可。您不可以強迫接受者履行除了這裡賦予他們的權利之外的其他限制。您也沒有強求第三方履行許可證條款的義務。
11. 如果由於法院判決或違反專利的指控或任何其他原因 (不限於專利問題) 的結果,使得強加於您的條件 (不管是法院判決,協議書或其他) 和許可證的條件有衝突時,他們也不能令您背離許可證的條款。在您不能同時滿足本許可證規定的義務及其他相關的義務來發布函數庫時,則結果您只能夠根本不發布函數庫。例如,如果某一專利許可證不允許所有直接或間接從您那裡接受副本的人們,在不付專利費的情況下重新發布函數庫,唯一能同時滿足兩方面要求的辦法是停止發布函數庫。
如果本條款的任何部分在特定的環境下無效或無法實施,就使用條款的其餘部分,並將這部分條款作為整體用於其他環境。本條款的目的不在於引誘您侵犯專利或其他財產權的要求,或爭論這種要求的有效性。本條款的主要目的在於保護自由軟體發布系統的完整性。它是通過公共許可證的應用來實現的。許多人已依賴同是出自此系統的應用程式,經由此系統發布大量自由軟體而做出慷慨的供獻。作者/捐獻者有權決定他/她是否通過任何其他系統發布軟體,許可證持有人不能強加這種選擇。
本節的目的在於明確說明許可證其餘部分可能產生的結果。
12. 如果由於專利或者由於有版權的介面問題使函數庫在某些國家的發布和使用受到限制,則在許可證約束下的原始版權擁有者可以增加發布地區的限制條款,將這些國家明確排除在外,並在這些國家以外的地區發布函數庫。在這種情況下,許可證套件含的限制條款和許可證正文一樣有效。 13. 自由軟體基金會可能隨時出版較寬鬆通用公共許可證的修改版或新版。新版和當前的版本在原則上保持一致,但在提到新問題時或有關事項時,在細節上可能出現差別。
每一版本都有不同的版本號。如果函數庫指定可適用的許可證版本號以及 "任何更新的版本" ,您有權選擇遵循指定的版本或自由軟體基金會以後出版的新版本。如果函數庫未指定許可證版本,您可選擇自由軟體基金會已經出版的任何版本。 14. 如果您願意將函數庫的一部分結合到其他自由程式中,而它們的發布條件不同,請寫信給作者,要求准予使用。如果是自由軟體基金會加以版權保護的軟體,寫信給自由軟體基金會,我們有時會作為例外的情況處理。我們的決定受兩個主要目標的指導,這兩個主要目標是:我們的自由軟體的衍生作品繼續保持自由狀態,以及從整體上促進軟體的共享和重複利用。
沒有擔保
15. 由於函數庫准予免費使用,在適用法准許的範圍內,對函數庫沒有擔保。除非另有書面說明,版權所有者和/或其他提供函數庫的人們 "一樣" 不提供任何類型的擔保,不論是明確的,還是隱含的,包括但不限於可銷售和適合特定用途的隱含保證。全部的風險,如函數庫的質量和性能問題都由您來承擔。如果函數庫出現缺陷,您應當承擔所有必要的服務、修復和改正的費用。
16. 除非適用法或書面協議的要求,在任何情況下,任何版權所有者或任何按許可證條款修改和發布函數庫的人們都不對您的損失負有任何責任。包括由於使用或不能使用函數庫引起的任何一般的、特殊的、偶然發生的或重大的損失 (包括但不限於數據的損失,或者數據變得不精確,或者您或第三方的持續的損失,或者函數庫不能和其他軟體協調運行等) 。即使版權所有者和其他人提到這種損失的可能性也不例外。