66

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

4

10 回答 10

51

简而言之/TL;DR:

LGPL 和应用商店有一些不兼容的地方,这意味着您无权在支持 DRM 的 AppStore 或锁定的设备上分发 LGPL 代码。

最好在其他更宽松的许可证(如 Apache 2 许可证、微软公共许可证或 MIT X11 许可证)下寻找库的替代实现。

更长:

LGPL 规定:

此要求可能会与通常不伴随操作系统的其他专有库的许可限制相矛盾。这种矛盾意味着您不能在分发的可执行文件中同时使用它们和库。

将 LGPL 代码与专有代码静态链接的权利来自 LGPL 第 6 节。除了授予该部分的权利之外,该部分还处理您对代码的下游接收者的要求。

您应该详细阅读本节。

开发付费与 LGPL 之间的冲突

要求用户付费进入程序并获取密钥证书、配置文件和工具以部署到设备的应用商店与 LGPL 直接矛盾。

LGPL 要求最终用户能够获取您的目标文件以及开源库(以及工具,请参阅下面的部分)并生成一些有效的代码。没有空间让下游接收者必须与苹果、微软、亚马逊或谷歌签订单独的协议才能在他自己的硬件上部署代码的工作版本。

特别是本节是相关的:

您不得对接收者行使此处授予的权利施加任何进一步的限制。您不负责强制第三方遵守本许可证。

您不需要授予用户在 AppStore 上重新发布您的应用程序的权利,但您需要授予用户在他们自己的设备上使用修改后的 LGPL 代码版本部署您的应用程序的权利,因此任何需要的开发人员程序或设备部署的额外费用与 LGPL 相冲突。

目标文件的分发

您必须确保生成的可执行文件的条款允许接收者更改 LGPL 代码并从中生成新的工作代码。这实际上意味着您需要分发程序的目标文件,以便第三方可以将您的应用程序与库的修改版本重新链接,可能修复错误,以某种方式改进它,或提供他们自己的功能。

您可以通过在您的网站上发布目标文件并提供一个项目以便第三方可以重新链接该应用程序来解决这个问题。不这样做会撤销您对 LGPL 的许可。

逆向工程的权利

这是第 6 节的另一个要求。

这可能与各种应用商店的条款直接冲突,但您需要与您正在使用的应用商店(Apple、Amazon、Android 或其他第三方)核实确切的条款。

通知和广告

作为 LGPL 代码要求的一部分,交付给下游用户的应用程序必须附带 LGPL 许可证,并在显示任何版权声明的应用程序的任何位置指向此许可证。一些应用程序商店将其发布在应用程序商店网站上,而其他应用程序商店可能在可执行文件本身上拥有版权信息。

修改后的 LGPL 代码的分发

这很容易遵守,您只需要在您的网站上分发 LGPL 代码的副本(许可证上有一些额外的细节,关于您需要保持代码可用的时间长度)。

您无法满足的要求

LGPL 和在通过应用程序商店分发的应用程序中使用静态库的主要问题之一是要求您分发最终用户重建软件所需的工具和脚本。

对于某些嵌入式系统场景,您会要求嵌入式系统供应商向任何最终用户披露其开发工具和 API,这可能是不可能的。目前尚不清楚是否可以自由重新分发 iPhone 或 Windows SDK 之类的东西以履行本案中的义务,您可能需要与您的律师讨论并了解您对这些要求的公开程度有多满意。

你可以做什么

如果您绝对需要在应用商店或嵌入式系统中使用某些 LGPL 代码,您可以随时联系代码的原始作者,并要求他们根据不同的条款授予您对代码的许可。

或者,您可以在其他更宽松的许可证(如 Apache 2 许可证、Microsoft 公共许可证或 MIT X11 许可证)下寻找库的替代实现。

于 2012-01-30T21:03:21.543 回答
9

Apple App Store 与 GPL 和 LGPL 以及 Affero GPL 的所有版本中都存在的 FSF 的 copyleft 理念不兼容。Apple App Store 不允许用户获取免费软件,对其进行修改,然后在自己的设备上自由运行。他们要求您使用 DRM,每年支付 100 美元,同意他们的附加条款等。这里有一篇很好的文章:http: //michelf.com/weblog/2011/gpl-ios-app-店铺/

在 App Store 之外分发适用于 iOS 的 GPL/LGPL 软件是完全合法的,问题在于 Apple App Store。所以我建议游说苹果改变他们的限制。Mac OS X 和 iOS 甚至从根本上依赖 GPL/LGPL 软件(例如 gcc 等等),因此 Apple 享受着自由,但它却剥夺了用户同样的自由。

至于 App Store 兼容的许可证,您需要使用非常宽松的许可证,例如 BSD、MIT、Apache 或公共域。

于 2011-10-25T18:04:52.007 回答
9

关于 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 节指定的方式传送相应的源代码。

于 2009-08-24T10:51:11.373 回答
7

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

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

于 2009-01-20T02:00:40.437 回答
5

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

于 2009-01-20T01:18:14.623 回答
3

(我不是律师。)

静态目标文件链接可以解决如何允许使用 LGPL 许可代码的应用程序可用而不分发其源代码的非 LGPL 部分的问题。

但似乎 LGPL 作为 GPL 的一个变体,给 iPhone 应用程序开发带来了一个更大的无法克服的问题,因为创建和分发任何 iPhone 应用程序所需的开发工具只能根据与 GPL 不兼容的 Apple 条款提供。IE。每年收取 100 美元的费用,并且有许多关于使用不属于 GPL 许可的工具的条款和条件。Apple 的 iPhone 开发工具的许可条款似乎与 GPL 的精神,或许也与 GPL 的文字不兼容。

于 2010-01-02T20:50:19.247 回答
1

当我尝试将Fuego 移植到 iPhone 上时,我在fuego 邮件列表上问了一个类似的问题。到目前为止,我的理解是“LGPL与 AppStore兼容”。上一个问题也得到了答案:否。

于 2011-01-31T03:02:38.793 回答
1

一个很好的例子是 Wunderradio。他们使用 ffmpeg 和其他 LGPLv2 许可框架,并在其网站上提供 .o 文件。

奇怪的是,他们还为他们的应用程序提供了完整的源代码。

http://wunderradio.com/code.html

于 2011-04-12T23:40:29.600 回答
1

如果您不发布源代码,则不能使用任何严格的 copyleft 许可证。在任何情况下,您都不能使用任何基于 GPLv3 的许可证,因为 iPhone 分发与 no-Tivoization 条款冲突。

如果您使用 LGPLv2,则必须以可链接格式提供您的程序,这可能是可接受的,也可能是不可接受的(至少它不是源代码),这可能是您不想处理的事情,除非图书馆提供了很多好处。

如果图书馆有一个版权所有者,您可以随时查看是否可以获得许可例外。

你不会对典型的 BSD/MIT/Boost/任何许可许可证有任何问题。那里有很多开源/自由软件许可证,其余的你必须阅读它们并查看。

于 2010-01-02T21:18:46.600 回答
0

那些认为 App Store 服务条款存在问题的人,尤其是每年 100 美元的 Apple Dev 计划费用,是错误的。那 100 美元甚至还不算大卖。开发人员通常会花费大量时间来担心这类事情;0) 数千年来,律师一直在处理合同条款,这些条款几乎不值得为此浪费任何时间。

先决条件:从可通过应用程序中的链接访问的 Web 位置提供目标文件和基本项目文件。

选项 1,对于牛仔:越狱是正式合法的(并且免费)。仅此一项就消除了对 LGPL 和 App Store 条款之间兼容性的任何担忧。LPGL 在哪里指定特定的分销渠道?无处。您想在通过应用商店下载的应用中升级静态链接库吗?接受它,阿尔法开发和越狱你的手机!仅仅因为 Apple 在操场上是个恶霸并不能强迫你继续他们的旋转木马。因此,有进取心的开发人员可以在下一次聚会上获得宝贵的吹牛权。再加上您为了升级 LPGL 库而越狱了您的手机,这让您可以访问 Richard Stallman 地下室的酒桶室!

合法且善意地绕过它的选项 2:LGPL v2.1 的第 1 节(和 GPL v3 的第 4 节)允许开发人员对复制库的实际行为收取费用。这为开发人员提供了一种机制,可以将该费用重新分配到 99 美元的 Apple Dev 订阅费中。

100 台设备的限制呢?希望升级其二进制文件的最终用户正在升级商业应用程序,因此应用程序开发人员自己的许可条款开始发挥作用。将 100 台设备限制添加到自定义许可协议中很简单。有多少人拥有超过 100 台 iOS 设备?就连乔布斯也没有那么多!这几乎不是一个不合理的限制。鉴于没有要求最终用户被允许将他们自己的修改版原始商业应用程序发布到野外,因此当它无法加载到修改者的第 101 位朋友的设备上时,将没有任何投诉的依据。

LGPL 没有要求最终用户必须有一个舒适、无风险甚至是显而易见的选择。他们只需要有一个选择,而且有两个非常好的选择。

于 2012-07-23T00:42:23.750 回答