V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dongyx
V2EX  ›  问与答

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

  •  
  •   dongyx · 2018-04-30 13:17:00 +08:00 · 1881 次点击
    这是一个创建于 2159 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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


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

    2 条回复    2018-05-01 04:55:26 +08:00
    honeycomb
        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 则不行
    msg7086
        2
    msg7086  
       2018-05-01 04:55:26 +08:00
    你问的这些问题得要去看许可证条款。每个许可证的要求是不同的,不能光开源二字就一概而论的。
    IANAL 我不是律师,所以只能提供简要回答。建议你有需要的时候最好咨询律师。

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

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

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

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

    附带协议可以选择任何合适的方式。写在软件零售包装盒上,写在 Repo 或者 Readme 中,存放在程序运行目录里,放在程序的关于对话框中,都可以。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5527 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:59 · PVG 16:59 · LAX 01:59 · JFK 04:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.