违反 GPL 协议赔偿 50 万,国内首例!

2023-11-16

2a1f414ffcfa4984152fde744af7c753.gif

整理 | 祝涛       

出品 | CSDN(ID:CSDNnews)

近日,一起关于GPL版权纠纷案裁判文书公示。在一审中,法院指出GPL 3.0协议是一种民事法律行为,具有合同性质,可认定为授权人与用户间订立的著作权协议,属于我国《合同法》调整的范围。

7184618d3d7657782afe1288f160e07b.png

来源于中国裁判文书网

法院称,被告使用了附带GPL 3.0协议的开源代码,却拒不履行GPL 3.0协议规定的使用条件,根据GPL 3.0协议第8条自动终止授权的约定及《民法总则》第一百五十八条的规定,被告通过该协议获得的授权已因违反协议而自动终止。被告因失去权利来源而构成侵权。

一审判定两侵权被告公司赔偿原告公司经济损失及维权合理费用共计50万元,并停止侵权行为。

此判例称得上是国内首个明确GPL 3.0协议的法律效力的案例。广东省深圳市中级人民法院认为,明确违反开源软件许可证的侵权法律责任,一方面可以及时制止侵权行为,防止他人对开源软件的不正当利用;另一方面能够有效保护授权人的利益,使他们保有继续创作的动力,促进源代码共享和知识的传播。

01

案情梳理

原告:济宁市罗盒网络科技有限公司

被告:福建风灵创景科技有限公司(以下简称福建风灵公司)

被告:北京风灵创景科技有限公司(以下简称北京风灵公司)

(福建风灵公司系被告北京风灵公司的全资子公司)

被告:深圳市腾讯计算机系统有限公司(以下简称腾讯公司)

原告济宁市罗盒网络科技有限公司独立开发“罗盒(VirtualApp)插件化框架虚拟引擎系统 V1.0”(简称 VirtualApp V1.0)。

  • VirtualApp于2016年7月7日在Github网站上传了VirtualApp的初始源代码,共计31097行。次日附加了LGPL 3.0协议,2016年9月10日,将LGPL 3.0协议变更为GPL 3.0协议。

  • 2017 年 10 月 29 日,原告公司在 VirtualApp 后续开源版本中删除“适用 GPL 3.0协议”的表述。

  • 2017 年 11 月 8 日,原告公司为 VirtualApp V1.0取得计算机软件著作权登记证书。据国家版权局颁布的计算机软件著作权登记证书记载,VirtualApp V1.0的著作权人为原告,开发完成日期为2015年2月28日、首次发表日期为2015年7月18日、权利取得方式为受让、权力范围为全部权利。

  • 2017年12月30日由原告开发者Lody提交的更新(对应Git码为8e6d9cd925af55b53a7e93046c469dd69676c38b)的CHINESE.md文件内载明“VirtualApp(中文名为罗盒)2017年8月份正式公司化运作,当您需要将VirtualApp用于商业用途时,请务必联系QQ1*****购买商业授权……VirtualApp源代码将于2017年12月31日停止更新”。

  • 2018年9月26日,原告委托广东鑫证司法鉴定所鉴定被诉侵权软件“点心桌面”App(V6.5.8)与原告涉案软件VirtualApp(2017年12月30日在GitHub网站上的开源版本)是否构成实质性相似。

鉴定意见载明:送检的“VirtualApp”源代码与“点心桌面”软件安装包反编译得到的源代码共有421个可比代码文件,其中有27个可比代码具有高度相似性,有78个可比代码具有一般相似性,有308个可比代码具有实质相似性,有8个可比代码不具有相似性。

另该鉴定意见的分析说明中载明:双方可比代码所在的目录结构相似,且双方对应目录中同时有“lody”目录,而“lody”为原告代码的开发者,在原告代码有多处的注释都表明(原告代码中均有注释“@authorLody”),而这种目录相似情况和上述代码相似程度在软件的独立开发过程中是不可能存在的。

因此原告向法院起诉。

02

法院裁定

广东省深圳市中级人民法院认为,本案系侵害计算机软件著作权纠纷,涉及开源软件的相关问题。根据双方诉辩意见及举证情况,本案争议焦点主要有四点。

焦点一:GPL 3.0协议的法律效力。

其一,GPL 3.0协议的内容具备合同特征,是一种民事法律行为。其二, GPL 3.0协议具有合同性质,可认定为授权人与用户间订立的著作权协议,属于我国《合同法》调整的范围。

根据GPL 3.0协议第8条“终止授权”的约定,授权人许可用户在遵守许可证规定的前提下行使某些权利,但用户必须承担相应的义务。若用户违反GPL 3.0协议的使用条件来复制、修改或传播受保护的作品,其通过GPL 3.0协议获得的授权将会自动终止。一旦用户违反了使用的前提条件,将导致GPL3.0协议在授权人与用户之间自动解除,用户基于协议获得的许可即时终止。用户实施的复制、修改、发布等行为,因失去权利来源而构成侵权。

焦点二:原告是否有权提起本案诉讼。

首先,现有证据可以证明原告系Github网站上开源软件VirtualApp的著作权人。其次,原告提起本案诉讼无需贡献者的同意或授权。“若开源项目的起诉维权需经全体贡献者一致同意或授权,实则导致维权行为无从提起。”最后,GPL 3.0协议仅限制授权人不得向用户主张任何专利权,而并未限制授权人对违反许可协议的用户主张著作权。因此,原告的诉讼行为并未违反GPL 3.0协议关于争议解决方式的约定。

综上所述,原告有权提起本案诉讼。

焦点三:被诉行为是否侵害原告的著作权。

首先,针对原告在VirtualApp后续开源版本中删除“适用GPL 3.0协议”的影响。根据GPL 3.0协议第4条、第5条的规定,只要后续版本中有使用先前开源版本中的源代码,并且先前版本使用了GPL 3.0协议,则后续版本也必然受GPL 3.0协议的约束。因此,VirtualApp后续开源版本仍然受GPL 3.0协议的约束。

其次,GPL 3.0协议并未限制用户进行商用,只是必须遵守开源的规定。原告虽在GitHub网站上声明禁止用户对VirtualApp开源代码进行商用,但根据GPL 3.0协议第7条、第10条的规定,附加条款适用的情形和内容是明确的,限制商用不在其列,授权人亦不可以对GPL 3.0协议所授或确认权利的行使施以进一步的限制。

最后,被诉“点心桌面”App(V6.5.8)应当遵循GPL 3.0协议向公众无偿开放源代码。被告福建风灵公司使用了附带GPL 3.0协议的开源代码,却拒不履行GPL 3.0协议规定的使用条件。根据GPL 3.0协议第8条自动终止授权的约定及《民法总则》第一百五十八条的规定,被告福建风灵公司通过该协议获得的授权已因解除条件的成就而自动终止。被告福建风灵公司对VirtualApp实施的复制、修改、发布等行为,因失去权利来源而构成侵权。

焦点四:若侵权成立,被告应承担的法律责任。

被告福建风灵公司作为“点心桌面”App(V6.5.8)的开发、运营和发布者,依法应承担停止侵害VirtualApp著作权的行为,对使用了VirtualApp的“点心桌面”软件立即停止提供下载、安装和运营服务。鉴于被告福建风灵公司系被告北京风灵公司的全资子公司的情形,因此原告指控两被告共同承担侵权责任。

被告腾讯公司对其“应用宝官网”上可能存在的侵权行为制定了相关规则、设置了投诉渠道,且对被诉软件作了及时下架处理。原告亦未对被告腾讯公司提出具体诉请。因此,被告腾讯公司无需承担法律责任。

关于赔偿问题,法院认为,开源软件大多都是免费的,但授权人付出的开发成本是必然存在的,按照侵权获利来承担赔偿责任更为公平合理。因此法院酌情确定赔偿数额为50万元。

03

判决结果

  • 被告福建风灵创景科技有限公司、被告北京风灵创景科技有限公司立即停止侵害原告济宁市罗盒网络科技有限公司VirtualApp著作权的行为,即对使用了VirtualApp开源代码的“点心桌面”软件立即停止提供下载、安装和运营服务;

  • 被告福建风灵创景科技有限公司、被告北京风灵创景科技有限公司应于本判决生效之日起十日内赔偿原告济宁市罗盒网络科技有限公司经济损失及维权合理费用共计50万元;

  • 驳回原告济宁市罗盒网络科技有限公司的其他诉讼请求。

19b537c275fb9cc9ce9313cf609865f3.gif

0125ed20b80a26d7a3c3134af21b26f9.gif

我知道你在看

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

违反 GPL 协议赔偿 50 万,国内首例! 的相关文章

  • 没有这样的模块“Ensembles”错误 - 导入 Objective-C 框架以在 swift 项目中使用

    我将 Ensembles 添加到我的 Swift 项目 在这里找到https github com drewmccormack ensembles https github com drewmccormack ensembles 我没能在我
  • 由于不存在大文件而导致 git Push 错误

    当尝试推送到 git 时 我不断得到相同的结果 Counting objects 78 done Delta compression using up to 4 threads Compressing objects 100 67 67 d
  • 将 NSDecimalNumber 转换为 NSString

    我正在从如下所示的对象中检索密钥 po obj TypeID 3 TypeName Asset 键值的检索方式如下 NSString typeId NSString obj objectForKey TypeID typeId 不是 NSS
  • 在 iPhone 上使用 Xcode Auto Layout 处理不同的图像尺寸

    通过纵向 iPhone 的自动布局 我不希望 iPhone 6 上的游戏角色的 UIImageView 尺寸与 iPhone 4S 中的完全相同 4S 的角色需要更小一些 否则看起来会太大 使用自动布局如何更改 iPhone 之间的图像尺寸
  • 如何在Mac上启动Syslogd服务器以接受远程日志记录消息?

    有人知道如何在 Mac 上启动 Syslogd 服务器来接受远程日志记录消息吗 我启动了 Syslogd 但似乎它不接受远程消息 如果我执行 netstat an 看起来 udp 端口 514 正在侦听 但是 如果我使用 nmap 从笔记本
  • iOS App Today 扩展未上传到物理设备

    我正在为我的应用程序创建一个今日小部件http budgt ch http budgt ch因为一些用户要求快速访问关键功能 初步 扩展在 iOS 模拟器上运行良好 安装如下 1 安装最新的容器应用程序 2 安装以 今天 为容器的扩展 但是
  • 进入/退出编辑模式时重绘 UITableViewCell

    我有一个表格视图 其中根据表格是否正在编辑 单元格的构建方式有所不同 具体来说 处于编辑模式时选择样式为无 非编辑模式时选择样式为蓝色 当我从一个单元转换到另一个单元时 我注意到某些单元格没有更新 快速的日志记录告诉我 即使单元格的外观发生
  • 恢复从未付款过的用户的应用内购买

    我正在尝试在我的应用程序中测试应用程序内购买 当我与购买了应用程序内购买的测试用户恢复应用程序内购买时 一切正常 但是当我尝试与用户恢复应用内购买时didn t在我期望框架调用以下方法之前进行应用内购买 paymentQueue resto
  • CFBundle可执行文件丢失或无效

    尝试在 iOS 模拟器中运行我的项目时 我收到启动代码错误 0 检查 CoreSimulator log 中的控制台日志 我发现了 app 可执行文件 其 Info plist 中缺少或无效 CFBundleExecutable 我不知道如
  • UIPickerView - 对多行行使用自定义视图 - 需要布局建议

    我有一个 UIPickerView 它将为用户显示项目列表 我希望每个项目都显示为多行文本 每行使用不同的字体大小 一个粗略的模型如下所示 这将允许显示比默认 UIPickerView 的单行所能容纳的更多文本 bdesham 指出我在 U
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • 已执行最大重试次数。上传ipa问题

    我使用 build phonegap com 构建了 ipa 我试图将此 ipa 卸载到商店 但收到此错误 我解决了这个问题 安装xCode 4 并使用该xCode 4的版本应用程序加载器 这个问题得到解决
  • 将 UITableViewDataSource 与具有子视图的自定义单元格结合使用

    在 UITableView 中使用自定义单元格时 我遇到了奇怪的表格重叠 Problem 向下滚动 最后两行上面画有顶部两行 向上滚动 前两行上面画有下面两行 这是 UITableViewDataSource 的代码 func tableV
  • Git 在推送代码时返回错误 403 [重复]

    这个问题在这里已经有答案了 一切都工作正常 直到我创建了一个新的 GitHub 帐户 当我尝试使用新帐户第一次将代码推送到 github 服务器时 出现以下错误 remote Permission to NEW USER NEW REPO
  • 故事板 - 不支持的配置 8 个冲突的约束

    我正在使用故事板自动布局 我今天在编写警告消息时注意到 MainStoryboard iphone storyboard Unsupported Configuration 8 conflicting constraints 单击警告会进入
  • 允许的 APNS 持续连接数量是多少?

    我正在尝试编写服务器端代码来为我的应用程序发送推送通知 根据 Apple 的建议 我计划保留连接并根据需要发送推送通知 Apple 还允许打开和保留多个并行连接以发送推送通知 您可以与同一网关或多个网关实例建立多个并行连接 为此 我想维护一
  • 如何在 iOS 中查找蓝牙音频设备

    好的 我正在开发一个有趣的项目 该项目有一个障碍 我需要为我的 iOS 应用程序启用蓝牙音频支持 我遇到的障碍是我什至无法开始获取已连接的蓝牙音频设备的列表 即使我的 iPhone 5S 可以识别我的耳机 大约 3 4 岁的耳机 LG HB
  • UITextView 动画更改框架不会动画文本重新分配

    我有一个 UITextView 我试图在用户点击按钮时为框架的变化设置动画 基本上 文本视图会变大以适应屏幕 以便可以显示更多文本 然后当用户再次点击按钮时 它会缩小到原始框架 我使用块执行动画 如下所示 if isDisplayingDe
  • UITableview 中的水平和垂直滚动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I want to make a lineup for a festival You can see what I want to a
  • 将第 3 方库 ZXing 导入 Xcode

    我尝试了多种方法将第 3 方库 ZXing 导入我的 iOS 应用程序 但所有方法都很痛苦 或者根本不起作用 如果有人可以建议我做错了什么 或者提出导入 ZXing 等库的更好方法 我将非常感激 一定比这个容易 这就是我所做的 结果是 My

