写点什么

开源还能造假?Neo4j 状告 3 家公司虚假宣传开源,法院判定胜诉

  • 2022-03-23
  • 本文字数:2920 字

    阅读完需:约 10 分钟

开源还能造假?Neo4j 状告3家公司虚假宣传开源,法院判定胜诉

 去年,Neo4j 和 Graph Foundation 签订了保密和解协议,Graph Foundation 同意不再宣称其 ONgDB 是 Neo4j EE(Neo4j 企业版)的“100%免费和开源版本”。近期,法院也对 Neo4j 起诉的另外两家企业——PureThink 和 iGov,做出了类似的裁决。

 

Neo4j 起诉三家公司的原因是,Graph Foundation、PureThink 和 iGov 都将 ONgDB 作为 Neo4j EE 的“免费和开源”版本提供服务并做广告宣传。

 

发生了什么?

 

Neo4j 是一款由 Neo4j 公司开发的高性能 NoSQL 图形数据库。ONgDB 则是 Graph Foundation 以开源方式运营的项目。ONgDB 自 Neo4j EE(Neo4j 企业版)分叉而来,其初始版本的源代码来自 Neo4j EE 代码库完全闭源之前的代码。

 

2018 年 5 月,Neo4j EE 放弃了 GNU Affero 通用公共许可证(AGPL),采用了一个新的许可证。该许可证包含了 AGPLv3 中的条款和 Commons Clause 许可证中的额外限制,被法院称成为“Neo4j 瑞士软件许可证”。这个新的许可证禁止非付费用户转售代码或提供一些支持服务,不在 OSI 认定的开源许可证列表中。2018 年 11 月,Neo4j 公司以仅商业许可的方式发布了 Neo4j EE 3.5 版本。

 

本来开源分叉是很常见的,但这件事情的问题在于,ONgDB 及其公司一直宣称自己是开源的 Neo4j EE,造成很多混淆。目前 ONgDB 已经完全改版,弃用了所有与 Neo4j 相关的商标信息。

 

目前,该组织停止了对 ONgDB 版本 3.4、3.5 和 3.6 的支持,并发布了 AGPLv3 许可的 Neo4j EE 版本 3.4.0.rc02 的分支 ONgDB 1.0,用户商用时需要遵守对应的开源协议,而 ONgDB 的社区版开源协议为 GPLv3。

 

而 PureThink 是一家成立于 2002 年的软件开发公司,主要服务对象为美国政府部门。根据裁决协议,在签署的 Neo4j EE 购买协议中,双方约定 Neo4j 商标仅用于 Neo4j EE 及其相关支持服务营销和转售商业许可,以换取转售许可的共享收入。

 

但是,PureThink 开发了 Neo4j 的“政府版”并意图销售给美国国税局(IRS)。PureThink 发布版本中仅有 AGPLv3 许可证。在被要求查看原版之后,PureThink 表示 IRS 可以使用 Neo4j EE 的开源版本,并向 PureThink 支付咨询费用。Neo4j 与 PureThink 合约到期后,PureThink 和 iGov 继续营销该“政府版”,并宣扬 ONgDB 是 Neo4j EE 的免费开源版本。

 

去年 5 月,法官审理了针对 PureThink 的诉讼,iGov 同意了 Neo4j 的部分简易判决动议,禁止被告侵犯原告的 Neo4j 商标,并不得将 ONgDB “作为 Neo4j EE 的免费开源替代品……”

 

之后,被告提出上诉,美国第九巡回上诉法院在今年 2 月确认了下级法院的裁决。法院认为,PureThink 公司删除 Commons Clause 这一行为是不合理的,所以其在广告中声称 ONgDB 软件是开源的,可以被认定为虚假广告。

 

法院最终判决,禁止 PureThink 宣传、推广或者提及“ONgDB 是一个免费和开源的源代码”、“可直接替换相同版本的 Neo4j 企业版”等任何可能误导消费者的声明。

 

真假开源之争

 

3 月 17 日,OSI 发文庆祝法院的裁决。该组织在文章中评论道:“如果明明不是开源,就不要再说自己是开源了”,并表示“法院只是确认了我们早已知道的事实——开源是一个艺术术语,指的是在特定类型的许可下获得许可的软件,而该许可是否经过 OSI 批准则是用户采用的一个至关重要的因素。”

 

独立技术律师Kyle E. Mitchell反驳了 OSI 的文章,称其是“自私的、误导性的和错误的”,法院并未就“开源”的含义做出任何法律裁决。他指出,整个诉讼给出的最关键信号是法院裁定 PureThink 无权从文件中删除 Commons Clause。

 

Commons Clause 作为限制许可软件销售的附加条件,在 2018 年初由多家开源公司共同创建,并由 FOSSA 公开贡献,其初衷就是限制云厂商使用开源代码提供商业服务,但不回馈社区的行为。

 

Commons Clause 当初发布时,就在开源社区引发了强烈反响。支持者认为这是开源许可道路上合理而积极的演变,让开源公司能够在投入开源项目的同时成功运营业务。而反对者认为这违背了开源精神。更重要的是,许多公司为保证自己符合开源理念,只使用获得 OSI 批准的许可证许可的开源软件。在增加了 Commons Clause 之后,此类项目可能面临威胁。

 

当时,Debian、Mozilla 和 The Document Foundation 等支持的 OSI 就发文表示:“开源”如果没有单一的、标准的定义,那么我们所知道的软件开发则是不可能的。任何人都能定义开源就会没有信任,没有信任就没有社区、没有协作,也没有创新。

 

OSI 在近日的发文中也表示,“通过添加非自由的 Commons Clause 创建一个不同的许可证,该软件就不能被描述为开源,否则就是非法的虚假广告。”但 Mitchell 认为,这是对判决的误读。

 

Mitchell 指出,法院将最初的 Neo4j 版本视为开源,在 Neo4j 添加了 Commons Clause 后,仍然被法院认为是“开源”的:

 

2018 年 5 月,原告发布了 Neo4j EE 3.4 版,他们继续在开源许可下提供;但是他们用了更严格的许可取代 AGPL,其中包括 AGPLv3 中的条款和 Commons Clause 提供的附加限制。

 

只有在 Neo4j 独家获得商业许可时,法院认为,这才标志着开源发布的结束:

 

2018 年 11 月,原告仅在商业许可下发布了 Neo4j EE 3.5 版。从那时起,原告不再在开源基础上提供 Neo4j EE。

 

“造成问题的原因是取消了 Commons Clause,双方的律师也都是围绕这点争论的。”Mitchell 表示。

 

事实上,Redis Labs 曾短暂地使用过 Commons Clause,但因为这项条款下的软件是否开源问题而放弃。

 

2018 年 8 月,Redis Labs 宣布决定将 Commons Clause 作为附加条款添加到其针对某些附加模块的自由开源许可证中。该条款使源代码具有可用性,但使用者无法“出售”模块,其中包括将它们作为商业服务来提供。

 

但半年后,Redis Labs 就宣布放弃 Commons Clause ,转而采用了新的可用源许可 RSAL。“它(Commons Clause)不起作用。对于这些模块是否是开源的,人们一直很困惑。它们不是开源的。” Redis Labs 首席营销官 Manish Gupta 解释道。

 

谁定义“开源”?

 

“我喜欢自由软件,虽然现在还不清楚是哪种自由。”那什么是开源、谁来定义开源呢?

 

OSI 虽然被公认为开源“官方”组织,但也有开发者不认为该由 OSI 来定义开源。“我不认为你、开源倡议组织 (OSI) 或其他任何人能够单独给真正的开源下定义。”开发者Martin Tournoij曾在自己的个人博客中表示,“我不反对开源定义(OSD),但以它来评判所有对开源的使用是行不通的。纠正数以百万计的人‘开源用错了’,并不是完成任何有意义的事情的好策略——这并不能促进开源的使用。”

 

