当前位置:  开发笔记 > 编程语言 > 正文

哪些开源许可证与Apple的iPhone及其官方App Store兼容?

如何解决《哪些开源许可证与Apple的iPhone及其官方AppStore兼容?》经验,为你挑选了5个好方法。

我正在编写一个iPhone应用程序,我想使用第三方库来实现其部分功能.我打算通过App Store销售它,我的代码不会是开源的.哪些开源许可允许派生工作并在苹果自己的条件下发布?



1> miguel.de.ic..:

在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许可证.



2> huyz..:

关于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节规定的方式传送相应的来源.


Apple不会关心(警察这不是他们的工作),但ffmpeg的开发者可以随时主张自己的权利.这是一种风险.
重要的是,您想要使用的任何LGPL(或GPL偶数)代码的版权所有者如何解释该类别,因为他们能够将您的应用程序拉动(或更糟).其他人如何解释它是相当无关紧要的.所以,如果你正在考虑在应用程序中使用LGPL甚至GPL代码,你需要希望代码有一个或一小组版权所有者,并且只是很好地问他们.

3> Stefan Arent..:

我不认为LGPL适用于iPhone应用程序.

问题是iPhone运行时不允许您将共享库(或框架)与您的应用程序捆绑在一起.仅允许单个二进制应用程序.LGPL基于您将共享库与应用程序捆绑在一起的假设.仍然禁止直接链接.


@JosephH:最终用户也必须能够用修改后的版本替换库.这在iPhone上似乎是不可能的.
@Thilo LGPL允许这样做 - 在其他平台上没有免费的编译器,没有编译器或其他必要工具的用户无法编译替换二进制文件是完全可以接受的.你是部分正确的; appstore T&C与LGPL不兼容 - 许多LGPL软件的作者(FSF是一个值得注意的例外)仅将此视为技术违反许可,并允许在iphone上使用LGPL库.(这与LGPLv2有关; LGPLv3可能略有不同.)

4> Hans-Christo..:

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或公共域等非常宽松的许可证.



5> Ryan Ahearn..:

这不是法律建议,我不是律师,但听起来你需要一个带有BSD或Apache许可证的库.如果您正在开发使用开源库的专有桌面程序,那就是这种情况.我不知道Apple是否对iPhone应用程序有任何进一步的限制.


LGPL将施加额外限制.由于手机不支持动态链接,并且LGPL要求您能够替换代码的修改副本,因此您需要提供部分构建的应用程序副本,可以使用该副本重新链接修改版本的lib.
推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有