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

2024-02-05

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


简而言之/TL;DR:

LGPL 和应用程序商店存在一些不兼容性,这意味着您无权在启用 DRM 的 AppStore 或锁定设备上分发 LGPL 代码。

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

Longer:

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 许可证)下寻找该库的替代实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪些开源许可证与 Apple 的 iPhone 及其官方 App Store 兼容? [关闭] 的相关文章

随机推荐

  • 如何加载 rjags

    与许多其他人一样 我在加载和安装 rjags 时遇到问题 我收到错误 library rjags Error onLoad failed in loadNamespace for rjags details call fun libname
  • StartSSL 证书在 Firefox 和 Android 上不受信任

    Apache 服务器 遵循此处的指南 https www startssl com Support v 21 https www startssl com Support v 21 httpd conf SSLEngine on SSLPr
  • Android 中按 MIME 类型获取联系人

    我想根据 Android 中的 MIME 类型获取联系人列表 例如 我想要一个具有电子邮件地址的联系人列表 您应该使用以下方法读取原始联系人以及与其关联的所有数据ContactsContract RawContacts Entity目录 如
  • Java FX 应用程序 onload 事件

    我正在使用 Google 地图 API 在 java swing java fx 中实现一个应用程序 我的问题是这样的 我需要在加载地图时运行 JavaScript 我一直在阅读该方法 webEngine getLoadWorker Sta
  • 如何在 $or 中使用 $regex 作为聚合表达式

    我有一个查询 允许用户使用如下格式按某些字符串字段进行过滤 如果最近一次检查的描述是以下任何一项 foo or bar 这对于以下查询非常有效 db getCollection permits find expr let vars late
  • PyYAML 转储格式

    我知道 StackOverflow 上有一些与此相关的问题 但我找不到我想要的内容 我在用着pyyaml http pyyaml org读书 load a yml文件 修改或添加密钥 然后写入 dump 再次 问题是我想保留转储后的文件格式
  • 尝试运行 XQuery 脚本以单点登录 MarkLogic 时出错

    我正在研究使用 xquery 重写器脚本来自动登录单点登录解决方案 我从端口 8001 的管理应用程序服务器开始 在应用程序服务器配置中 我有 设置身份验证 application level 设置 url 重写器 rewriter xqy
  • WinForms 文本框自动完成事件

    我的表单上有一个具有自动完成功能的 NET 文本框 该表格还具有AcceptButton and CancelButton定义的 如果我尝试提交建议Enter键或关闭下拉菜单Esc 我的表格关闭 我的想法是创建继承自的自定义文本框TexBo
  • 问题“线程“main”中出现异常# START NON-TRANSLATABLEjava.lang.NoClassDefFoundError: G€“Xmx3072m”(MyEclipse 12.0 Blue 和 Websphere7)

    我正在使用 MyEclipse 14 0 Blue 和 Websphere7 我正在尝试通过 服务器 选项卡部署到 Websphere 当它开始部署时 我遇到了以下问题 Exception in thread main START NON
  • grpc-java 的 BindableService 问题

    我正在尝试使用 grpc java v1 1 2 下面的 build gradle 部分 但是当我尝试为示例应用程序运行 fat jar 时 它会抛出下面给出的异常 编译应用程序时我没有看到任何问题 构建 gradle 部分 apply p
  • 从一个子域到另一个子域的 AJAX 请求,但在同一域上

    我知道除非使用 代理 一台服务器 否则无法执行跨域 ajax 请求 但是 如果我从 server1 example com 向 server2 example 发出 ajax 请求 即使它位于 example com 的同一域中 这是否不起
  • 如何使 switch 语句不区分大小写?

    在下面的例子中 有时 var可以是 Value value 甚至 VALUE switch var case value Value and VALUE don t seem to match here break 比较似乎区分大小写 仅匹
  • WooCommerce 3 中产品变体的 Ajax 添加到购物车按钮

    我这里有这个按钮 该按钮的用途是将产品 id 为 237 variation id 为 208673 attribute pa option 为蓝牙的产品添加到购物车 有没有办法 AJAX 这个 div class btnss span c
  • 如何在 Django 环境中使 html 从外部 js 文件调用 javascript 函数

    我正在使用 Django 开发一个应用程序 我希望用户一登陆某个 HTML 页面就弹出一个警报窗口 调用使窗口弹出的javascript函数funprova这个函数存储在一个名为的 js 文件中prova js 在路径上 静态 js pro
  • Ajax 调用 Github API 失败

    所以我对此有点陌生 到目前为止我的代码还不能工作 但如果有人能告诉我我错过了什么 我将不胜感激 基本上 我正在尝试调用 github 的 api 它返回 json 数据 我最终想解析它并仅显示特定信息 但目前我只是试图让数据显示在我的浏览器
  • 如何异步调用方法

    我尝试过点击此链接异步调用 http support microsoft com kb 315582但有些类已经过时了 所以我想要我的项目的确切答案 public class RegisterInfo public bool Registe
  • 如何对消费者组内的 Kafka 消费者进行负载均衡

    Scenario 同一消费者组内有 10 个 kafka 消费者 Kafka 有 10 个分区 gt 这意味着每个分区都会自动分配给组内的单个消费者 消息以循环方式发送到分区 有时 一条消息的处理时间会比其他消息长得多 在这种情况下 下一条
  • 在实际的 CPU 上,未初始化变量的值从何而来?

    我想知道变量的初始化方式 include
  • 获取表中元素的 offsetTop

    我似乎无法弄清楚如何获取表中元素的 offsetTop 它适用于表格外部的元素 但表格内的所有元素都返回相同的结果 并且通常位于页面顶部 我在 Firefox 和 Chrome 中尝试过这个 如何获取表中元素的 offsetTop offs
  • 哪些开源许可证与 Apple 的 iPhone 及其官方 App Store 兼容? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在编写一个 iPhone 应用程序 我想使用第 3 方库来实现其部分功能 我打算通过 App Store 出售它 并且我的代码不会开源 哪些开源许