我正在编写一个iPhone应用程序,我想使用第三方库来实现其部分功能.我打算通过App Store销售它,我的代码不会是开源的.哪些开源许可允许派生工作并在苹果自己的条件下发布?
在Short/TL; DR:
LGPL和应用程序商店存在一些不兼容性,这意味着您无权在启用DRM的AppStore或锁定设备上分发LGPL代码.
最好是在其他较宽松的许可证下寻找库的替代实现,例如Apache 2许可证,Microsoft公共许可证或MIT X11许可证.
更长:
LGPL声明:
可能会发生这种要求与通常不伴随操作系统的其他专有库的许可限制相矛盾的情况.这种矛盾意味着您不能在分发的可执行文件中同时使用它们和库.
将LGPL代码与专有代码静态链接的权利来自LGPL的第6部分.除了授权该部分处理您的代码下游收件人的要求之外.
您应该详细阅读本节.
支付发展与LGPL之间的冲突需要用户付费才能进入程序并获取密钥证书,配置文件和部署到设备的工具的应用程序商店与LGPL直接矛盾.
LGPL要求最终用户能够获取您的目标文件和开源库(以及工具,请参阅下面的部分)并生成一些有效的代码.下游收件人无法与Apple,Microsoft,Amazon或Google签订单独的协议,以便能够在自己的硬件上部署代码的工作版本.
特别是本节是相关的:
您不得对收件人行使此处授予的权利施加任何进一步的限制.您不负责强制第三方遵守本许可.
你并不需要给用户重新发布上的AppStore的应用程序的权利,但你需要给用户以自己的设备的LGPL代码的修改版本部署应用程序的权利,这样就要求任何开发人员的程序或设备额外的部署付款与LGPL相冲突.
对象文件的分发您必须确保生成的可执行文件的条款允许收件人更改LGPL代码并从中生成新的工作代码.实际上,这意味着您需要分发程序的目标文件,以便第三方可以使用修改后的库版本重新链接您的应用程序,可以修复错误,以某种方式改进它们,或提供自己的功能.
您可以通过在您的网站上发布目标文件并提供项目来避免这种情况,以便第三方可以重新链接该应用程序.不这样做会撤销您对LGPL的许可.
逆向工程的权利这是第6节的另一个要求.
这可能是与各种应用程序商店的条款直接冲突,但你需要使用的是(苹果,亚马逊,Android或其他第三方)的应用商店检查的确切条款.
通知和广告作为LGPL代码要求的一部分,发送给下游用户的应用程序必须附带LGPL许可证,并在显示任何版权声明的应用程序的任何位置指向此许可证.一些应用程序商店将此发布在应用程序商店站点上,而其他应用程序商店可能具有可执行文件本身的版
修改的LGPL代码的分布这很容易遵守,您只需要在您的网站上分发LGPL代码的副本(许可证中有关于此代码的一些额外详细信息,您需要保留代码的时间长度).
您无法满足的要求LGPL的主要问题之一是在通过应用程序商店分发的应用程序中使用静态库,因此要求您分发最终用户重建软件所必需的工具和脚本.
对于某些嵌入式系统方案,您需要嵌入式系统供应商向任何最终用户公开他的开发人员工具和API,这可能是不可能的.目前尚不清楚iPhone或Windows SDK之类的东西是否可以自由重新分配以履行本案中的义务,您可能希望与您的律师讨论并了解您对这些要求的接触程度.
你可以做什么如果您绝对需要在appstore或嵌入式系统中使用某些LGPL代码,您可以随时联系代码的原始作者,并要求他们根据不同条款授予您代码许可.
或者,您可以在其他更宽松的许可证下查找库的替代实现,例如Apache 2许可证,Microsoft公共许可证或MIT X11许可证.
关于LGPL,我认为St3fan是不正确的,但Louis Gerbarg是正确的:可以在闭源iPhone应用程序中使用LGPL库,但有限制.
如果您查看http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License,您可以阅读"或者,如果提供了源代码或可链接对象文件,则允许使用静态链接库."
正如Louis Gerbarg所提到的,如果您使用LGPL库,只要您免费提供客户需要的对象(例如*.o)文件,您就可以保持应用程序的封闭源.链接它.
我在这里深入探讨iPhone和LGPL的兼容性问题.
图书馆LGPL许可对您的应用程序的详细要求:
d)执行以下操作之一:
0)根据本许可条款和相应的应用程序代码,以允许用户重新组合或重新链接应用程序与链接版本的修改版本的条款相应的形式传送相应的应用程序代码,以生成修改的组合工作,按照GNU GPL第6节规定的方式传送相应的来源.
我不认为LGPL适用于iPhone应用程序.
问题是iPhone运行时不允许您将共享库(或框架)与您的应用程序捆绑在一起.仅允许单个二进制应用程序.LGPL基于您将共享库与应用程序捆绑在一起的假设.仍然禁止直接链接.
Apple App Store与FSF的Copyleft理念不兼容,该理念存在于GPL和LGPL的所有版本以及Affero GPL中.Apple App Store不允许用户使用免费软件,修改它,然后在自己的设备上自由运行.他们要求你使用DRM,每年支付100美元,同意他们的附加条款等.这里有一个非常好的记录:http://michelf.com/weblog/2011/gpl-ios-app-商店/
在App Store之外分发iOS的GPL/LGPL软件是完全合法的,问题在于Apple App Store.所以我建议游说Apple改变他们的限制.Mac OS X和iOS甚至从根本上依赖于GPL/LGPL软件(例如gcc等等),因此Apple正在享受自由,但却剥夺了用户同样的自由.
至于App Store兼容的许可证,您需要使用BSD,MIT,Apache或公共域等非常宽松的许可证.
这不是法律建议,我不是律师,但听起来你需要一个带有BSD或Apache许可证的库.如果您正在开发使用开源库的专有桌面程序,那就是这种情况.我不知道Apple是否对iPhone应用程序有任何进一步的限制.