“不同群体之间对‘什么构成开源’存在相当大的分歧,所以在没有前提下声称单独的某一方可以定义和仲裁开源,这对我来说似乎很疯狂。”有开发者说道,“或者您已经忘记了自己与社区之间的差异,就像是‘如果不与我们站在一起,你就是反对开源’。无论如何,都不会让我将 OSI 作为指南针。不确定是谁选举他们成为开源之王。”

 

此外,还有开发者指出,一些公司仅仅因为他们的源代码在 GitHub 上就在推广时将其产品称为“开源”,即使许可证与任何专有许可证一样具有限制性。

 

“开源如果被滥用,则可能是欺诈性的。”开源软件发起人之一 Bruce Perens 评价道。如今,开源已经成为科技企业发展的标配,但也伴随着一些虚假开源宣传的事情发生。建造健康、可持续的开源生态仍任重而道远。


2022-03-23 18:044065

评论

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

微服务为什么需要混沌工程

穿过生命散发芬芳

混沌工程 9月月更

中国智能网联汽车信息安全分析2022案例征集

易观分析

汽车 案例征集 智联网

iview提供的控件tree

zxhtom

9月月更

线上问题如何复盘

老张

线上故障 问题复盘

分享一套自己制作的Nestjs实战教程

pincman

node.js typescript nestjs

[教你做小游戏] 只用几行原生JS,写一个函数,播放音效、播放BGM、切换BGM

HullQin

CSS JavaScript html 前端 9月月更

学 Go,最常用的技能是什么?打日志

梦想橡皮擦

Python 9月月更

金融网络安全体系建设

阿泽🧸

9月月更 安全体系建设

【数独 2】候选数法解数独谜题-挖掘更深的信息-C++实现

清风莫追

9月月更

leetcode 21. Merge Two Sorted Lists 合并两个有序链表(简单)

okokabcd

LeetCode 数据结构与算法

Java进阶(二)文件读操作

No Silver Bullet

Java 9月月更 文件读操作

上车上车,快速搞懂Redis 过期策略和内存淘汰策略

知识浅谈

redis 过期策略 9月月更

k8s自定义controller三部曲之二:自动生成代码

程序员欣宸

Kubernetes k8s 9月月更

Ribbon源码分析之@LoadBalanced与LoadBalancerClient

急需上岸的小谢

9月月更

高颜值!程序员专属浏览器

Jackpop

二维容器进行图的DFS搜索和BFS搜索-C++STL模板

清风莫追

c++ 算法 9月日更 9月月更

计网复习一,计算机网络原理概述

前端小刘不怕牛牛

计算机网络 计算机基础 HTTP 9月月更

为什么这么多品牌迫切想要改变Logo?

Jackpop

一名中年码农转型成远程工作及远程全栈教学创业者的故事

pincman

node.js typescript react.js 远程工作 nestjs

什么是 SAP Business Function

汪子熙

SAP abap Netweaver 业务流程驱动 9月月更

【Web前端】怎样用记事本写一个简单的网页-html

清风莫追

9月月更

易观之星 | “2022年度用户推荐数字应用”投票通道开启

易观分析

易观

SpringCloud 配置中心(Nacos)的简单使用

nacos SpringCloud 配置中心 9月月更

Java进阶(三)Java安全通信:HTTPS与SSL应用配置

No Silver Bullet

https SSL证书 9月月更

2022-09-02:以下go语言代码输出什么?A:9;B:11;C:编译错误;D:不确定

福大大架构师每日一题

golang 福大大 选择题

云原生(三十四) | Kubernetes篇之平台存储系统实战

Lansonli

云原生 9月月更

如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?

PivotalCloud

易观千帆 | 2022年7月宁波市手机银行应用活跃人数榜单

易观分析

手机银行 宁波

C++学习------cctype头文件的作用与源码学习

桑榆

c++ 9月月更

开源IM项目OpenIM单聊及万人群压测报告

Geek_1ef48b

远程TS全栈学习+远程全职工作+远程高质量外包=3R教室

pincman

node.js typescript react.js 远程工作 nestjs

开源还能造假?Neo4j 状告3家公司虚假宣传开源,法院判定胜诉_开源_褚杏娟_InfoQ精选文章