哪些开源许可证与苹果的iPhone及其官方应用商店兼容?

66

我正在编写一款iPhone应用程序,希望使用第三方库实现其中的部分功能。我打算通过App Store销售此应用,并且我的代码不会公开。哪些开源许可证允许制作派生作品并按照苹果的条件发布呢?

10个回答

52
简而言之,LGPL和应用商店存在一些不兼容性,这意味着您没有权利在启用数字版权管理的应用商店或锁定设备上分发LGPL代码。最好寻找其他宽松许可证下的库的替代实现,如Apache 2许可证、Microsoft Public许可证或MIT X11许可证。应用商店需要付费才能进入程序并获得密钥证书、配置文件和部署工具,这与LGPL直接矛盾。LGPL要求最终用户能够获取您的目标文件以及开源库,并产生一些工作代码。没有留给下游收件人与苹果、微软、亚马逊或谷歌单独达成协议的余地,以便能够在自己的硬件上部署工作版本的代码。您不需要赋予用户在应用商店上重新发布您的应用程序的权利,但是您需要赋予用户在其自己的设备上部署带有修改过的LGPL代码的应用程序的权利。因此,任何要求额外付款以进行部署的开发人员计划或设备都与LGPL冲突。

你必须确保生成的可执行文件条款允许接收方对LGPL代码进行更改,并从中产生新的工作代码位。实际操作中,这意味着您需要分发程序的目标代码文件,以便第三方可以使用库的修改版本重新链接您的应用程序,可能是为了修复错误、在某些方面进行改进或提供他们自己的功能。

您可以通过在网站上发布目标代码,并提供项目来让第三方重新链接应用程序来满足此要求。不这样做将撤销您对LGPL的许可。

反向工程权利

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

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

通知和广告

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

分发修改后的LGPL代码

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

无法履行的要求

LGPL和通过应用商店分发使用静态库的应用程序之间的一个主要问题是,您需要分发用于端用户重建软件所需的工具和脚本。

对于某些嵌入式系统方案,您需要嵌入式系统供应商向任何终端用户披露其开发人员工具和API,这可能是不可能的。不清楚类似iPhone或Windows SDK是否可以自由重新分发以满足此要求,在这种情况下,您可能需要与律师讨论并找出您满足要求的舒适程度。

您可以做什么

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

或者,您可以寻找其他实现库的替代方案,这些库的许可证更为宽松,例如Apache 2许可证、Microsoft公共许可证或MIT X11许可证。


如果您想将软件链接到LGPL,但该软件是GPL的呢?那里面不会有任何问题,对吧? - knocte
回复自己:http://www.fsf.org/blogs/licensing/more-about-the-app-store-gpl-enforcement,呃!真是个陷阱。 - knocte
@miguel.de.icaza:Sparrow的制作者承认包含了LGPL库,并发布了这个网页,他们认为这将消除任何法律障碍。 http://sprw.me/lgpl.php 你认为这足够了吗? - Danyal Aytekin
关于99美元的苹果开发者费用:“下游受益人不必与苹果签订单独的协议,这方面没有余地。”问:是否有余地签订购买编译器或计算机或支付互联网连接等单独协议?这些都是用户能够重新链接代码所必需的。它们与苹果开发者费用有何不同? - tamas.kenez
2
这可能已经改变了。苹果最近取消了开发者计划对设备进行部署的要求,因此任何人都应该能够免费重新链接。这意味着它现在实际上与LGPL兼容。 - Patrick Pijnappel
显示剩余2条评论

10
关于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库(包括ffmpeg在内)。无论合法性如何,人们都在这样做。 - Kenny Winker
3
苹果不会关心(这不是他们的工作来监管这个),但ffmpeg开发者可以随时主张自己的权利。这是一种风险。 - Lou Franco
1
ffmpeg的开发者们认为在iPhone上使用并不违反许可证。 - alex strange
2
重要的是,任何你想使用的LGPL(或甚至GPL)代码的版权持有人如何解释许可证,因为他们有能力撤回你的应用程序(或更糟)。其他人如何解释它都相当无关紧要。因此,如果你正在考虑在应用程序中使用LGPL甚至GPL代码,你需要希望该代码具有单一或小型版权所有者,并礼貌地询问他们。 - tml
你的博客好像挂了,能不能更新一下? - Jeff Burdges
显示剩余3条评论

