LGPL规定是必须公开库源代码,编译方法,并给用户relink的权利。
也就是严格意义上用户必须能用他们喜欢的库版本替换掉你软件里的库版本。
以Windows为例
如果你动态链接了一个LGPL库,并且延迟加载(使用LoadLibrary等),用户可以随时替换掉你的dll文件,那么你只需要公开你修改的LGPL dll的源代码。如果你没修改源代码,那么你什么都不需要做。
如果你静态链接了一个LGPL库/静态链接了一个dll,那么你需要提供链接方dll/exe的obj文件,以及被链接的LGPL库源代码,这样用户可以修改LGPL库后,重新链接到你的程序上。
这是LGPL FAQ里的内容,加上部分我自己的理解。如有任何问题请指正。
在开放的平台上(如Windows,Linux,Mac OS X等桌面操作系统),平台本身不限制用户修改程序,只要你拥有管理员/root权限,你可以替换任何程序的任何部分。只要软件开发者遵守LGPL,用户就可以享受LGPL所带来的权利。
但如果目标平台是一个封闭环境,比如Windows (Phone) Store,苹果App Store,那么用户不借助一些ugly workaround(如改Windows权限,越狱iPhone/WP),实际上是没有办法享受LGPL规定的这些权利的。
这种情况下,开发者在Store app中使用LGPL库是否算违反了使用协议?
1
Akiyori 2015-02-17 14:24:57 +08:00
我在想是不是只要协议内指定就可以了? 至于用于使用什么方法去达成这个目的自己不需要担心
|
2
hjc4869 OP @Akiyori 事实是大部分人都是这么做的。。
但是要真的严格起来,我有一种后怕的感觉,因为我的一个windows store播放器项目用到了ffmpeg的LGPL版,这个项目是打算收费&盈利的。。 |
3
Elethom 2015-02-17 14:42:37 +08:00 via iPhone
開源不等於免費。
|
4
akfish 2015-02-17 14:52:39 +08:00
并无问题。
用户可以自己去买个开发证书,拿你的源代码去修改,自己发布到store,自己部署。 至于这一过程中可能存在的任何障碍都不是你造成的,而是第三方造成的。 LGPL并不要求你手把手的带着用户完成这一过程,只需要提供原材料。 |
6
lingo233 2015-02-17 14:58:03 +08:00
好像只要给出鸣谢和使用的库的名字就行了。
|
8
hjc4869 OP |
9
zhicheng 2015-02-17 19:00:36 +08:00 via Android
在 iOS 的 App Store,自己打包的GPL和各种GPL衍生协议授权的代码统统不能用,不要考虑了。
|
12
sandtears 2015-02-17 19:31:50 +08:00 via Android
@zhicheng 他这不是举例子了么… VLC 就是因为包含 GPL 代码被下架的,重新上架就是通过采用 LGPL 的库代替原本的库。换而言之, APP Store 是允许包含 LGPL 库的应用发布的
|
14
Starduster 2015-02-17 20:51:49 +08:00
@zhicheng 他又不是做 iOS 的 store,是 Windows 的 store,不要一提到 APP store 就只想到水果啊
|