我正在编写一款iPhone应用程序,希望使用第三方库实现其中的部分功能。我打算通过App Store销售此应用,并且我的代码不会公开。哪些开源许可证允许制作派生作品并按照苹果的条件发布呢?
你必须确保生成的可执行文件条款允许接收方对LGPL代码进行更改,并从中产生新的工作代码位。实际操作中,这意味着您需要分发程序的目标代码文件,以便第三方可以使用库的修改版本重新链接您的应用程序,可能是为了修复错误、在某些方面进行改进或提供他们自己的功能。
您可以通过在网站上发布目标代码,并提供项目来让第三方重新链接应用程序来满足此要求。不这样做将撤销您对LGPL的许可。
这是第6节的另一个要求。
这可能与各种应用商店的条款直接冲突,但您需要与您正在使用的应用商店(Apple、Amazon、Android或其他第三方)检查确切的条款。
作为LGPL代码的要求的一部分,发给下游用户的应用程序必须随同LGPL许可证一起发布,并在显示任何版权声明的应用程序任何位置指向该许可证。有些应用商店会在应用商店网站上发布此信息,而其他人可能会在可执行文件本身上放置版权信息。
这非常容易遵守,您只需要在网站上分发LGPL代码的副本(许可证中有一些额外的细节,关于您需要保持代码可用的时间长度)。
LGPL和通过应用商店分发使用静态库的应用程序之间的一个主要问题是,您需要分发用于端用户重建软件所需的工具和脚本。
对于某些嵌入式系统方案,您需要嵌入式系统供应商向任何终端用户披露其开发人员工具和API,这可能是不可能的。不清楚类似iPhone或Windows SDK是否可以自由重新分发以满足此要求,在这种情况下,您可能需要与律师讨论并找出您满足要求的舒适程度。
如果您在应用商店或嵌入式系统中绝对需要使用一些LGPL代码,您可以随时联系代码的原始作者,并请求他们授予您以不同条款的许可证使用该代码。
或者,您可以寻找其他实现库的替代方案,这些库的许可证更为宽松,例如Apache 2许可证、Microsoft公共许可证或MIT X11许可证。
这个库的LGPL许可证对您的应用程序有详细要求:
d)执行以下操作之一:
0)按照本许可证的条款传递最小相应源代码,并以适合用户重新组合或重新链接应用程序与链接版本的修改版本以生成修改后的组合作品的形式传递相应应用程序代码,方式由GNU GPL第6节规定,以传递相应源代码。
我认为LGPL不适用于iPhone应用程序。
问题在于iPhone运行时不允许您将共享库(或框架)与应用程序捆绑在一起。只允许单个二进制应用程序。LGPL的基本假设是您将共享库与应用程序捆绑在一起。直接链接仍然被禁止。
这不是法律建议,我不是律师,但听起来你需要一个具有BSD或Apache许可证的库。如果您正在开发使用开源库的专有桌面程序,那么就是这种情况。我不知道苹果是否对iPhone应用程序有进一步的限制。
(我不是律师。)
静态对象文件链接可以解决一个问题:如何允许使用LGPL许可的代码的应用程序在不分发其源代码的非LGPL部分的情况下提供。
但似乎LGPL作为GPL的一种变体,在iPhone应用程序开发中会产生更大的无法克服的问题,因为创建和分发任何iPhone应用程序所需的开发工具仅根据Apple的条款提供,这些条款与GPL不兼容。也就是说,需要支付每年100美元的费用,并且对于使用这些工具的许多条款和条件并不是GPL许可证的一部分。苹果的iPhone开发人员工具授权条款似乎与GPL的精神不兼容,或者可能与GPL的文字不兼容。
如果您不发布源代码,就不能使用任何严格的强制共享许可证。无论如何,由于iPhone发行与禁止Tivoization条款冲突,您不能使用任何基于GPLv3的许可证。
如果您正在使用LGPLv2,则必须以可链接格式提供程序,这可能是可以接受的(至少不是源代码),但这很可能是您不想处理的事情,除非库提供了很多好处。
如果库中只有一个版权所有者,您总是可以查看是否可以获得许可证例外。
您不会遇到任何典型的BSD / MIT / Boost / 任何宽松许可证的问题。有很多开源/自由软件许可证,对于其余部分,您将需要阅读并了解它们。
当我尝试将 Fuego端口到iPhone时,我在Fuego邮件列表上提出了类似的问题。到目前为止,我的理解是“LGPL与AppStore不兼容”。之前的问题也得到了回答:不行。
绕过苹果限制的合法方法之二,也是诚信的方法: LGPL v2.1第1节(和GPL v3第4节)允许开发者收取复制库的实际费用。这为开发者提供了一种机制,将该费用重新分配给99美元的苹果开发人员订阅费。
那100台设备有什么问题呢?希望升级其二进制文件的最终用户正在升级商业应用程序,因此应用程序开发人员自己的许可条款就会生效。向自定义许可协议中添加100台设备限制非常简单。拥有超过100个iOS设备的人有多少?即使是乔布斯也没有那么多!这并不是一个不合理的限制。鉴于没有要求最终用户被允许在公共场所发布其自己修改的原始商业应用程序的要求,因此当它无法加载到修改者的第101个朋友的设备上时,就没有投诉的依据。
LGPL没有要求最终用户必须有舒适、无风险甚至明显的选择。他们只需要有一个选择,而这里有两个完全好的选择。