dongyx
V2EX  ›  问与答

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

  •  
  •   dongyx · Apr 30, 2018 · 2264 views
    This topic created in 3032 days ago, the information mentioned may be changed or developed.

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

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

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

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


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

    2 replies    2018-05-01 04:55:26 +08:00
    honeycomb
        1
    honeycomb  
       Apr 30, 2018 via Android
    Android 的做法隔离了 GPLv2 的 Linux 内核与主要是以 Apache 授权的其它 Android 代码。

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

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

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

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

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

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

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

    附带协议可以选择任何合适的方式。写在软件零售包装盒上,写在 Repo 或者 Readme 中,存放在程序运行目录里,放在程序的关于对话框中,都可以。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3886 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:15 · PVG 13:15 · LAX 22:15 · JFK 01:15
    ♥ Do have faith in what you're doing.