如果我基于使用 GPLv2 授权的软件进行二次开发并分发给用户使用,我需要将源代码开源吗?

2023-03-05 22:59:31 +08:00
 wniming

我的软件不是让用户可见直接使用的,而是要作为硬件的固件让用户使用的,我知道技术上应该不会被人发现我使用了什么开源软件,但我想知道法律上我是否应该把我的修改也开源出来?

具体来说我是要把 linux 做一些修改并放在硬件里跑,让 linux 充当固件,我想知道我是否应该将修改后的源代码也开源出来,如果我不想开源,我是否可以通过将功能写成一个单独的内核模块来避免法律上的问题?

2650 次点击
所在节点    程序员
23 条回复
ysc3839
2023-03-05 23:09:24 +08:00
印象中是如果你提供固件给用户下载,那也要提供源代码,如果整个硬件完全是一个黑箱给用户使用,则不需要。
wniming
2023-03-05 23:12:00 +08:00
@ysc3839 感谢回复,让用户使用特定的软件升级固件的这个过程也有下载的操作,但下载完是直接刷写到硬件里的,这种情况不需要开源吧?
ysc3839
2023-03-05 23:13:39 +08:00
@wniming 应该不需要
GuangXiN
2023-03-05 23:33:22 +08:00
即便你以硬件附带二进制程序的方式分发软件,也必须保证用户获得你的源代码的自由。
adoyle
2023-03-05 23:36:43 +08:00
你修改了 GPLv2 授权的软件,打包成固件发布。你就必须要开源这个固件的源码。
neoblackcap
2023-03-06 00:25:38 +08:00
需要,可以参照 QNAP 等基于 linux 的固件,都是得公开源代码的。
你不想公开你的代码,那么得写成能动态加载的内核模块才行。具体例子就是英伟达显卡的驱动
cnbatch
2023-03-06 01:32:18 +08:00
TL;DR: 当然需要

如果 OP 玩过 OpenWRT 或者听说过 OpenWRT ,可以尝试了解下它诞生的历史背景,了解完你就会明白怎样做。

顺手写个简略版:

Linksys 的 WRT54G 路由器( 2002 年 12 月发售)用了 Linux 做系统固件但未公开源码,被人发现后依然死撑拒绝公布,然而没多久就撑不住了,最后在 2003 年 7 月时公开了固件源码。

