Nginx不接受俄罗斯的贡献,违背开源协议和定义吗?我们冤枉F5了吗?

a585dbf5edd03b268e538482868551f7.gif

89823611c490dd1ffd444d0027555eca.png

| 作者:卫sir

| 编辑:金心悦

| 设计:张千禧

| 责编:王玥敏

为了节省您的时间,简单说一下结论:不违背。

而且,我们很可能误解了F5的原意。

7439581a8bc8f17463828fdaa542ec4e.png

报道称1,2022年3月15日,美国网络公司F5的CEO(FRANÇOIS LOCOH-DONOU)在F5官网博客上发表《Standing Firm in Support of the People of Ukraine》2一文,宣布F5停止在俄罗斯的所有销售活动,与此同时,移除俄罗斯对 F5 网络的访问权限,并停止来自俄罗斯的对 Nginx 开源项目的贡献。

d64ad2c24d64b67f6edfb9672450636d.png

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

68d55a48eeabc3afeb1ba70c1a37964e.png  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真的要拒绝俄罗斯人民的贡献。

也就是说,如果我的阅读理解是错误的话,我们该怎么讨论。

994870ebaba7003d61b72a48e54c5235.png   比较尴尬的是什么

这里面,最让人感到尴尬的就是:Nginx 最早是俄罗斯人 Igor Sysoev 开发出来的。

2019年,Igor 因为 NGINX 被收购加入了F5;2021 年1月18日,Igor 宣布从F5和 NGINX 离职4

据信,Igor 现在归隐在俄罗斯自己家中,已经远离他当年设计开发的 Nginx 。

Igor 创办 NGINX 公司以及被F5收购这事,让他的老东家 Ramble 公司记恨,并于2019年12月,让俄罗斯刑警抓了 Igor ,这事也挺狗血的。我还专门写过一篇文章分析这个:上班时间写开源软件,结果被单位告被警察抓,这算什么?

那么,Igor 现在有没有贡献的权利?一个开源项目被卖给一个大公司后,原作者离职,是否还对该项目有控制权?

知识产权在谁手里?原作者拥有什么权利?

我们后面分析。

282820d1a5bca62dd27395a98922ca8c.png   这事是否违背了开源协议?

Nginx 的许可证并不是常见的那几个,而是自己写的一个:

8a7592939817380e433c84e30e43e4d6.png

这个 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 。

那么,在开源许可证中增加一条:“不接受来自俄罗斯的贡献”,是否可以?是否违背开源的定义?

1df2c65ec9e175a43e1fbfb47fb51cea.png   是否违背开源定义?


答案是:违背。如果这样写了,就不是开源许可证了。

众所周知,开源并不简单地等同于“源码可得”。开源(Open Source)的定义来自 OSI,一个软件是不是开源的,关键看它用的许可证是不是符合 OSI 列的那十条准则,也即 OSD 十条。

OSD 那十条在这里:

https://opensource.org/docs/definition.php

2022年3月17日,OSI 在官网文章中引用美国法院对某案的判决,并呼吁:“当你不是开源时,就不要再说自己是开源了!”5,涉案的被告软件叫ONgDB,在广告中自称是开源软件,被人告上法庭,说他属于虚假广告。法院认可了这个判断,并禁止ONgDB在广告中使用「开源」一词。

如果你对开源定义有兴趣,可以看我写的文章:开源定义是什么?

OSD 第5条有说:“不得歧视任何个人或团体”

原文是:The license must not discriminate against any person or group of persons.

所以不能写“不接受来自俄罗斯的贡献”,这么一写,就违背OSD5了。

这就很有意思了,这句话能说,不能写,说了不影响你还是一个开源许可证,也不违反你的开源许可证,但不能写,一写出来,你就不是开源许可证了。

但说出来和写出来又有多大区别呢?

说出来,不也是歧视吗?

我觉得区别是:

1、开源许可证是赋予权利的,如果不写“贡献”权利,那么所赋予的权利是没有歧视的。而“贡献”权利是作者自己掌握提供的,他有权在自己掌控的权利中更多给予或更少给予。

2、如果把“贡献”权利写出来,那么许可证所赋予的权利就是有歧视的。

可见,书面的和非书面的,差别很大,契约精神可能主要依附在书面文本上。

fe91d0025f37b11841d8b97ed2e88511.png   那到底这做法合适吗?


简单地说:

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 作为一名普通开发者身份提交贡献。

fc527e6fcb10d4b1cbc205cb4e4e5858.png   如何心平气和地看待此事

有些人为F5的所作所为感到气愤,我觉得大可不必。

在我看来,软件在是否免费和是否提供源码这事上,从用户角度看,有一个境界的区分。

常见的情况是:软件收费,不提供源码。(常见的商业软件)

稍好的情况是:软件收费,源码收费提供。(部分商业软件)

然后是:软件收费,源码免费提供。(比较少见)

然后是:软件免费,不提供源码。(免费软件)

比较好的情况是:软件免费,源码免费提供,不接受贡献。(部分开源软件)

很好的情况:软件免费,源码免费提供,接受贡献。(多数开源软件)

当然,这个好坏,仅仅是我个人的当下喜好而已,并不全面,也并不严格。

那么,Nginx 仅仅是从很好变成了比较好,你的心态就要崩了吗?

微软的Windows这么多年也没有接受过你的贡献,也不让你看源码,还收你钱,你是不是觉得微软还挺好?

这实在让我想起“升米恩,斗米仇”。

再说,我们还很可能误解了F5。


  1. 生于俄罗斯的 Web 服务器王者 Nginx,现宣布俄罗斯禁止贡献! 

  2. Standing Firm in Support of the People of Ukraine(https://www.f5.com/company/blog/standing-firm-in-support-of-the-people-of-ukraine) 

  3. GitHub 限制俄罗斯使用代码,「开源无国界」是伪命题吗? 

  4. Ngnix 之父突然离职,程序员巅峰一代落幕 

  5. https://opensource.org/blog/court-affirms-its-false-advertising-to-claim-software-is-open-source-when-its-not

相关阅读 | Related Reading

517418b56e42c7d68c1ab77d7fdeff68.png开源先锋启示|有爱的开源

18e428a1d08b526262df9bdab1430ab0.png

开源社 ONES Group 开源战略研究组第一次线上工作会议顺利召开

772f8a1e42997e1c02c76d7de3272165.png从知识溢出的视角分析开放式协作

开源社简介

开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。

2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近七年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了近百家赞助、媒体、社区伙伴。

e781def552387b2067538d504d82a2d8.gif

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值