QT 商用 [如果一個商業公司用QT給國內客戶開發商業軟件,那麼需要給QT官方付費嗎?]

QT 商用 [如果一個商業公司用QT給國內客戶開發商業軟件,那麼需要給QT官方付費嗎?]

QT 商用 [如果一個商業公司用QT給國內客戶開發商業軟件,那麼需要給QT官方付費嗎?]


資料來源: https://bbs.csdn.net/topics/392011688

https://progressbar.tw/posts/97

http://www.qteverywhere.com/

https://blog.csdn.net/u012692537/article/details/68942657

http://www.gnu.org/licenses/lgpl-3.0.html

https://blog.csdn.net/changsheng230/article/details/5761519


關於這個問題,先要對開源協議有個基本了解
QT開源版有GPL與LGPL協議
如果使用QT的開源版,就要遵守開源協議
關於LGPL與GPL想了解更多的話,看下面的連接。下面我會將其中重點寫出來。
http://www.cnblogs.com/findumars/p/3496807.html

其中,GPL協議是嚴格的
簡單說,GPL軟件的使用者有權力得到軟件的代碼,只要使用了GPL,在發布(redistribution)的時候,整個項目也必須是GPL的,即主程序和靜態鏈接的庫(Linux的.a和Windows的.lib)必須是GPL的,動態鏈接庫(Linux的.so,Windows的.dll)必須是比GPL兼容的。所謂GPL兼容,也就是GPL軟件中可以使用的庫,這些許可證必須比GPL弱(如LGPL,BSD),而不能是某個商業許可證。這裡有一個兼容列表List of FSF approved software licenses。正因如此,GPL是帶有很強的傳染性,只要你的軟件使用了GPL的代碼,那麼就請以GPL開放源代碼吧,並且你的項目中也不能有任何和GPL不兼容的庫。

只要你的軟件使用了GPL的代碼,那麼就請以GPL開放源代碼吧。
梳理一下:
如果你遵守QT的GPL開源協議,使用了開源的QT庫,那麼你的軟件也應該開源。沒法商用。

如果你想用QT的開源版庫,還想讓使用了QT開源版庫的軟件閉源,商用。
那麼你需要了解一下QT的LGPL。
想了解更多的話,下面這個博客。
http://www.cnblogs.com/findumars/p/5553490.html

簡要的說
LGPL是GPL的一個為主要為類庫使用設計的開源協議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須採用GPL協議不同。LGPL允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件的代碼。這使得採用LGPL協議的開源代碼可以被商業軟件作為類庫引用並發布和銷售。

使用LGPL協議開發閉源程序,如果你使用動態鏈接的形式,那麼,你可以以任何形式發布你的應用程序,商業的、非商業的、開源的、非開源的,隨你。

也就是說

閉源商業軟件可以免費使用LGPL的開源版Qt。

關於發布:
http://bbs.csdn.net/topics/350224093 ←看這個帖子的42L-45L

大概就是這樣了,根據我查的各種資料來看,應該就是以上結論。


~~~~~~

在 QT 4.7版以前,也是複合型的授權。
你可以使用免費的 GPL,或者是”每月“459美元的授權費(每個月付14,000新台幣,連微軟都沒那麼誇張。)
但是在 QT 4.7版以後改成了現在的 LGPL 授權(因為 GPL 感染性,所以不是所有人都可以改,只有撰寫的那個團隊才行)

LGPL 是怎樣的授權,就還請繼續往下看

所以簡單來說,當你使用了 GPL 的東西來做為你開發程式上的一部分時,你就已經被納入了開源的共產社區了,儘管這是開源的好意,但這樣的善意要我們照單全收似乎也太過嚴苛了吧,而在 V3 版的 GPL,還可以讓你賭氣要求選擇是否可一併保障該作品未來版本的"更版"及修正,一律冠上 GPL。

我開源,我未來的子孫都要開源,這真是有點過分啊!!

但好險,有問題就會有因應的解法,現在有一個解法已經誕生了,也就是 GNU Lesser General Public License ,LGPL。

