给开源游戏做 mod 也会被传染其 GPLv3 协议吗

2023-05-30 16:03:19 +08:00
 RainZack

详情 https://www.v2ex.com/t/943895 分发的 mod 是不含开源游戏本体的

3528 次点击
所在节点    程序员
28 条回复
Trim21
2023-05-30 18:01:18 +08:00
@Mithril 这里的情况是扩展直接调用了主程序提供的 API 操作程序行为,所以不是那种主程序只调用扩展提供的函数的情况。

我觉得按照前面 @secondwtq 提到的,弄个自己做的专有素材就能绕过 GPL 了。毕竟你代码总不能传染到我的画上面吧,缺了我的美术素材你的程序又跑不通顺
ly841000
2023-05-30 18:02:58 +08:00
@hez2010 #8 GPL 的话动态链接也算,LGPL 才不算
ysc3839
2023-05-30 18:08:49 +08:00
@muzuiget 用 Linux 对比不恰当,首先一般认为 GPL 不管进程隔离的,其次 Linux 的协议中可能有豁免条款。我前面发的链接提供了 FSF 官方的解读。
iceg
2023-05-30 18:17:44 +08:00
这个游戏的原开发者就是不支持楼主朋友那种做法的,但是很多扩展开发者都各自划分山头,搞 qq 群小圈子,新人入坑一头问号,想玩一下大部分拓展要加十几个群,而且群里可能问下问题就被称为爷新,游戏的现任维护者看不惯这种情况,脾气又有点暴躁,导致火药桶被点燃了,结果进行了 qq 贴吧大战,总之结论可以看这个帖 https://tieba.baidu.com/p/8434743761
muzuiget
2023-05-30 18:20:16 +08:00
@ysc3839 这么说的话,这是不是还要细分“带豁免条款的 GPL”和“不带豁免条款的 GPL“?或者说,“豁免条款“就是一个中间层。
RainZack
2023-05-30 18:52:14 +08:00
主程序加载 mod 是属于“动态链接”吗?

——“如果主程序动态连接了插件,而且它们之间互相调用函数并共享数据结构,那么我们认为它们构成了一个单一的组合程序,主程序和插件必须被当作一个扩展来对待。如果主程序动态连接了插件,但是它们之间的通信限于调用插件的‘主’函数及其参数并等待其返回,那么这就是个可以算单一组合程序也可以算两个独立程序的临界情况。”
choury
2023-05-30 19:58:41 +08:00
@RainZack 我觉得这里的关键不在于是否动态链接,因为作为插件使用(区别于作为服务提供),不管上层是怎么实现的,底层就只有这个文档里面列举的 fork 然后 exec ,和动态链接两种方式。所以是否认为是单一程序,只需要看是否有数据结构交互,以及函数互相调用
choury
2023-05-30 20:03:15 +08:00
在这种 mod 场景中,隔离 gpl 的思路是,分为两个组件,一个是 server ,暴露 rpc 接口,mod 本身实现为 server 的 client 端,这样的话,只需要开源 client 端源码,而不用开源 server 端,但是能这样做的前提是
1. server 端实现不需要请求游戏提供的接口
2. server 端需要请求游戏接口,但是游戏的接口也是通过 rpc 服务方式提供( Android 的实现方式)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/944229

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX