- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
6年前关闭。
Improve this question
我即将编写一个 iPhone/Android 应用程序,以便在我的移动设备上为一个开源项目提供一个漂亮的 GUI,该项目主要是一个带有 html 前端的 Web 软件。该服务器根据 GPL 2 的条款获得许可。
我将在服务器代码中实现一个 JSON API。我也将在 GPL 2 下在服务器端发布 API。
但是移动应用程序呢?我认为这是一个新产品。它使用开源项目的 API。但它是一个独立的应用程序不是吗?所以我可以为这个应用程序选择一个专有许可,让用户付费,对吗?
谢谢!
最佳答案
简短的回答:没有。
更长的答案:应用程序的简单使用并不能成为该应用程序的产品 GPL.GPL 说:
The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work.
这意味着只有当网站出于其他原因是 GPL 时,在 GPL 服务器上运行的网站(运行涵盖作品的输出)才是 GPL。
因此,即使您的网站/网络服务和 JSON API 也不必是 GPL。但是……由于您的网站使用 GPL 涵盖的 JSON API,因此它必须在 GPL 下发布。除非……您可以联系 JSON API 的作者(您自己)以授予您在非 GPL 许可下使用该库的许可(在这种情况下,JSON API 是双重许可的)。在这种情况下..您实际上甚至可以让您的网站/网络服务成为专有的。
这甚至没有考虑移动应用程序。网站本身不需要是 GPL。移动应用程序当然没有必要成为 GPL。除非……您碰巧在开发移动应用程序时使用了 GPL 涵盖的库。或者...您的移动应用程序下载并执行 GPL 许可的 javascript 文件。
GPL 不包括对 GPL 覆盖 Material 的简单处理。例如,您可以自由地使用非 GPL 编译器来编译 GPL 代码,GPL 允许这样做。这与您的移动应用程序从 GPL 涵盖的 Web 服务下载 GPL 涵盖的数据相同。
再次注意,即使在这里 GPL 也不涵盖您的网站生成的任何 JSON 数据,即使您声明该网站是 GPL。为了使 JSON 数据成为 GPL,您需要向您的网站/网络服务的用户明确指定它,或者让 JSON 数据本身包含版权声明:
{
"copyright" : "this data is copyright of krymel and is licensed under the GNU General Public License as specified at http://www.gnu.org/licenses/gpl.html",
"data" : "real data here"
}
因此,很可能您的移动应用程序甚至不消耗 GPL 数据。即使这样做了,它也不会强制应用程序拥有 GPL 许可证。
在您的应用程序下载并执行 GPL 覆盖脚本的情况下。 GPL 仅涵盖您拥有的与 GPL 脚本在相同环境中运行的任何其他脚本。脚本解释器本身不需要是 GPL。当然,除非通过解释脚本需要解释器将脚本加载到与解释器相同的内存空间中。这在 javascript 的情况下是不正确的。
所有这一切的总结是:使用 GPL 涵盖的产品不需要您采用 GPL。在您自己的代码中包含 GPL 代码需要您使用 GPL。
再说一次,我不是律师。
关于licensing - 如果网络服务器软件根据 GPL 条款获得许可,我是否需要在 GPL 下提供 iPhone 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3886520/
我正在为我的雇主编写脚本,以从他们自己的站点获取某些数据。出于一长串原因,我需要从网站上获取数据,如图所示。我发现,其中一些数据是通过 js 调用检索的... 回想起来,我应该选择 Mechanize
我正在使用 python 和 cryptography.io 来签署和验证消息。我可以通过以下方式获得签名的 DER 编码字节表示: cryptography_priv_key.sign(messag
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
是否可以区分 ECDF?以下面得到的为例。 set.seed(1) a <- sort(rnorm(100)) b <- ecdf(a) plot(b) 我想对 b 求导以获得它的概率密度函数 (PD
我找到了如何从 navigator.mimeTypes 获取 mimetypes: function GetMimeTypes() { var message = ""; var mi
我在表单中使用单选按钮来隐藏/显示联系人表单中的成员 ID 字段。问题是,当 javascript 更改 html 中包含的隐藏 id 字段(该字段设置为“无”值)时,该字段将不再通过 post 可用
我正在做单元测试。我必须测试所有可能的if..else情况。但是在此if语句中: int32_t i32Res = snprintf(buffer, len, "The%d_String_%d", 0
我有一个 Facebook 应用程序,我想从中获取“喜欢”的总数。我想知道这是否可能。 其中 ID 是应用程序的 ID,ACCESS_TOKEN 是我尝试过的应用程序的当前访问 token : gra
如果我有多个计算实例尝试同时获取同一个 blob 的租约,则似乎经常会成功。我的印象是,一旦租约发出(并因此被客户获得),就不可能同时发出另一个租约? 我希望情况确实如此,我一直在 Azure 中使用
这是我的索引 POST /blogs/1 { "name" : "learn java", "popularity" : 100 } POST /blogs/2 { "name" : "l
我正在将 Symfony2 与 FOSUserBundle 一起使用。我需要为用户获得最高角色。 role_hierarchy: ROLE_CONTRIBUTOR: ROLE_USER
我正在向服务器发送基于 REST 的请求。我希望尽快得到答复,并希望了解可以进行的各种优化。 一种方法当然是在线程中并行发送这些请求。还有哪些其他选项可用于优化此功能? 在服务器上,可以添加哪些配置?
这可能是某种重复的问题,但我似乎找不到合适的解决方案。我正在使用 git4idea.history.GitHistoryUtils.history() 获取提交列表。如果 checkout 其中一个较
我正在做一个程序,可以输入每周的工资和那一周的总工作时间。它应该以小时工资率显示答案。但是我无法显示正确的“centavos/2 decimal places”公式并且它不想使用 float % fl
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我已经尝试了 mContext.getMainLooper() 和 Looper.getMainLooper()。两者都返回相同的结果,但我想知道哪种方法正确? 我还从 Android 开发人员链接中
我有一个“affiliates”表,其中包含“user”和“referredBy”列。 给定一个用户,我希望获得该用户推荐的所有“n 级”玩家。对于 n=1,我们只关心您直接推荐的玩家数量: SELE
我在 PostgreSQL 9.5 数据库中有两个表: project - id - name task - id - project_id - name - updated_
请帮助我怎样才能得到我预期的结果,在此先感谢并抱歉我的英语不好。 PHP: $dog = implode(',', $data['dogbreed']); $query .= "AND `do
我有 let impulse = CGVectorMake(CGFloat(Constants.impulse), 0) 如何在不创建另一个 CGVector 的情况下得到它的负值? 我正在考虑在 C
我是一名优秀的程序员,十分优秀!