由於 GPL 過於嚴格,也間接影響到了程式碼的被採用率,畢竟開發的目的就是為了營利,相信這對很多人來說都是共通的目標,而這個 LGPL,從字面上來看其實就是所謂的鬆綁版的GPL啦,目前也出到了第三版了,儘管這個 License 仍受到 「copyleft」的規範,但定義上來看即為「較寬鬆的 GPL」

LGPL 是自由軟體基金會 (Free Software Foundation, FSF) 針對函式庫類別程式所特別撰寫出來的自由軟體授權條款,這是因為函式庫本身的性質有關,多半句有函式庫類型的程式,本身就很容易透過連結(Link)的方式來做呼叫以及取用,並提供各種類別的儲存資訊及運算結果給其他軟體或是原件給利用,但若是這樣的函式庫本身是屬於 GPL 的規範的話,也意味著這樣只要使用到函式庫的程式也必須使用 GPL 來做 License

但這樣本身也太過嚴格了吧,一來函式庫本身並不屬於獨立程式,二來這樣的定義太過狹隘,以後誰還敢碰有GPL的函式庫阿..

所以 GNU 考量到函式庫本身的應用推廣,為避免讓大家退避三舍,就以 GPL 為範本修改出 LGPL,來規定若是用了 LGPL,單純的函式庫乎叫本身並不需要被 LGPL 的拘束性給規範,來做為推廣函式庫的一大利器,也讓這樣更符合開源及應用的初衷,但當然 GPL 畢竟仍然屬於 Licence 的一種,本身也包含著所謂的"必須" 或 "但是"囉!

先來為各位解釋一下"必須"吧:若今天使用者參考了 LGPL License 的軟體(包含函式庫),進行任何改動、和/或再次開發並予以發佈,則您的產品必須一樣被感染上了 LGPL 協定,並且開源,並於 LGPL 協議內提供修正處的文字檔,來提示各位我們這一次引用了什麼,修改了什麼,並且仍然無私的奉獻給大家,所以 LGPL 還是具備著所為的病毒性和擴散性。

但是如果僅是針對 LGPL 的軟體進行任何調用、連接而非包含、修改後再利用,則可以不需開源,也就是可以封閉並做商業利用啦。這個"可是"不僅僅是針對了函式庫,本身其實也對 LGPL 內的應用方式做出了鬆綁。也就是所謂的「 LGPL 約束性不包含在僅透過定式介面或流程呼叫具 LGPL 性質的函式庫」,因為通常透過這種方式來呼叫的動態連結裏面,並不會涉及到被呼叫的程式碼。

所以將 LGPL 的產品思考到商業模式上是比 GPL 較為可行的,例如 ffmpeg 是一個同時以 GPL 和 LGPL 發佈專案,其中內容結合多媒體框架與播放解碼器 (codec) ,在基礎功能部分以 LGPL 發佈,但其中有一部份"最佳化部分播放"功能則以 GPL 發佈。這也意味著若是你僅參考基礎功能的函式庫,那你不開源並做販售是沒有問題的

正因為 LGPL 是鬆版的 GPL,所以你可以從嚴認定,讓 LGPL 轉變成 GPL 再向外散佈是可行的,但 GPL 可就不能從寬認定為 LGPL 囉, 例如你引用了 LGPL 的函式庫,但是卻加以修正,把函式庫這種動態連結的引用特性給移除的話(就是把 LGPL 的函式庫修正為非函式庫的特性),那就只能把他從寬鬆的LGPL 升等成 GPL 了。

而在文章一開始提到的 Qt,為了使用者的開源性及應用性做考量,現在也支援GPLv2、GPLv3 及 LGPLv3 等各種授權(當然也跟他被 Nokia 收購脫離不了瓜葛),而這樣的好處就是可以保持 Qt 在各式平台上的可用性,開源社區的發展性以及商業領域的可用性,畢竟 GPL 對商業模式有很大的受限。但最後謹記,不管開源和營利與否,最後 License 的使用一定都要從元件及程式間的依賴性來做討論。


~~~~~~

QT的LGPL與閉源程序【轉載】

最近一直在學習Qt。Qt 有兩個許可證:LGPL 和商業協議。這兩個協議在現在的Qt 版本中的代碼是完全一致的(潛在含義是,Qt 的早期版本,商業版的Qt 通常包含有一些開源版本所沒有的庫,比如QtSingleApplication 這個庫)。所以現在對於普通開發人員和部分商業公司來說,使用LGPL 版本的Qt 可以節省很大的開銷。這兩個版本最大的區別在於,前者是免費的,後者是收費的。既然代碼都是一致的,所以費用就要是用來購買Qt 的售後服務和培訓等等相關服務。

現在我們是來說一下版權的問題。LGPL 是一個開源協議,因此,有人會擔心LGPL 能否用於開發閉源程序,能夠拿來賣錢。儘管現在國內有些公司不是很重視這方面的問題,不過,如果你違反了協議,某一天被別人發來一紙律師函的時候,真的是欲哭無淚了哦。所以,我們還是先來研究一下這個協議,LGPL 究竟能不能用於開發閉源程序。

以下內容是我查找了N 多網站總結出來的,因為豆子不是律師,所以LGPL 協議基本看不懂。究竟怎樣去理解這個協議,還是希望能夠有專業人士說出來。這裡就算做是一種拋磚引玉吧!儘管沒有十分的確定,但是這裡所說的理解基本也是八九不離十的了。

至於什麼是LGPL 協議,這裡就不再多說了,我們關心的是,如果使用LGPL 協議開發商業程序。請注意,這裡所說的閉源程序,是指不以某種形式開放源代碼,也就是說,用戶(包括其他開發者)不能獲取其源代碼的程序。首先說明一點,LGPL協議是一個商業友好的協議。這裡的含義是,你可以用LGPL協議開發商業程序,當然也可以是非商業的閉源程序。但是,它是有一些限制的。這就是我們要討論的重點。

既然我們已經對其定性,那麼我們直接進入主題:使用LGPL 協議開發閉源程序,如果你使用動態鏈接的形式,那麼,你可以以任何形式發布你的應用程序,商業的、非商業的、開源的、非開源的,隨你。

如果你因某種原因必須靜態鏈接一個基於LGPL 協議發布的庫(一下我們簡稱為LGPL 庫),那麼,你有義務進行下面的工作:
你必須在你的文檔中說明,你的程序中使用了LGPL 庫,並且說明這個庫是基於LGPL 發布的;
你必須在你的應用程序發布中包含一份LGPL協議,通常就是那個文本文件;
你必須開放使用了LGPL 庫代碼的所有代碼,例如某些封裝器。但是,其他使用這些封裝器的代碼就不需要開放了;
你必須包含你的應用程序的餘下部分的目標文件(通常就是我們所說的.o 等等),或者是其他等價的文件。源代碼並不是必須的。
是不是很難理解呢?我們詳細的說一下。

第一條很容易理解;第二條也很容易理解,你可以在這裡找到LGPL協議的內容,複製下來隨你的程序一起發布就可以了。第三條就不那麼好理解了。簡單來說,LGPL協議要求,如果你的類使用了LGPL庫的代碼,那麼必須把這個類開源。例如,如果你的程序app.exe每個源文件都使用了LGPL庫的代碼,那麼你的所有源代碼都要開源。為了避免這種情況,我們通常編寫一個封裝器,把LGPL庫的代碼封裝起來,這樣就只需要開放這個封裝器的代碼,而其他使用了這個封裝器的代碼就不需要開放。第四條是對第三條的一種補充:那些使用了封裝器的程序不需要開源,但是你必須把你編譯的那些中間文件開放出來,Windows下就是那些.o文件。

你很奇怪,為什麼LGPL協議要這樣規定呢?LGPL 所做的工作是,它保證了用戶能夠有這樣一種能力:修改你使用LGPL 庫函數的方式(那些封裝器就是你使用LGPL庫的方式,那些已經開源了),重新編譯這些代碼,然後重新對程序進行連接(連接所需要的目標文件也是包含了的,這是第四條規定的),就可以得到一個新的可執行程序。

好了,如果你還不明白如何使用,我們來看一個例子。

假設我們使用一個名為Lib 的庫,這個庫是基於LGPL協議發布的。如果你使用Lib.dll 做動態鏈接(Windows 下),好,一切OK。無論你的程序怎麼樣,你都可以做你所做的事情。

