我正在编写一个iPhone应用程序,我想使用第三方库来实现其部分功能。我打算通过App Store销售它,我的代码不会是开源的。哪些开源许可允许派生工作并在苹果自己的条件下发布?
答案 0 :(得分:49)
简短/ TL; DR:
LGPL和应用程序商店存在一些不兼容性,这意味着您无权在启用DRM的AppStore或锁定设备上分发LGPL代码。
最好是在其他更宽松的许可证下寻找库的替代实现,例如Apache 2许可证,Microsoft公共许可证或MIT X11许可证。
长:
LGPL声明:
这种要求可能与许可证相矛盾 通常没有的其他专有库的限制 陪伴操作系统。这样的矛盾意味着你不能 将它们和库一起使用在一个可执行文件中 分配
将LGPL代码与专有代码静态链接的权利来自LGPL的第6部分。除了授予该部分的权利之外,还要处理您对代码下游收件人的要求。
您应该详细阅读本节。
要求用户付费进入程序并获取密钥证书,配置文件和部署到设备的工具的应用程序商店与LGPL直接矛盾。
LGPL要求最终用户能够获取您的目标文件以及开源库(以及工具,请参阅下面的部分)并生成一些有效的代码。下游收件人无法与Apple,Microsoft,Amazon或Google签订单独的协议,以便能够在自己的硬件上部署代码的工作版本。
特别是这一部分是相关的:
你不能再强加任何东西了 对收件人的限制'行使此处授予的权利。 您不负责强制执行第三方的合规性 本许可证。
您无需授予用户在AppStore上重新发布应用程序的权利,但您需要授予用户在自己的设备上使用修改后的LGPL代码部署应用程序的权利,因此任何开发者计划或需要额外付款才能部署的设备与LGPL发生冲突。
您必须确保生成的可执行文件的条款允许收件人更改LGPL代码并从中生成新的工作代码。实际上,这意味着您需要分发程序的目标文件,以便第三方可以使用修改后的库版本重新链接您的应用程序,可以修复错误,以某种方式改进它们,或提供自己的功能。 / p>
您可以通过在您的网站上发布目标文件并提供项目来避免这种情况,以便第三方可以重新链接该应用程序。不这样做会撤销您对LGPL的许可。
这是第6节的另一项要求。
这可能与各种应用商店的条款直接冲突,但您需要检查您正在使用的应用商店(Apple,Amazon,Android或其他第三方)的确切条款。
作为LGPL代码要求的一部分,发送给下游用户的应用程序必须附带LGPL许可证,并在显示任何版权声明的应用程序的任何位置指向此许可证。一些应用程序商店将此发布在应用程序商店站点上,而其他应用程序商店可能拥有可执行文件本身的版权信息。
这很容易遵守,您只需要在您的网站上分发LGPL代码的副本(许可证上有关于此代码的一些额外详细信息,您需要保留代码的时间长度)
LGPL的主要问题之一是在通过应用程序商店分发的应用程序中使用静态库,因此要求您分发最终用户重建软件所需的工具和脚本。
对于某些嵌入式系统方案,您需要嵌入式系统供应商向任何最终用户披露其开发人员工具和API,这可能是不可能的。目前尚不清楚iPhone或Windows SDK之类的东西是否可以自由重新分配以履行本案中的义务,您可能希望与您的律师讨论并了解您对这些要求的接触程度。
如果您绝对需要在appstore或嵌入式系统中使用某些LGPL代码,您可以随时联系代码的原始作者,并要求他们根据不同条款授予您代码许可。
或者,您可以在其他更宽松的许可证下查找库的替代实现,例如Apache 2许可证,Microsoft公共许可证或MIT X11许可证。
答案 1 :(得分:8)
关于LGPL,我认为St3fan是不正确的,但Louis Gerbarg是正确的:可以在闭源iPhone应用程序中使用LGPL库,但有限制。
如果查看http://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License,您可以阅读“或者,如果提供源代码或可链接对象文件,则允许使用静态链接库。”
正如Louis Gerbarg所提到的,如果您使用LGPL库,只要您免费提供客户需要的对象(例如* .o)文件,您就可以保持应用程序的封闭源。你的申请并链接它。
我深入研究iPhone and LGPL compatibility here的主题。
图书馆LGPL许可对您的应用程序的详细要求:
d)执行以下操作之一:
0)根据本许可条款和相应的应用程序代码,以适合和允许用户重新组合或重新链接应用程序的条款的形式传送最小对应来源与链接版本的修改版本按照GNU GPL第6节规定的方式生成经过修改的联合作业,用于传送相应的来源。
答案 2 :(得分:7)
我不认为LGPL适用于iPhone应用程序。
问题是iPhone运行时不允许您将共享库(或框架)与您的应用程序捆绑在一起。仅允许单个二进制应用程序。 LGPL基于您将共享库与应用程序捆绑在一起的假设。仍然禁止直接链接。
答案 3 :(得分:7)
Apple App Store与FSF的Copyleft理念不兼容,该理念存在于GPL和LGPL的所有版本以及Affero GPL中。 Apple App Store不允许用户使用免费软件,修改它,然后在自己的设备上自由运行。他们要求您使用DRM,每年支付100美元,同意他们的附加条款等。这里有一个非常好的说明:http://michelf.com/weblog/2011/gpl-ios-app-store/
在App Store之外分发适用于iOS的GPL / LGPL软件是完全合法的,问题在于Apple App Store。所以我建议游说Apple改变他们的限制。 Mac OS X和iOS甚至从根本上依赖于GPL / LGPL软件(例如gcc等等),因此Apple正在享受自由,但却剥夺了用户同样的自由。
对于App Store兼容的许可证,您需要使用BSD,MIT,Apache或公共域等非常宽松的许可证。
答案 4 :(得分:5)
这不是法律建议,我不是律师,但听起来你需要一个拥有BSD或Apache许可证的图书馆。如果您正在开发使用开源库的专有桌面程序,那就是这种情况。我不知道Apple是否对iPhone应用程序有任何进一步的限制。
答案 5 :(得分:3)
(我不是律师。)
静态对象文件链接可以解决如何在不分发源代码的非LGPL部分的情况下允许使用LGPL许可代码的应用程序的问题。
但似乎LGPL作为GPL的变体,为iPhone应用程序开发带来了更大的难以克服的问题,因为创建和分发任何iPhone应用程序所需的开发工具仅在Apple的条款下可用,这些条款与GPL不兼容。即。每年收费100美元,使用那些不属于GPL许可证的工具有很多条款和条件。 Apple的iPhone开发人员工具的许可条款似乎与GPL的精神也许不相符。
答案 6 :(得分:1)
如果您没有发布源代码,则不能使用任何严格的copyleft许可证。在任何情况下都不能使用任何基于GPLv3的许可证,因为iPhone分发与no-Tivoization子句冲突。
如果您正在使用LGPLv2,则必须以可链接的格式提供您的程序,这可能是也可能是不可接受的(至少它不是源代码),这很可能是您不想要的处理,除非图书馆提供很多好处。
如果图书馆有一个版权所有者,您可以随时查看是否可以获得许可证例外。
典型的BSD / MIT / Boost /任何许可许可证都不会有任何问题。那里有很多开源/自由软件许可证,其余的你必须阅读它们并查看。
答案 7 :(得分:1)
当我尝试port Fuego onto iPhone时,我在fuego mailing list上提出了类似的问题。到目前为止,我的理解是“LGPL 不与AppStore兼容”。之前的question也会收到以下答案:否。
答案 8 :(得分:1)
一个很好的例子是Wunderradio。他们使用ffmpeg和其他LGPLv2许可框架,并在他们的网站上提供.o文件。
奇怪的是,他们还为他们的应用提供了完整的源代码。
答案 9 :(得分:0)
那些认为App Store服务条款存在问题的人,特别是每年100美元的Apple Dev程序费用,是错误的。这100美元甚至不是一个表明。开发商的典型特征是他们花了很多时间来担心这些类型的事情; 0)律师一直坚持处理合同条款几千年,这些都不值得失眠。
先决条件: 从可通过应用程序中的链接访问的Web位置提供目标文件和基本项目文件。
选项1,适用于牛仔: 越狱是正式合法的(并且是免费的)。仅凭这一点就无法解决LGPL与App Store条款之间的兼容性问题。 LPGL在哪里指定特定的分销渠道?无处。您想在通过应用商店下载的应用中升级静态链接库吗?吸吮它,alpha dev并越狱你的手机!仅仅因为苹果是操场上的恶霸并不会迫使你继续他们的旋转木马。因此,富有进取心的开发人员可以在下次聚会中获得宝贵的吹牛权。此外,为了升级LPGL库,您可以越狱手机,这样您就可以进入Richard Stallman地下室的小桶房了!
选项2合法地绕过它并且善意地: LGPL v2.1的第1部分(以及GPL v3的第4部分)允许开发者对复制库的物理行为收取费用。这为开发人员提供了一种机制,可以将该费用重新分配给99美元的Apple Dev订阅费。
100设备限制怎么样?希望升级其二进制文件的最终用户正在升级商业应用程序,因此应用程序开发人员自己的许可条款会发挥作用。为自定义许可协议添加100个设备限制是微不足道的。有多少人拥有超过100台iOS设备?就连乔布斯也没有那么多人!这几乎不是一个不合理的限制。鉴于没有要求允许最终用户将他们自己的原始商业应用程序的修改版本发布到野外,当它无法加载修改者的第101个朋友的设备时,将没有投诉的依据。
LGPL中没有要求最终用户必须拥有舒适,无风险甚至明显的选择。他们只需要有一个选择,而且有两个非常好的选择。