随机推荐

  • LeetCode 剑指 Offer 10- I. 斐波那契数列

    LeetCode 剑指 Offer 10 I 斐波那契数列 题目描述 写一个函数 输入 n 求斐波那契 Fibonacci 数列的第 n 项 即 F N 斐波那契数列的定义如下 F 0 0 F 1 1 F N F N 1 F N 2 其中
  • 用户画像统计标签(年龄段,消费周期,常用支付方式)

    年龄段 import bean HBaseMeta import org apache spark SparkContext import org apache spark sql 关联 不仅仅是一个相同的 可以 一个与两个之间 objec
  • 11.6.1:综合技巧练习 - 配置和测试网络

    实验ip分配如下 学习目标 创建 测试并配置整个实验网络 综合运用整套课程中学到的技巧 分析请求网页所涉及的事件 DNS ARP HTTP TCP IP Ethernet HDLC 分析在跟踪到 Web 服务器的路由时所涉及的事件 DNS
  • Nokogiri的使用 抓取csdn博客內容 rails

    Nokogiri 锯 使使用 Ruby 中的 XML 和 HTML 变得轻松而轻松 提供了一个明智的 易于理解的 API 阅读 编写 修改 和 查询 文档 它依赖于 libxml2 CRuby 和 xerces JRuby 等原生解析器 速
  • 光流法( Optical Flow Method)

    在计算机视觉中 光流法即可用于运动目标检测 也可以用于目标跟踪 本文主要介绍光流法在运动目标检测和目标跟踪中的区别与联系 1 光流与光流场 光流的概念最初是由 Gibson 于 1950 年首先提出来的 当人的眼睛观察运动物体时 物体的景象
  • 没有计算机网络地址怎么办,教大家电脑没有ip地址mac地址怎么办

    近日有关于电脑没有ip地址mac地址怎么办的问题受到了很多网友们的关注 大多数网友都想要知道电脑没有ip地址mac地址怎么办的具体情况 那么关于到电脑没有ip地址mac地址怎么办的相关信息 小编也是在网上进行了一系列的信息 那么接下来就由小
  • C#Replace

    在C 的字符串操作过程中 有时候需要替换字符串中的某个子字符串 此时就可以使用到字符串类自带的Replace方法来实现 Replace方法将查找到所有符合被替换的子字符串 然后将之全部替换为目标字符串 Replace方法有2个方法重载实现
  • 奇偶排序,双调排序,双调查找

    奇偶排序 奇偶排序是排序方法的一种 复杂度为O n 2 好处是可以利用处理器的并行 第一遍扫描a i a i 1 i为奇数 如果这两个次序不正确 就交换它们的次序 第二遍扫描偶数 双调排序 所谓双调序列 Bitonic Sequence 是
  • matlab 获取矩阵大小、行数、列数、元素总个数——size()/length()/numel()

    1 size size 获取数组的行数和列数 s size A 当只有一个输出参数时 返回一个行向量 该行向量的第一个元素时数组的行数 第二个元素是数组的列数 r c size A 当有两个输出参数时 size函数将数组的行数返回到第一个输
  • docker容器内开启22 ssh_Docker 添加容器SSH服务

    很多时候我们需要登陆到容器内部操作 此时我们就需要开启容器的SSH支持了 下面的小例子将具体介绍三种分配IP地址的方法 分别是pipworl分配 commit分配 Docker分配等 该系列文章只是本人的学习笔记 文章中的文字描述是 Lin
  • java_MD5加密源码

    package com lt util import java io UnsupportedEncodingException import java security MessageDigest import java security
  • 使用Kinect2作为Oculus游戏应用的输入设备

    注 文章写于2015年8月 眼下VR游戏Demo已经完结 所以把上一次预研的一些经验分享出来 希望对大家有所帮助 背景 初接触Oculus时 从网上下载了一大堆的Demo来体验 可是 操作体验大都比較差 特别是FPS类 这也让我们意识到 对
  • BMP转JPG(法二)RGB数据经过YUV交织

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 源码下载地址 http download csdn net detail chenyujing1234 4441643 编译平台 VS20
  • ORACLE not available如何解决

    出现Oracle不可用可以一般情况下有两种办法解决 1 先关闭数据库 在打开数据库 SQL gt shutdown immediate SQL gt startup open 先用这种方式看看问题解决了没有 如果没有再用第二种办法试试 2
  • svn服务器 系统重装恢复吗,请教一下好不好把svn版本库还原到以前的版本?

    1 Linux系统安装svn服务 yuminstall subversion2 新建一个目录用于存储SVN所有文件 mkdir p cbroot svnserver cbweb3 在上面创建的文件夹中为项目project 1 创建一个版本仓
  • 操作系统 虚拟存储器的概念

    虚拟存储器 程序装入内存时可能会出现如下问题 程序太大 要求的空间超出了内存总容量 有大量作业要求运行 但内存不能容下所有作业 常规存储器管理方式的特征 一次性 要求作业全部装入内存才能运行 驻留性 许多不用或暂时不用的程序占用了大量内存空
  • linux命令strings

    linux命令strings 其man信息如下 strings 1 GNU Development Tools strings 1 NAME strings 显示文件中的可打印字符 总览 SYNOPSIS strings a all f p
  • 二维线段树【模板——给出对应注释】

    闲话少说 直接看注释反而会更容易读懂这段二维线段树的模板 include
  • elasticsearch启动报错:master not discovered yet

    通过命令启动 bin elasticsearch E node name hotnode E cluster name geektime E path data hot data E node attr my node type hot 报
  • 违反 GPL 协议赔偿 50 万,国内首例!

    整理 祝涛 出品 CSDN ID CSDNnews 近日 一起关于GPL版权纠纷案裁判文书公示 在一审中 法院指出GPL 3 0协议是一种民事法律行为 具有合同性质 可认定为授权人与用户间订立的著作权协议 属于我国 合同法 调整的范围 来源