我們主要是來看,如果你要使用靜態鏈接,那麼你需要如何組織你的代碼。如果你有一個main.cpp(我們假設所有Lib 庫的函數都是用了lib_ 前綴):

// main.cpp 
int main() { 
    lib_init(); 
    lib_do_something(); 
    lib_done(); 
    lib_close(); 
 
    return 0; 
} 
現在你已經完成了main.cpp,但是你必須把它開源!因為它使用了LGPL 庫的代碼。這是上面第三條規定的。我不想把它開源,怎麼辦呢?好,我們建一個新的文件lib_wrapper.cpp:

void my_lib_init() 
{ 
    lib_init(); 
} 
 
void my_lib_do_something() 
{ 
    lib_do_something(); 
} 
 
void my_lib_done() 
{ 
    lib_done(); 
} 
 
void my_lib_close() 
{ 
    lib_close(); 
} 
在main.cpp 中,我們做相應的修改:

int main() { 
    my_lib_init(); 
    my_lib_do_something(); 
    my_lib_done(); 
    my_lib_close(); 
 
    return 0; 
} 
現在,main.cpp 不再是直接使用了LGPL 庫的代碼了,因此它不需要開源,而我們的封裝器lib_wrapper.cpp 必須開源。

好,編譯一下我們的程序,你會得到main.o(Windows 下)這個目標文件。

在最終程序的發布中,你需要包含一下文件:

一份文檔,其中聲明:這個程序使用了Lib庫,這個庫是基於LGPL 協議發布的;
◆LGPL.txt;
◆lib_wrapper.cpp
◆main.o
這樣,用戶可以通過修改lib_wrapper.cpp 的內容改變你使用LGPL 庫的方式,例如:

void my_lib_done() 
{ 
    lib_done(); 
    lib_close(); 
} 
 
void my_lib_close() 
{ 
    // lib_close(); 
} 
然後編譯這個lib_wrapper.cpp,最終重新鏈接。一個新的可執行程序誕生啦!

好了,這就是在使用LGPL庫開發閉源程序所需要遵守的東西了。還是建議大家能夠遵守協議,尊重作者的勞動成果哦~


~~~~~~

Qt版權介紹:GPL, LGPL 以及Commercial 授權

From:

http://www.qteverywhere.com/

Qt 4.5中提供了三種授權協議,分別是GPL, LGPL和Commercial,可能很多人要問,為什麼同樣的一個產品要提供三種授權協議,什麼情況下使用什麼的樣的授權協議最合適?在這裡我就大致解釋一下:

GPL全稱是The GNU General Public License,是目前大多數的GNU程序和超過半數的自由軟件使用的許可協議。GPL的出發點是代碼的開源/免費使用和引用/修改/衍生代碼的開源/免費使用,但不允許修改後和衍生的代碼做為閉源的商業軟件發布和銷售。
GPL協議的主要內容是只要在一個軟件中使用(”使用”指類庫引用,修改後的代碼或者衍生代碼)GPL協議的產品,則該軟件產品必須也採用GPL協議,既必須也是開源和免費。這就是所謂的”傳染性”。GPL協議的產品作為一個單獨的產品使用沒有任何問題,還可以享受免費的優勢。

回到LGPL,LGPL的全稱是GNU Lesser General Public License,GNU 較寬鬆公共許可證,也是由協議是由自由軟體基金會發布的許可證,是一個主要為類庫使用設計的開源協議,和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須採用GPL協議不同。LGPL允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件的代碼。這使得採用LGPL協議的開源代碼可以被商業軟件作為類庫引用並發布和銷售。

除了GPL和LGPL兩種開源協議之外,Qt還提供了Commercial商業協議,Qt的商業協議是由Nokia定義的,由Nokia和購買方簽訂的,具有法律效應的Qt產品授權協議。Commercial License相教與GPL和LGPL,對於商業客戶提供了更多的靈活性,客戶可以任意的修改Qt的源代碼,開發商業軟件,而不需要公開任何源代碼。並且,在Commercial License中,我們還提供了技術支持服務。當然,商業授權協議是需要費用的。