半年后,OpenWRT 诞生,代码正是基于 Linksys 公布的源码。
Trim21
2023-03-06 03:40:09 +08:00
@wniming 我不确定完全黑盒的情况,但如果你提供固件下载的话肯定是要提供源码的。
yolee599
2023-03-06 08:42:24 +08:00
只要你修改了 Linux 源码,就必须要公开,包括启动脚本。如果是内核模块,单独编译,再在系统运行起来的时候手动通过 insmod 安装,则不用公开,不能直接编译进内核!
missdeer
2023-03-06 09:16:26 +08:00
代码是肯定要开源的,但是你可以把一些重要信息做成编译参数的形式,就只要编译时通过命令行写进去,就不用开源
haha512
2023-03-06 09:29:24 +08:00
如果只是面向国内客户,完全不用考虑,法律上又不承认开源协议,只要不侵犯别人的专利权著作权就行了
ByLCY
2023-03-06 09:58:34 +08:00
@haha512 国内有法院将开源协议当做合同来看案例
msg7086
2023-03-06 10:12:01 +08:00
你说的这个就是 7 楼 WRT 的原版案例。把 Linux 刷进硬件以后拿来卖,最后被强制开源。
vone
2023-03-06 10:21:42 +08:00
可以说:代码开源,但是不使用任何开源平台。如果有用户需要代码,可以线下前往公司复制。
leonshaw
2023-03-06 10:30:12 +08:00
单独内核模块的话不能引用 GPL ( EXPORT_SYMBOL_GPL )的内核符号。
haha512
2023-03-06 11:35:42 +08:00
@ByLCY 看过那个案例,并不是承认了开源协议当合同,核心还是侵犯了版权
ByLCY
2023-03-06 14:42:22 +08:00
@haha512 [判决书]( https://wenshu.court.gov.cn/website/wenshu/181107ANFZ0BXSK4/index.html?docId=U2i3wuBZ89P1nTSd0/3YzhGmrtdffuqMILDvq3QadoIqgYneTFEOgfUKq3u+IEo4+Q+nCz0HhftEubetEZilKDqpGwpjdCW96r/hZ1lBbz97jkS4qMaXo9zZD2CSSWY/)
上面是判决书,你可以看下。我要是没理解错的话就是当作了合同,原告通过 gpl 协议(合同)将他的一部分权利让渡给了不特定对象。判决书中的相关说明:

>> 关于 GPL3.0 协议的法律性质。其一,协议的内容具备合同特征。GPL3.0 协议属于发生私法上效果的意思表示,而意思表示是民事法律行为的核心要素,因此 GPL3.0 协议是一种民事法律行为。该协议授予用户复制、修改、再发布等权利,实际上在授权人和用户间形成了权利变动,属于设立、变更、终止民事权利义务关系的民事法律行为。授权人许可的权利符合我国著作权法的相关规定;其采用开源许可证发布源代码,将自己的大部分著作权授予不特定用户,完全是出于自愿。用户在许可证下复制、修改或再发布源代码,通过行为对许可证作出承诺,也是出于自愿。用户在对源代码进行复制、修改或发布时许可证成立,同时许可证发生法律效力。其二,协议的形式亦具备合同特征。GPL3.0 协议以电子文本方式表现其内容,而电子文本是一种有形的表现形式,属于以书面形式订立的合同。综上所述,GPL3.0 协议具有合同性质,可认定为授权人与用户间订立的著作权协议,属于我国《合同法》调整的范围。

---

关于你说的版权,是在授权人有著作权的情况下就可以通过许可将权利让渡。在文书中有提到以下句子:

>> 开源软件依赖于现有著作权及相关法律体系的保护,授权人只在享有著作权的情况下,其通过许可证将权利有条件进行许可或让渡才有法理依据。

---

关于权限的让渡在 gpl 协议中是有条件的让渡,如果被授权方不履行合同要求让渡的权利就会被收回。判决书中的原文是这样的:

>> 关于违反 GPL3.0 协议的侵权责任。著作权法为了保护权利人的专有权,仅规定非权利人可以在如“合理使用”等范围内使用作品,诸如复制、修改、发行等权利则专属于权利人,任何人非经许可实施这些行为将构成侵权。根据 GPL3.0 协议第 8 条“终止授权”的约定,授权人许可用户在遵守许可证规定的前提下行使某些权利,但用户必须承担相应的义务。若用户违反 GPL3.0 协议的使用条件来复制、修改或传播受保护的作品,其通过 GPL3.0 协议获得的授权将会自动终止。对此,我国《民法总则》第一百五十八条规定:“民事法律行为可以附条件……附解除条件的民事法律行为,自条件成就时失效”。根据开源软件的特性,GPL3.0 协议规定的使用条件(如开放源代码、标注著作权信息和修改信息等)系授权人许可用户自由使用的前提条件,亦即协议所附的解除条件。一旦用户违反了使用的前提条件,将导致 GPL3.0 协议在授权人与用户之间自动解除,用户基于协议获得的许可即时终止。用户实施的复制、修改、发布等行为,因失去权利来源而构成侵权。明确违反开源软件许可证的侵权法律责任,一方面可以及时制止侵权行为,防止他人对开源软件的不正当利用;另一方面能够有效保护授权人的利益,使他们保有继续创作的动力,促进源代码共享和知识的传播。
andytao
2023-03-06 14:44:59 +08:00
[袋鼠数据库工具]( https://www.datatable.online/zh/download/v2.3.2.230301.html) 也是基于开源软件开发的,选择的库都是 LGPL 协议许可的库,产生的相关修改都会直接提交 PR 合入上游的。
andytao
2023-03-06 14:47:08 +08:00
[袋鼠数据库工具] 也是基于开源软件开发的,选择的库都是 LGPL 协议许可的库,产生的相关修改都会直接提交 PR 合入上游的。干这一行就要遵守这一行的游戏规则。

欢迎体验袋鼠最新版本:v2.3.2
https://www.datatable.online/zh/download/v2.3.2.230301.html
haha512
2023-03-06 16:54:28 +08:00
@ByLCY 不管是提起诉讼还是判决都是"侵害了原告的软件著作权",而不是违反开源协议.

这个软件如果没有申请著作权,那么不管被告如何违反开源协议,都无法以此理由发起诉讼

从这个案例来看,在以侵犯其他权利发起诉讼后,再证明被告违反了开源协议,只是让可能胜率更大点.

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

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

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

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

© 2021 V2EX