我应该使用LGPL还是GPL

时间:2012-07-04 15:00:13

标签: open-source licensing gpl lgpl

我正忙着写一个应用程序,我不确定是否应该使用LGPL或GPL(或者其他东西)。以下是我的限制:

  1. 我的应用程序是开源的。我并不关心人们如何使用我的代码,只要他们的代码也是开源的。如果他们想将我的源代码用于非开源应用程序,他们必须先与我联系。
  2. 我正在使用GPL,LGPL和IDGAFL(即“我不提供f * k许可证”)的外部库。对于大多数库,我直接在我的应用程序中包含它们的源代码。在极少数情况下,我使用他们预先构建的库并链接到它们。
  3. 对于上面的库:我有一个包含所有源代码的存储库(包括库的代码)和.so / .dylib / .dll,如果我链接到它们。
  4. 我有一个可执行文件,我与预先构建的库一起发布。显然,非预构建的库在编译时包含在可执行文件中。
  5. 哪种许可证最好? 对于某些库,我更改了一些源代码以适合我的应用程序。这些不是对代码本身的任何重大更改,而是对包含语句,文件扩展名等的更改,例如:

    来自(原始图书馆):

    #include "libx/libx.hpp"
    

    To(我的更改):

    #include "external/libx.h"
    

    请注意不同的位置和扩展名。这是允许的吗?

3 个答案:

答案 0 :(得分:4)

如果您使用的是GPL库,则必须使用GPL。

我现在找不到它,但它是在GNU页面上。

答案 1 :(得分:1)

如果您要与外部GPLd图书馆链接,则每个FSF,您必须自己是GPLd。

编辑(评论):据说,如果你只是动态链接所述GPLd库,而不是提供它们,那么可以提出一个参数,一个人不需要。然而,这不是FSF的立场,但我所知道的任何人都没有合法地挑战他们的解释。

http://en.wikipedia.org/wiki/GNU_General_Public_License#Libraries有一些讨论。

答案 2 :(得分:0)

上面的第(1)项将您锁定为GPL。如果您使用LGPL,则允许其他人以他们可以编写商业软件或非GPL软件的方式链接您的代码。因此,基本上,如果您希望基于您的代码编写的所有内容也随后都是开源的,那么您必须使用GPL。