关于开源协议的疑问, 怎么定义"使用", "修改", "分发".

2018-04-30 13:17:00 +08:00
 dongyx

有些协议要求使用了它们的代码必须开源, 有些要求使用了它们的代码必须附带协议, 有些只有在修改后才有这些要求.

  1. 那么, 怎么定义[使用]? 我使用使用了它的二进制库算使用吗? 我使用了它的开源代码, 但是只是作为库使用, 没有抄里面的代码算使用吗? 我的代码调用了 Linux 系统调用, 我算使用了 Linux 吗, 我必须开源吗? MySQL 呢?

  2. 怎么定义[修改], 我受到它的启发, 写了一个自己的库, 但是参考了很多它的代码, 某些函数甚至完全一样或者我就改了个变量名, 算[修改]吗? 要求修改后开源的协议, 我只需要开源库代码还是需要开源我的整个代码?

  3. 怎么定义[分发], 在客户端使用和在服务端使用开源代码是否有本质区别?


再多一个问题, 要求你附带这份协议的开源项目, 具体应该怎么附带? repo 里放一份? 关于页面里写一下?

1887 次点击
所在节点    问与答
2 条回复
honeycomb
2018-04-30 13:55:40 +08:00
Android 的做法隔离了 GPLv2 的 Linux 内核与主要是以 Apache 授权的其它 Android 代码。

一起分发,但作为库使用会受到 GPL 传染,但可使用 lgpl。使用系统调用比较可能不传染。

所以,如果你的软件打包了 MySQL 的 community 版本后销售,则整个包受到 GPL 传染,即你至少要提供源代码,但你让对方自行获取 MySQL,或你提供商业授权的 MySQL 则不受影响。

GPL 不限制在云端提供使用但不发布的软件,但 agpl 则不行
msg7086
2018-05-01 04:55:26 +08:00
你问的这些问题得要去看许可证条款。每个许可证的要求是不同的,不能光开源二字就一概而论的。
IANAL 我不是律师,所以只能提供简要回答。建议你有需要的时候最好咨询律师。

Linux 使用 GPL 许可证,使用 Linux 意味着,使用了 Linux 的代码,或者与含有 Linux 代码的库进行链接。
系统调用、网络接口数据传递等等通常不属于直接使用范畴。

修改是指你直接在对方程序中修改代码的行为。只有具体的代码,比如程序流程结构和程序代码本身,才算作修改 /使用。算法不是代码。只要有代码处于 GPL 范围内,则任何与这块代码相连接的程序、模块,都是 GPL 污染的。

分发是指你将软件转交给第三方。提供下载,内置于硬件中(比如路由器上的 OS ),寄送刻录光盘等等,都属于分发。

放在自己的服务器中运行不是分发。

附带协议可以选择任何合适的方式。写在软件零售包装盒上,写在 Repo 或者 Readme 中,存放在程序运行目录里,放在程序的关于对话框中,都可以。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/451031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX