GPL 协议大概讲的就是,如果你用了它的代码,你的软件也要用 GPL 发布并且开源。
这里有一些争议点不太明白。
假设有库 A 是 C++写的 GPL ,现在要写个库 B 是 C#。我们发现库 A 里的一个函数叫 func 特别有用,想弄到库 B 里。
-
直接 1:1 把 A 里的 func 代码转成 C#放到 B 里。据我所知,这种情况下,B 必须开源并且是 GPL 协议。
-
把 A 里的 func 代码重构成 C#, 并且做很多抽象+改动,改的面目全非。据我所以,这种情况下,有争议。有的人认为这仍然是必须遵守 GPL ,有的人认为这可以不用遵守 GPL 了。
-
找到一篇文章,描述了 A 是如何写成的 func 。根据文章的原理来写 C#代码。这种情况下,如果 C#代码逻辑步骤和 A 里 C++代码一样,应该怎么判定?是必须遵守 GPL 还是完全不用管他?
GPL 中,关于 B 到底有没有用 A 的代码的判定界限,到底是在哪里?