写点什么

世界顶级开源象棋引擎被“剽窃”,忍无可忍愤而起诉

  • 2021-07-26
  • 本文字数:1346 字

    阅读完需:约 4 分钟

世界顶级开源象棋引擎被“剽窃”,忍无可忍愤而起诉

近日,国际知名开源象棋引擎 Stockfish 一纸诉讼将商业国际象棋软件ChessBase 告上法庭,指控其多次违反 GPL 许可证。

Stockfish 是谁?


据维基百科介绍,Stockfish 是一款免费且开源的国际象棋引擎,可用于各种桌面和移动平台,于 2004 年发布。



它是世界上最强大的 CPU 国际象棋引擎,并且在大多数国际象棋引擎评级列表中一直排名第一或位于前列。在多届 Top Chess Engine Championship 中,Stockfish 成绩赫赫,经常夺得冠军或亚军名次。比如,它去年 9 月发布的 Stockfish 12 开始支持 NNUE,即可以在 CPU 上快速地运行神经网络。此特性显著改进了 Stockfish,恢复了其作为现有最强大的国际象棋引擎的地位。

开源产品被剽窃


据悉,今年早些时候,Stockfish 发现ChessBase 剽窃了自己的开源产品。2021 年 2 月,ChessBase 发布 Fat Fritz 2.0,售价 99.9 欧元。它基于 Stockfish 修改了几行代码(引擎名称、作者列表和部分参数),增加了一套自称是专有的 NNUE 算法。经过包装便摇身一变,成为自己的原创产品,并且没有遵守开源协议对相应修改了的代码进行开源。


Stockfish 在官方博客文章中表示,“我们发现,ChessBase 向客户隐瞒了其产品当中直接使用 Stockfish 核心技术成果的真实情况。事实上,大多数客户根本不清楚自己付费购买的 Fat Fritz 2 或 Huodini 6 就是两款 Stockfish 的‘魔改’版本。”


Stockfish 称,“ChessBase 一再违反 GPL 核心理念,未能履行向用户告知相关权利的义务。看到许可证中明确列出的注明相应来源、免版税复制 / 修改及分发等权利遭到无情践踏,我们深感痛心。”


据悉,Stockfish 源代码使用的许可证是 GPLv3。根据该协议,如果你发行一个自由程序的副本,无论是免费的还是收费的,你必须将你从上游收到的自由,向下游传递下去。你必须确保他们也可以收到或者找到源代码。你必须向他们展示同样的授权条款,让他们知道他们的权利。


简言之,根据 GPLv3 的要求,ChessBase 在发行软件时需要公开修改的源代码。但是,它并未这样做。

告上法庭


据悉,在一位德国版权法律师的支持下,Stockfish 向法院递交了 GPL 侵权诉讼。在经历长达四个月的漫长诉讼后,Stockfish 取得初步胜利。


ChessBase 的 Fat Fritz 2 DVD 被全面召回、Houdini 6 也遭停售下架。


但是,双方仍未能在庭外和解方面达成共识。


Stockfish 称,“由于 ChessBase 屡次违反许可要求,Stockfish 各主要开发人员决定永久终止向 ChessBase 提供 GPL 许可证。然而,ChessBase 选择忽略这一基本事实,仍然冥顽不灵、继续以原样或经过修改的形式将 Stockfish 纳入其产品当中。因此,为了强制终止授权许可,我们决定正式提起诉讼。”


一直以来,开源领域的剽窃事件层出不穷。这些剽窃事件大致分为两类:


第一类,开发者开源后的软件被他人“魔改”,摇身一变成为自己的开源项目,或者被他人包装成商业产品拿去售卖。


第二类,开源软件创意被剽窃,他人或其他组织推出非常相似的同类型软件。比如,InfoQ 曾报道过,一名开发者用两年的业余时间开发并维护的一个开源项目 AppGet,它被微软剽窃,最终该开源项目被迫终结。

写在最后


在开源行业,如果说开源精神和开源文化是基础,那么以 GPL 许可证为代表的开源协议则是一种保障。一旦这个行业的参与者不遵守规则,那么开源贡献者的利益则势必受损。这显然不利于开源行业的长久发展。

2021-07-26 17:043202
用户头像
万佳 前InfoQ编辑

发布了 677 篇内容, 共 364.0 次阅读, 收获喜欢 1802 次。

关注

评论

发布
暂无评论
发现更多内容

Tekton 的工作原理

张晓辉

Kubernetes cicd 云原生

除了直接看余额,谁更有钱还能怎么比(一)

石君

零知识证明 多方计算 同态加密

RocketMQ - 什么是RocketMQ

Java收录阁

RocketMQ

Mysql增量更新-ON DUPLICATE KEY UPDATE

BerryMew

MySQL 增量更新 ON DUPLICATE KEY UPDATE

Go: Trace包探秘

陈思敏捷

原理 Go 语言

利与弊-传统框架要不要部署在Serverless架构上

刘宇

Serverless Web

JUC整理笔记一之细说Unsafe

JFound

Java

圆圈正义 - 读后感

石云升

读书笔记 法律 公平 现实

我的编程之路 -5(停滞)

顿晓

网络编程 操作系统 编程之路 停滞 三年

你是个伪工作者么?

池建强

个人成长 伪工作者

谈谈控制感(8):元控制感

史方远

职场 心理 成长

《零基础学 Java》 FAQ 之 10-Scanner里nextInt的小坑

臧萌

Java

区块链2.0--以太坊概述

皮卡丘的猫

new() 和 make的区别

陈思敏捷

源码 源码分析 Go 语言

prometheus中honor_labels配置项的源码分析

陈思敏捷

Prometheus Go 语言

《零基础学 Java》 FAQ 之 11-为什么构造方法中调用重载的构造方法必须得是在第一行

臧萌

k8s上运行我们的springboot服务之——cloud gateway

柠檬

k8s Spring Cloud

Flask-SQLAlchemy 多表对单模型

Leetao

Python flask 编程语言 flask-sqlalchemy

《零基础学 Java》 FAQ 之 12-理解引用

臧萌

Java

python实现·十大排序算法之插入排序(Insertion Sort)

南风以南

Python 排序算法 插入排序

游戏夜读 | 怎么让游戏跑起来?

game1night

Go: g0, 特殊的goroutine

陈思敏捷

原理 Go 语言

Go: 应该使用指针还是结构体副本?

陈思敏捷

struct 原理 pointer Go 语言

Java环境搭建

编号94530

Java java8 Java环境 环境安装 jdk安装

python实现·十大排序算法之快速排序(Quick Sort)

南风以南

Python 排序算法 快速排序

云直播平台的选型与使用

音视频专家-李超

2020 年 5 月 23 日 Java 集合专题

瑞克与莫迪

Java

我是如何拿下PMP认证和系统架构设计师考试的?

Nick

看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了

苹果看辽宁体育

https

其实你就是我羡慕的别人

小天同学

个人成长 感悟 日常思考

工作=投资=创业?

二鱼先生

个人成长 工作思路 工作方式 创业心态 创业者

世界顶级开源象棋引擎被“剽窃”,忍无可忍愤而起诉_开源_万佳_InfoQ精选文章