有些协议要求使用了它们的代码必须开源, 有些要求使用了它们的代码必须附带协议, 有些只有在修改后才有这些要求.
那么, 怎么定义[使用]? 我使用使用了它的二进制库算使用吗? 我使用了它的开源代码, 但是只是作为库使用, 没有抄里面的代码算使用吗? 我的代码调用了 Linux 系统调用, 我算使用了 Linux 吗, 我必须开源吗? MySQL 呢?
怎么定义[修改], 我受到它的启发, 写了一个自己的库, 但是参考了很多它的代码, 某些函数甚至完全一样或者我就改了个变量名, 算[修改]吗? 要求修改后开源的协议, 我只需要开源库代码还是需要开源我的整个代码?
怎么定义[分发], 在客户端使用和在服务端使用开源代码是否有本质区别?
再多一个问题, 要求你附带这份协议的开源项目, 具体应该怎么附带? repo 里放一份? 关于页面里写一下?
1
honeycomb 2018-04-30 13:55:40 +08:00 via Android
Android 的做法隔离了 GPLv2 的 Linux 内核与主要是以 Apache 授权的其它 Android 代码。
一起分发,但作为库使用会受到 GPL 传染,但可使用 lgpl。使用系统调用比较可能不传染。 所以,如果你的软件打包了 MySQL 的 community 版本后销售,则整个包受到 GPL 传染,即你至少要提供源代码,但你让对方自行获取 MySQL,或你提供商业授权的 MySQL 则不受影响。 GPL 不限制在云端提供使用但不发布的软件,但 agpl 则不行 |
2
msg7086 2018-05-01 04:55:26 +08:00
你问的这些问题得要去看许可证条款。每个许可证的要求是不同的,不能光开源二字就一概而论的。
IANAL 我不是律师,所以只能提供简要回答。建议你有需要的时候最好咨询律师。 Linux 使用 GPL 许可证,使用 Linux 意味着,使用了 Linux 的代码,或者与含有 Linux 代码的库进行链接。 系统调用、网络接口数据传递等等通常不属于直接使用范畴。 修改是指你直接在对方程序中修改代码的行为。只有具体的代码,比如程序流程结构和程序代码本身,才算作修改 /使用。算法不是代码。只要有代码处于 GPL 范围内,则任何与这块代码相连接的程序、模块,都是 GPL 污染的。 分发是指你将软件转交给第三方。提供下载,内置于硬件中(比如路由器上的 OS ),寄送刻录光盘等等,都属于分发。 放在自己的服务器中运行不是分发。 附带协议可以选择任何合适的方式。写在软件零售包装盒上,写在 Repo 或者 Readme 中,存放在程序运行目录里,放在程序的关于对话框中,都可以。 |