报道称1,2022年3月15日,美国网络公司F5的CEO(FRANÇOIS LOCOH-DONOU)在F5官网博客上发表《Standing Firm in Support of the People of Ukraine》2一文,宣布F5停止在俄罗斯的所有销售活动,与此同时,移除俄罗斯对 F5 网络的访问权限,并停止来自俄罗斯的对 Nginx 开源项目的贡献。
F5 CEO的文章(首页部分截图)
Nginx 最早是俄罗斯人 Igor 于2004年10月4日正式对外开源发布的。2011 年,Igor 与联合创始人 Maxim Konovalov 和 Andrew Alexeev 成立了 NGINX 公司,围绕 NGINX 提供商业化服务。2019年,F5宣布以6.7亿美元收购了 NGINX公司。F5这么做其实并不稀奇。因为美国公司站队的比比皆是。2022年3月2日,Github 官方发文称,会遵守美国政府的相关规定,限制俄罗斯通过 Github 获得军事技术能力。Node.js 官网在其首页加入了声援乌克兰的标语;知名前端框架 React 也在官网中加入了声援乌克兰的横幅;俄罗斯「国民操作系统」Sailfish OS 的制造商 Jolla 公司正试图切断与俄罗斯的联系。3
F5到底说了什么?
为了不冤枉F5,我专门去看了那篇文章。
那篇博文中,和这个决定最直接相关的部分是这样写的:We have suspended all sales activity in Russia and are routing customer support cases through other locations. We have removed F5 network access and halted contributions to NGINX open-source projects in Russia; this work will continue in other global locations. No code, either commercial or open source, is located in Russia. We remain dedicated to the development of NGINX and growing its community, as well as protecting the wellbeing of our people in Russia.我翻译如下:我们已暂停在俄罗斯的所有销售活动,并将客户支持CASE转至其他地点(注1)。我们已关闭了来自俄罗斯对F5网络的访问权限(注2)和对NGINX开源软件项目的贡献(注3);但全球其他地点并不受影响。我们产品的商业代码和开源代码,都将不在俄罗斯本地(研发中心)继续开发。我们仍然致力于 NGINX 的发展和社区的发展,致力于保护我们在俄罗斯员工的福祉。笔者注:注1:F5有研发中心在俄罗斯,全球用户的CASE原本可能会开到俄罗斯(根据时区等因素)。现在,那些可能分配给俄罗斯研发中心的CASE将会分派给其他地点。 注2:停止F5网络访问权限,指的是F5俄罗斯研发中心不再能访问总部的内网。 注3:从上下文看,更像是关闭了F5在俄罗斯的NGINX项目团队对项目的贡献。反复翻译和请教相关知情人士后,我恍然大悟,原来,F5 CEO是说,他们在俄罗斯的销售、研发(包括 Nginx )、售后支持等工作都不再继续开展,这个文章中多次出现的 in Russia,指的是F5 in Russia,并非字面上的整个 Russia 。 所以,F5 CEO想说的是,F5在俄罗斯的员工不再能访问其内网也不再能贡献 Nginx 。但让大家误解为:F5不再接受来自俄罗斯(整个国度的人民)的贡献。所以说,不管中文还是英文,任何书写,都应该准确、清晰、无误,而不是写那些容易让人误解的、含含糊糊的话。如果我没有分析错误的话,这次F5被吐槽,估计更多要归咎于其CEO的文字能力。另:Nginx的代码库并不位于 Github(在 Github 上只有一个定期更新的只读镜像库),其代码库位于:http://hg.nginx.org/nginx/对代码的贡献是通过开发邮件列表做渠道的,相关说明见:https://nginx.org/en/docs/contributing_changes.html没有在这些地方看到任何拒绝俄罗斯人民提交贡献的字样。而且,如何判断一个邮件列表背后的ID是来自俄罗斯的?(真想贡献的话,俄罗斯人民翻墙贡献行不行?)不过,如果这篇文章就到此结束,显得很没有意思,所以下面这些内容,是考虑这位CEO真的要拒绝俄罗斯人民的贡献。也就是说,如果我的阅读理解是错误的话,我们该怎么讨论。
这个 LICENSE 可见于:https://nginx.org/LICENSE我看了一下,基本和MIT是等义的。这个协议,上面一部分是版权声明(“这软件是我写的”),下面一大段是免责声明(“出了事我不负责”)。关键是中间的部分:Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.人话翻译一下:不管以源码形式还是二进制形式,不管你是否做了修改,只要你发布我的软件,就必须要遵守以下条件: 1、以源码形式再次发布时,必须保留上面的版权声明、本条件声明、以及下面的免责声明。 2、以二进制形式再次发布时,必须以文档或者其他形式,展示上面的版权声明、本条件声明、以及下面的免责声明。从这个描述可以看出,这是一个非常宽松的开源协议,符合开源软件促进会OSI对开源许可证的定义。但如何对待“贡献”这事,许可证没说。事实上,开源许可证一般都不说这个的,都是说复制、使用、修改、再发布这些权利;我没见过哪个许可证有条款专门说贡献的(如果你看到可以告诉我)。贡献这事,对于贡献者而言,纯属自愿,你想贡献就贡献,不想贡献就不贡献。(就像捐款一样)对作者而言,接不接受贡献也纯属作者的自由,想接受谁的贡献,就接受谁的贡献,想不接受谁的,就可以拒绝谁的。(就像接受捐款一样)所以,人们一般不太在意,也不太强求关于“贡献”的权利。总之,F5的这个行为,并没有违背 Nginx 的许可证,俄罗斯人民仍然可以像以前一样复制、使用、修改和再发布 Nginx 。那么,在开源许可证中增加一条:“不接受来自俄罗斯的贡献”,是否可以?是否违背开源的定义?
是否违背开源定义? 答案是:违背。如果这样写了,就不是开源许可证了。 众所周知,开源并不简单地等同于“源码可得”。开源(Open Source)的定义来自 OSI,一个软件是不是开源的,关键看它用的许可证是不是符合 OSI 列的那十条准则,也即 OSD 十条。OSD 那十条在这里:https://opensource.org/docs/definition.php
如果你对开源定义有兴趣,可以看我写的文章:开源定义是什么?OSD 第5条有说:“不得歧视任何个人或团体”原文是:The license must not discriminate against any person or group of persons.所以不能写“不接受来自俄罗斯的贡献”,这么一写,就违背OSD5了。这就很有意思了,这句话能说,不能写,说了不影响你还是一个开源许可证,也不违反你的开源许可证,但不能写,一写出来,你就不是开源许可证了。但说出来和写出来又有多大区别呢?说出来,不也是歧视吗?我觉得区别是:1、开源许可证是赋予权利的,如果不写“贡献”权利,那么所赋予的权利是没有歧视的。而“贡献”权利是作者自己掌握提供的,他有权在自己掌控的权利中更多给予或更少给予。2、如果把“贡献”权利写出来,那么许可证所赋予的权利就是有歧视的。可见,书面的和非书面的,差别很大,契约精神可能主要依附在书面文本上。
那到底这做法合适吗?
简单地说:
F5的这个声明,没有改变 Nginx 许可证,也没有改变 Nginx 许可证对用户的任何授权,Nginx 仍然是一个不折不扣的开源软件,而且不影响任何人行使他们从许可证中获得的任何权利。但这违背了最大程度的开放精神,就是说,看上去有点小气,不是那么开放。F5完全可以大气一点,俄罗斯人民提交的代码贡献,可以认真检查一下,如果确实很好,为什么不接受呢?现在回到文章开头提出的问题:Nginx 的创始人Igor现在位于俄罗斯,如果 Igor 现在想修改源码,他有这个权利吗?从许可证上看,Nginx 的版权行有两行,一行写的是 Igor ,一行写的是 Nginx 公司(被F5收购)。Copyright (C) 2002-2021 Igor Sysoev Copyright (C) 2011-2022 Nginx, Inc.从年份上看,因为离职,Igor 确实从2022年不再参与 Nginx 开发了,那么他还能控制这个他原创的项目吗?F5以6.7亿美元收购了 NGINX ,那么,Igor是否因为收购,放弃了关于 Nginx 的所有权利?这要看F5和 Igor 之间的协议是怎么写的,哪些权利归F5,哪些权利归 Igor 。如果仅仅保留“ Copyright (C) 2002-2021 Igor Sysoev ”这么一个“版权行”权利,那他是真的不能提交贡献了。除非F5解除这个限制后,Igor 作为一名普通开发者身份提交贡献。