8
苹果应用商店与FSF的版权协议不兼容,该协议适用于GPL、LGPL和Affero GPL的所有版本。苹果应用商店不允许用户自由地获取自由软件并在其设备上进行修改和运行,而是要求用户使用DRM,每年支付100美元,并同意他们的附加条款等。这里有一个非常好的解释:http://michelf.com/weblog/2011/gpl-ios-app-store/ 在App Store之外分发iOS的GPL/LGPL软件是完全合法的,问题在于苹果应用商店。因此,我建议游说苹果改变他们的限制。Mac OS X和iOS甚至从根本上依赖于GPL/LGPL软件(例如gcc和许多其他软件),因此苹果享有自由,但却拒绝了其用户的同样自由。
至于与App Store兼容的许可证,您需要选择非常宽松的许可证,如BSD、MIT、Apache或公共领域。

我不建议游说苹果改变限制,因为它是无法改变的。苹果需要支付软件审核员的工资和应用下载的流量成本,即使是免费应用也是如此。每年100美元是相当合理的。相反,你应该游说库作者将许可证从LGPL更改为不要求用户对最终软件进行自由修改的其他类型。例如,一年前cocos2d从LGPL转向了MIT许可证。 - yakovlev
1
我认为你误将不相干的事物等同起来了。苹果在过去几十年中通过销售没有数字版权管理技术的软件赚了很多钱。应用商店及其数字版权管理要求是新的。此外,有许多公司和个人通过销售GPL软件赚钱,如RedHat、Digium(Asterisk)、Cygnus Solutions、MySQL等。 - Hans-Christoph Steiner
此外,苹果现在销售的无数字版权管理(DRM)音乐比有数字版权管理的音乐还要多。 - Hans-Christoph Steiner

7

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

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


2
@JosephH:同时,最终用户必须能够用修改过的版本替换库。在iPhone上似乎不可能实现。 - Thilo
@Thilo: 一个终端用户购买新的 Mac,然后从苹果购买价值 $99 的开发者许可证,这样就可以使用构建和安装所需工具来生成并将目标文件安装到 iPhone 上。 - hotpaw2
1
@hotpaw2:所以你的意思是他必须购买额外的许可证才能使用他的LGPL权利?我认为LGPL不允许这样做。 - Thilo
2
@Thilo LGPL确实允许这样做-在其他平台上没有免费编译器,如果用户没有编译器或其他必要的工具,则无法编译替换二进制文件是完全可以接受的。不过你部分正确;应用商店的条款与LGPL不兼容-许多LGPL软件的作者(FSF是一个值得注意的例外)认为这只是许可证的技术违规,并允许在iPhone上使用LGPL库。(这涉及LGPLv2; LGPLv3可能略有不同。) - JosephH
1
请记住,LGPL是在1991年编写的,当时编译器免费并不是像今天人们认为的那样普遍存在的规则,尤其是如果你从事Linux和其他FLOSS操作系统的工作。那时候,对于当时的普通桌面系统来说,编译器很少是免费的。 - tml
显示剩余2条评论

5

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


2
LGPL将会施加额外的限制。由于手机不支持动态链接,而LGPL要求您能够替换修改后的代码副本,因此您需要提供一个部分构建的应用程序副本,供其他人使用以重新链接到库的修改版本。 - Louis Gerbarg
1
感谢澄清,我已经从我的回答中删除了尝试LGPL的建议。 - Ryan Ahearn

3

(我不是律师。)

静态对象文件链接可以解决一个问题:如何允许使用LGPL许可的代码的应用程序在不分发其源代码的非LGPL部分的情况下提供。

但似乎LGPL作为GPL的一种变体,在iPhone应用程序开发中会产生更大的无法克服的问题,因为创建和分发任何iPhone应用程序所需的开发工具仅根据Apple的条款提供,这些条款与GPL不兼容。也就是说,需要支付每年100美元的费用,并且对于使用这些工具的许多条款和条件并不是GPL许可证的一部分。苹果的iPhone开发人员工具授权条款似乎与GPL的精神不兼容,或者可能与GPL的文字不兼容。


1
在所有这些中要记住一件事:制作一个GPL/LGPL应用程序并在App Store之外分发是完全合法和清晰的。问题在于App Store。 - Hans-Christoph Steiner
静态链接是明确不允许的(动态链接是一种解决方法,但在iOS应用程序中无法进行动态链接),请参见http://multinc.com/2009/08/24/compatibility-between-the-iphone-app-store-and-the-lgpl/。 - MoDJ

1

如果您不发布源代码,就不能使用任何严格的强制共享许可证。无论如何,由于iPhone发行与禁止Tivoization条款冲突,您不能使用任何基于GPLv3的许可证。

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

如果库中只有一个版权所有者,您总是可以查看是否可以获得许可证例外。

您不会遇到任何典型的BSD / MIT / Boost / 任何宽松许可证的问题。有很多开源/自由软件许可证,对于其余部分,您将需要阅读并了解它们。


除非用户不能通过应用商店重新链接程序。因此,LGPLv2是可以接受的,但仅当您在应用商店之外分发应用时才可以使用。(实际上意味着通过越狱渠道,在实践中意味着“不行”。) - Prof. Falken

1
一个很好的例子是Wunderradio。他们使用ffmpeg和其他LGPLv2许可的框架,并在他们的网站上提供.o文件。
奇怪的是,他们还提供了他们应用程序的完整源代码。

http://wunderradio.com/code.html


1
一个例子并不是一个论据。我们都可以提供关于许可软件(误)使用的所有可能排列组合的例子。 - Prof. Falken

1

显然是这样的。但是他们在v3中关闭了那个漏洞。 - steipete

0
那些认为App Store服务条款有问题的人,特别是100美元的苹果开发者计划年费,是错误的。这100美元甚至不足以成为阻碍因素。开发者们花费了太多时间担心这些事情;0)律师们已经在处理合同条款方面做了数千年的工作,这些根本不值得失眠。
先决条件: 提供对象文件和一个基本项目文件,通过应用程序中的链接可以访问网络位置。
选项1,对于牛仔: 越狱是官方合法的(并且免费)。这就足以消除LGPL和App Store条款之间的任何兼容性问题。LGPL在哪里指定了特定的分发渠道?没有。你想升级通过应用商店下载的静态链接库吗?振作起来,alpha dev,越狱你的手机!仅仅因为苹果在游乐场上是个恶霸,并不能强迫你留在他们的旋转木马上。有进取心的开发者可以在下一次聚会上获得有价值的吹嘘权。此外,你越狱手机以升级LGPL库的方式,还可以进入Richard Stallman地下室的啤酒房!

绕过苹果限制的合法方法之二,也是诚信的方法: LGPL v2.1第1节(和GPL v3第4节)允许开发者收取复制库的实际费用。这为开发者提供了一种机制,将该费用重新分配给99美元的苹果开发人员订阅费。

那100台设备有什么问题呢?希望升级其二进制文件的最终用户正在升级商业应用程序,因此应用程序开发人员自己的许可条款就会生效。向自定义许可协议中添加100台设备限制非常简单。拥有超过100个iOS设备的人有多少?即使是乔布斯也没有那么多!这并不是一个不合理的限制。鉴于没有要求最终用户被允许在公共场所发布其自己修改的原始商业应用程序的要求,因此当它无法加载到修改者的第101个朋友的设备上时,就没有投诉的依据。

LGPL没有要求最终用户必须有舒适、无风险甚至明显的选择。他们只需要有一个选择,而这里有两个完全好的选择。


你在这里进行了深入的自由解释。所有这些障碍同样可以被LGPL库的作者解释为不合理的障碍。 - Prof. Falken
您正在评估GPL条款,但没有考虑到下游的影响。您将“开发人员”视为单个人。但实际上,在FOSS过程中至少有三种基本角色。软件的最初创始人(A),从A获取软件并传递它的人(B)以及最终获取它并想要使用它的人。要在Apple中使用GPL代码,这三个人都需要支付许可费用。因此,没有符合您描述的“开发人员”。 - ftrotter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接