到底什麼時候需要選擇GPL和LGPL呢?一個最顯而易見的理由就是他們都是免費的,使用LGPL和GPL版本的Qt是不需要支付任何費用的,當然我們也相應的不會提供技術支持。如果你打算開發真正的開源軟件,並希望使用者也可以保持開源,那麼GPL是更好的選擇,因為所有人,不論你自己還是將來基於你的代碼進行再次開發都必須開源。如果你打算開發閉源(不開放源代碼)的商業軟件,那麼LGPL則更適合,但必須滿足下面兩個條件:
1.你的應用程序應該動態鏈接Qt函數庫,並使你的應用程序與未做修改的LGPL庫分開發布。同時必須確保使用者(接受者)知道應用程序使用了LGPL版本的Qt;
2.如果你對LGPL版本的Qt進行了任何修改,並發布,則必須遵循LGPL條款發布。任何使用者有權利得到這些修改(通常情況下是源代碼),並且確保使用者可以通過這些修改自己生成相應你修改過的Qt版本。

相信到這里大家已經對Qt提供的這三種協議有了基本的了解,通常大家還會有一個疑問,就是基於這三種授權協議的Qt產品到底由多少功能上的區別,是不是商業版本的會更完整,性能更好一些?這裡我可以負責任的說:99%的代碼都是一樣的,無論是GPL, LGPL還是Commercial,功能,性能都沒有區別,唯一的區別就在於授權協議的不同。

還有一點需要說明的就是,由於LGPL是在Qt4.5這個版本里面才引入的,所以之前的Qt版本,4.4或者3.x的版本,並不提供LGPL協議,是不可逆的。同時未來發布的Qt版本,就一直會提供三種不同的授權協議版本。

下面有一些鏈接,有興趣想深入了解這些授權協議的同學,可以學習學習

GPL協議原文- http://www.gnu.org/copyleft/gpl.html
GPL協議中文譯文- http://bergwolf.googlepages.com/gplv3_zh
LGPL協議原文- http://www.gnu.org/copyleft /lesser.html
LGPL協議中文譯文- http://www.thebigfly.com/gnu/lgpl/lgpl-v3.php
58種不同的開源協議- http://www.fsf.org/licensing/licenses/
什麼是動態鏈接- http://zh.wikipedia.org/wiki/%E5%8A%A8%E6%80%81%E9%93%BE%E6%8E%A5%E5%BA%93
官方聲明- http ://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt
官方Q&A - http://www.qtsoftware.com/about/licensing/frequently-asked-questions

LGPL.txt

                   GNU LESSER GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.


  This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

  0. Additional Definitions.

  As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

  "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

  An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

  A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

  The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

  The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

  1. Exception to Section 3 of the GNU GPL.

  You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

  2. Conveying Modified Versions.

  If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

   a) under this License, provided that you make a good faith effort to
   ensure that, in the event an Application does not supply the
   function or data, the facility still operates, and performs
   whatever part of its purpose remains meaningful, or

   b) under the GNU GPL, with none of the additional permissions of
   this License applicable to that copy.

  3. Object Code Incorporating Material from Library Header Files.

  The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

   a) Give prominent notice with each copy of the object code that the
   Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the object code with a copy of the GNU GPL and this license
   document.

  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version.

   e) Provide Installation Information, but only if you would otherwise
   be required to provide such information under section 6 of the
   GNU GPL, and only to the extent that such information is
   necessary to install and execute a modified version of the
   Combined Work produced by recombining or relinking the
   Application with a modified version of the Linked Version. (If
   you use option 4d0, the Installation Information must accompany
   the Minimal Corresponding Source and Corresponding Application
   Code. If you use option 4d1, you must provide the Installation
   Information in the manner specified by section 6 of the GNU GPL
   for conveying Corresponding Source.)

  5. Combined Libraries.

  You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

   a) Accompany the combined library with a copy of the same work based
   on the Library, uncombined with any other library facilities,
   conveyed under the terms of this License.

   b) Give prominent notice with the combined library that part of it
   is a work based on the Library, and explaining where to find the
   accompanying uncombined form of the same work.

  6. Revised Versions of the GNU Lesser General Public License.

  The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

  Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

  If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *