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

关于 GPL 协议的一些疑问

  •  
  •   qdwang · 2022-01-26 10:10:28 +08:00 · 1057 次点击
    这是一个创建于 1027 天前的主题,其中的信息可能已经有所发展或是发生改变。

    GPL 协议大概讲的就是,如果你用了它的代码,你的软件也要用 GPL 发布并且开源。

    这里有一些争议点不太明白。

    假设有库 A 是 C++写的 GPL ,现在要写个库 B 是 C#。我们发现库 A 里的一个函数叫 func 特别有用,想弄到库 B 里。

    1. 直接 1:1 把 A 里的 func 代码转成 C#放到 B 里。据我所知,这种情况下,B 必须开源并且是 GPL 协议。

    2. 把 A 里的 func 代码重构成 C#, 并且做很多抽象+改动,改的面目全非。据我所以,这种情况下,有争议。有的人认为这仍然是必须遵守 GPL ,有的人认为这可以不用遵守 GPL 了。

    3. 找到一篇文章,描述了 A 是如何写成的 func 。根据文章的原理来写 C#代码。这种情况下,如果 C#代码逻辑步骤和 A 里 C++代码一样,应该怎么判定?是必须遵守 GPL 还是完全不用管他?

    GPL 中,关于 B 到底有没有用 A 的代码的判定界限,到底是在哪里?

    8 条回复    2022-01-27 12:01:49 +08:00
    qdwang
        1
    qdwang  
    OP
       2022-01-26 10:13:37 +08:00
    对了,还有 4

    4. 如果你完全没看过库 A ,碰巧用 C#写了和库 A 一样逻辑的代码,会不会被判定为必须遵守 GPL ?
    liyanggyang
        2
    liyanggyang  
       2022-01-26 11:09:29 +08:00
    @qdwang 你看没看过,他都在那里,不能掩耳盗铃了。所以排除 4
    qiguai2017
        3
    qiguai2017  
       2022-01-26 11:21:33 +08:00
    有没有侵犯他的权利还要看代码量和复杂程度。

    如果我写个 print(hello world), 并把它声明为 GPL, 是不是别人所有的代码只要有这句话,就都必须遵守 GPL 协议了?
    echo1937
        4
    echo1937  
       2022-01-26 11:26:43 +08:00 via iPhone
    @liyanggyang 4 是可行的,wsl 一代的很多接口就是这么做的,这种有个名词叫做 clean room Linux
    qdwang
        5
    qdwang  
    OP
       2022-01-26 12:48:14 +08:00
    @qiguai2017 是呀,所以 GPL 这个协议其实挺难判断的感觉。除非是大段大段的纯粹一字不改的 copy ,可以判定必须遵守 GPL ,其他的情况都有可能发生。
    qdwang
        6
    qdwang  
    OP
       2022-01-26 12:52:39 +08:00
    我觉得 GPL 本质上只能保护一种情况,就是一段算法本身就是写库 A 的人发明的,这个库 A 是 GPL 。那么概念发明者,代码算法都是这个人发明的,所以 GPL 可以完美保护。

    如果有一个人 X 发明了一种算法,写在文章里,明确可以自由传播。另一个人写了库 A ,用了这个算法,也用了 GPL 协议。其实这里 GPL 本质上不能保护这段算法。因为别人有权随便用 X 的算法。
    secondwtq
        7
    secondwtq  
       2022-01-26 19:33:50 +08:00   ❤️ 1
    @qdwang #6 根据我的了解,你说的第一种情况也没法保护。
    GPL 保护的是具体实现不是 idea 。用 cleanroom 的方式还是可以使用你的算法。
    使用专利可能能保护算法,但好像总的来说实践起来还是比较困难,尤其是你很难知道别人到底是怎么实现的情况下( GPL 也存在一样的问题)。

    一个例子:本世纪初 Thomas W. Sederberg 等人提出了 T-Spline ,这是一种三维表面的表示方法,据说结合了 NURBS 和细分曲面的优点。paper 发出来没多久这群人就商业化了这个算法并申请了专利,后来公司被 (隔壁好像正在招人的) Autodesk 收购。过了几年 Autodesk 把这东西放到了自家的 Fusion 360 上,并且停止了其他软件(如 Rhino )的 T-Spline 插件更新。直到现在也没有其他地方实现 T-Spline 。
    qdwang
        8
    qdwang  
    OP
       2022-01-27 12:01:49 +08:00
    @secondwtq 十分感谢回复,我基本明白目前的情况了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5581 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:57 · PVG 16:57 · LAX 00:57 · JFK 03:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.