引言

2018 年,因为使用他人「免费」提供的源代码,国内一家软件公司被告上了法庭。

在数字天堂(北京)网络技术有限公司(「数字天堂公司」)诉柚子(北京)科技有限公司、柚子(北京)移动技术有限公司(「柚子公司」)侵犯计算机软件著作权纠纷一案中,原告数字天堂公司主张:被告柚子公司的 APICloud 软件抄袭了其按照 GPL 许可证分发的 HBuilder 开发工具软件源代码,侵犯了其著作权,要求赔礼道歉、消除影响并赔偿损失。

经北京知识产权法院初审、北京高级人民法院二审,柚子公司最终被判停止侵权并赔偿 71 万元。

如果缺少背景知识,这个被称为「中国 GPL 诉讼第一案」的重要案件可能有些不好理解。根据法院的认定,「原告的 HBuilder 软件是 GPL 协议下的开源软件分支。根据 GPL 协议的规定,任何第三方有权在 GPL 协议授权下使用其代码并构建衍生软件产品 […] 原被告双方的涉案软件均为免费软件 [对应英文术语为 free software,通译为「自由软件」,但原文如此]。」

既然是「任何第三方有权使用」的「免费」软件,为什么会侵权又要赔偿呢?

弄清楚这个问题不仅仅具有法律上、学术上的意义。俗话说「不要重复造轮子」,对于很多软件开发项目而言,开源软件正是那些起着地基作用的「轮子」。因此,如何合规利用开源软件,了解开源许可证的内容已成为各大互联网公司的重要课题。

过去,对开源软件合规问题的讨论在美国相对较多,各类判例也相对丰富;「中国 GPL 诉讼第一案」则让国内公司也意识到了开源问题的重要性。实际上,中国互联网企业的崛起有赖于开源;GitHub 预测到 2030 年中国开发者将成为全球最大的开源群体。新一代的操作系统、分布式数据库、人工智能框架都通过开源项目快速进步。如 360 的董事长周鸿祎所言,如果没有开源软件,就没有中国互联网的飞速发展。

因此,无论你是准备在开发项目中使用开源代码,还是计划将自己的软件以开源方式,抑或只是下载使用开源软件的普通用户,都值得花些时间认真了解开源软件及其许可证。

开源软件与开源许可证

开源软件

顾名思义,从最简单的意义上说,「开源软件」就是开放源代码的软件;换言之,是人们能够免费且不受限制地使用、再开发、再发布的软件。

但从狭义上说,只有符合开放源代码促进会(Open Source Initiative)定义的软件才是开源软件。该定义提出了十个特征,必须全部符合才能认定为开源软件;除了包括可自由再分发、提供源代码、允许衍生作品这些应有之义,还要求不得过度限制原始代码的修改,不得歧视特定人、群体或用途,必须「技术中立」等。

在这样的标准下,一些看似自由使用的软件就「不够格」称为开源软件了。例如,知名的全文搜索引擎 Elasticsearch 原来使用 Apache 2.0 授权,是货真价实的开源软件。但面对 AWS 等云服务厂商使用 Elasticsearch 作营利用途、却又不反向回馈其所做改进的现状,Elasticsearch 在 2021 年 1 月选择改用SSPL(Server Side Public License、服务器端公共许可证)和 Elastic License 两种许可证并行。

其中,SSPL 的条款基本与常见开源许可证 GPLv3 一致,但要求「如果将程序的功能或修改后的版本作为服务提供给第三方,那么必须免费公开提供服务源代码」;换言之,如果你用了我的程序提供服务,就要大方地把整个配方(包括前后台)都交出来。这违背了 OSI 对开源软件定义的第 9 条规定(许可证不能限制其它的软件),因此不能算「开源」。

另一方面,Elastic License 虽然不限制其他软件,但要求不能向第三方提供主机或托管服务。这违反了 OSI 定义的第 6 条(不得限制使用领域),因此也不算严格意义上的「开源」。

开源许可证