V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rv54ntjwfm3ug8
V2EX  ›  程序员

原样复制 GPL 协议开源项目部分文件时文件开头的版权信息可以拿掉/换成自己的,然后在 项目 Third Party Notice 中说明使用了这个项目的代码吗?

  •  
  •   rv54ntjwfm3ug8 · 2022-03-19 11:50:43 +08:00 via iPhone · 2499 次点击
    这是一个创建于 1009 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果可以,需要标明是哪些文件吗?
    如果复制后有修改呢?
    25 条回复    2022-03-20 17:47:53 +08:00
    harde
        1
    harde  
       2022-03-19 12:28:58 +08:00
    GPLv3 么? GPLv3 无法被清除。
    12101111
        2
    12101111  
       2022-03-19 12:35:48 +08:00
    使用 Git 管理的开源软件可以在 commit message 里加上 Signed-off-by 表明版权归属, 这一行 git commit -s 可以自动加上。
    文件开头可以只标 SPDX-License-Identifier. 因为 git 的 commit 历史可以正确的表示每一行修改的作者.

    如果是仅以压缩包的形式发布,这么做恐怕不太行
    ulosggs
        3
    ulosggs  
       2022-03-19 12:43:01 +08:00
    GPL 协议的要求是你用了他的代码再发布时整个项目也必须是 GPL 协议,文件怎么改随意,也不用加任何 notice 。
    Suzutan
        4
    Suzutan  
       2022-03-19 12:43:51 +08:00 via iPhone
    如果是 GPLv3 不仅仅需要保留原始信息,做出了修改还需要标注

    ……
      你可以以源码形式转发基于本程序的作品或修改的内容,除满足第四条外还需要满足以下几点要求:
       a)该作品必须带有醒目的修改声明及相应的日期。
    ……
    Suzutan
        5
    Suzutan  
       2022-03-19 12:45:54 +08:00 via iPhone
    修正一下,没有说必须保留什么,但是要有修改声明和相应的日期
    个人理解
    jones2000
        6
    jones2000  
       2022-03-19 13:12:42 +08:00
    换一个语言,移植就可以。比如开源工程是 c++ 写的, 你直接把他移植成 py , 或 js 不就可以了。
    BrettD
        7
    BrettD  
       2022-03-19 15:16:54 +08:00
    移植到另一个语言也算是衍生作品,也需要遵循 GPL
    rv54ntjwfm3ug8
        8
    rv54ntjwfm3ug8  
    OP
       2022-03-19 15:18:55 +08:00
    原项目有几十个功能,我的项目只用到一个,其它永远用不到,想把它独立出来。

    @harde
    @12101111
    @ulosggs
    @Suzutan
    @jones2000
    @BrettD
    BrettD
        9
    BrettD  
       2022-03-19 15:20:56 +08:00
    你的项目如果要分发的话也需要遵循 GPL ,除非你的项目不会向外公开分发,或者用跨进程的方式调用 GPL 部分代码
    baobao1270
        10
    baobao1270  
       2022-03-19 15:24:26 +08:00
    我的经验是,原来的文件头不动,如果你修改了那个文件,那就在该文件头的前面加上你自己的声明
    cybird
        11
    cybird  
       2022-03-19 15:29:40 +08:00
    GPLv3 只要求你修改代码后,项目同样要求使用 GPL 分发。以及如果你进行了修改,则应提供修改声明、修改日期和修改人身份信息,这是为了保护你的专利。
    GPL 始终遵循以下原则
    软件不应限制其用户。每个用户都应该有四项基本自由:
    有自由按自己的意愿使用软件,
    有自由按自己的需要修改软件,
    有自由把软件分享给友邻,以及有自由分享自己对软件的修改。
    jones2000
        12
    jones2000  
       2022-03-19 15:31:46 +08:00
    @BrettD 只是思路和设计是一样的, 代码实现都是不一样的, 也需要遵循?
    BrettD
        13
    BrettD  
       2022-03-19 15:40:43 +08:00
    @jones2000 是,除非你的移植版本是净室实现
    ulosggs
        14
    ulosggs  
       2022-03-19 15:44:45 +08:00
    @theklf4 你不想开源其他部分的话,那么这个功能必须和其他部分独立发布,一般会以插件的形式让用户自行下载
    jones2000
        15
    jones2000  
       2022-03-19 15:48:03 +08:00
    @BrettD 不同语言,实现肯定是不一样的, 就比如绘图, 你把 echarts 用,c++实现一遍,代码百分百不一样。
    BrettD
        16
    BrettD  
       2022-03-19 15:50:52 +08:00
    @jones2000 GPLv2 条款:

    This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
    BrettD
        17
    BrettD  
       2022-03-19 15:53:15 +08:00
    @jones2000 把 GPL 软件用别的语言“洗稿”也算是衍生作品,除非是净室实现
    rv54ntjwfm3ug8
        18
    rv54ntjwfm3ug8  
    OP
       2022-03-19 15:54:31 +08:00
    问题是如果我完整开源了整个项目,我可以把原作者在文件头部留下的版权声明换成自己的,然后在项目 Third Party Notice 留下原作者版权声明吗?如果可以,我需要标注我对哪个文件做了什么修改吗?
    rv54ntjwfm3ug8
        19
    rv54ntjwfm3ug8  
    OP
       2022-03-19 15:55:27 +08:00
    问题是如果我完整开源了整个项目,我可以把原作者在文件头部留下的版权声明换成自己的,然后在项目 Third Party Notice 留下原作者版权声明吗?如果可以,我需要标注我对哪个文件做了什么修改吗?
    @cybird
    @BrettD
    @ulosggs
    @12101111
    @harde
    BrettD
        20
    BrettD  
       2022-03-19 15:58:38 +08:00   ❤️ 1
    (1) 你的整个项目需要是 GPL 协议
    (2) 不建议把原文件头删掉,惯例做法是在源文件头里面补充加上 (C) 2022 你的名字
    rv54ntjwfm3ug8
        21
    rv54ntjwfm3ug8  
    OP
       2022-03-19 16:06:29 +08:00
    @BrettD 举个极端点的场景,例如我想要在我写的 Windows 桌面软件中使用 Linux 内核中 async_pf.c ( https://github.com/torvalds/linux/blob/master/virt/kvm/async_pf.c) 这个文件的 60%代码,但我的程序用途和这个文件原来的用途完全无关,照你的说法我的文件头应该写成

    // (C) 2022 MY_NAME
    // SPDX-License-Identifier: GPL-2.0-only
    /*
    * kvm asynchronous fault support
    *
    * Copyright 2010 Red Hat, Inc.
    *
    * Author:
    * Gleb Natapov <[email protected]>
    */

    即使我的用法和 kvm asynchronous fault support 完全无关?

    (随便找的文件举例子,并不是我真的要用这个文件)
    BrettD
        22
    BrettD  
       2022-03-19 16:26:48 +08:00   ❤️ 1
    kvm asynchronous fault support 删不删我个人认为不是重点,重点是要保留原作者的版权声明

    // SPDX-License-Identifier: GPL-2.0-only
    /*
    * 描述你的改编版本是干啥的
    *
    * Copyright (C) 2022 theklf4
    *
    * Based on work by
    * Copyright 2010 Red Hat, Inc.
    * Original Author:
    * Gleb Natapov <[email protected]>
    */

    或者

    // SPDX-License-Identifier: GPL-2.0-only
    /*
    * kvm asynchronous fault support
    *
    * Copyright 2010 Red Hat, Inc.
    *
    * Author:
    * Gleb Natapov <[email protected]>
    *
    * =======================
    *
    * modified for xxxxx purpose
    *
    * Copyright (C) 2022 theklf4
    */
    harde
        23
    harde  
       2022-03-19 23:31:39 +08:00
    @theklf4 #19 不,你并不拥有“版权”,或者说你不拥有完整版权,你只拥有你修改的部分的版权。
    在国内的大环境下,你能问出这么多,我相信你是一个尊重版权的人,但是真的要严格遵守 GPL 协议,当下你已经很难做到,毕竟你哪怕参考了思路,也属于衍生的范畴。
    msg7086
        24
    msg7086  
       2022-03-20 11:25:17 +08:00
    @harde 算法不直接被版权保护,算法的实现才是。
    比如说,看着维基百科关于快速排序的动画图或者描述文字,写出快排的代码,这个代码属于原创作品而非衍生作品。当然,如果是看着其他语言写的快排,然后翻译成另一种语言,这就属于衍生作品了。
    FrankHB
        25
    FrankHB  
       2022-03-20 17:47:53 +08:00
    https://www.gnu.org/licenses/gpl-howto.html
    怎么用,这里说得够清楚了。
    版权声明没有固定的格式;如果你提供了许可证,法律上也不是必须的,只是这样会留下更多漏洞而不符合原意。一般在每个适用源文件中明确提到遵循哪个许可证,整个项目附带许可证的文本文件。如果你没有单独的版权声明,可被认为所有文件都适用许可证。如果你修改的代码按适用的许可证条款要求标注修改,可以在源文件中一起标注(或者你打算准备另外的文档)。
    GPL 要求标注修改的,并且合并的工作也要求用 GPL 分发。你可以对不被许可证涵盖的非衍生作品(或者说你自己完全作为所有者的作品)同时使用其它许可证并一并分发。是否允许文件的版权声明看原作者的许可。一般作者提供的许可证不包含所有权转移的许可,所以你不能移除原作者的版权声明,以避免对你实际上不具有所有权的作品主张所有权。
    对衍生作品判定的范围有争议,但一般来说,“翻译”被版权保护的作品,构成衍生作品,这同样适用于程序源代码。按 FSF 的意思,链接的程序也属于衍生作品。按 Linux 项目的解释,用户空间的程序不构成内核的衍生作品。IANAL ,关于具体涵盖的严格的结论请咨询版权法律师。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2805 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:58 · PVG 19:58 · LAX 03:58 · JFK 06:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.