| 作者:卫sir

| 编辑:金心悦

| 设计:张千禧

| 责编:王玥敏

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

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

报道称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真的要拒绝俄罗斯人民的贡献。

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

   比较尴尬的是什么

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

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

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

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

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

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

我们后面分析。

   这事是否违背了开源协议?

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

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

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

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

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

   如何心平气和地看待此事

有些人为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

开源先锋启示|有爱的开源

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

从知识溢出的视角分析开放式协作

开源社简介

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

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

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

  1. 卫剑钒:Nginx不接受俄罗斯的贡献,违背开源协议了吗?

    ▲ 点击上方"分布式实验室"关注公众号 回复"1"抽取纸质技术书 为了节省您的时间,简单说一下结论:不违背. 而且,我们很可能误解了F5的原意. 报道称[1], ...

  2. 数据3分钟丨Apache Doris谴责DorisDB违背开源精神;HC2021下周召开;openGauss训练营第二期圆满落幕

    数据 3 分钟 由 ACDU (中国 DBA 联盟) 与墨天轮联合出品的全新视频节目上线啦-三分钟带你来了解数据行业动态,节目内容主要包含数据行业最新的产品发布.公司大事件.行业新闻等. 本期内容概览 ...

  3. 数据3分钟丨Apache Doris谴责DorisDB违背开源精神;HC2021下周召开;openGauss训练营第二期圆满落幕...

    数据 3 分钟 由 ACDU (中国 DBA 联盟) 与墨天轮联合出品的全新视频节目上线啦-三分钟带你来了解数据行业动态,节目内容主要包含数据行业最新的产品发布.公司大事件.行业新闻等. 本期内容概览 ...

  4. 开源协议、开源贡献协议与OpenHarmony

    开源软件显示其"低成本"."自由"."透明"等优势的同时,需要很多的程序员.开发者参与贡献才能蓬勃发展.所以,如果程序员.开发者们的利益没有 ...

  5. GitHub封了41万俄罗斯开发者账户,开源真的无国界?

    作者 | 武穆 审校 | 云昭 PART 01  事件回顾  最近,俄罗斯研究员Sergey Bobrov在Twitter上用表情符表达了自己GitHub账户被封禁一事的心情: 图片来源@Twitte ...

  6. 对话 Contributor| 中国团队贡献的开源项目, 当然要支持

     点亮 ⭐️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler 夏日炎炎,高温可能会影响我们的食欲或者上班的心情,但却挡不 ...

  7. OpenI/O 2020 启智开发者大会|OpenI启智社区重要成果发布,贡献中国开源力量

    开源技术不仅推动了人工智能.深度学习和大数据能力的提升,共创智能时代发展新可能,同时能帮助企业快速建立自己在AI领域的领先地位,加速实现智慧转型和产品迭代.并且以云为依托,开源已经不再局限于软件技术的 ...

  8. 如何为你的代码选择一个开源协议

    相信很多刚踏入软件这个行业的小伙伴一如当初的我,对开源软件的各种协议不甚了解被搞昏了头脑.毕竟对于一个新生程序员来说,如何写好代码才是亟待解决的问题,无暇了解这些.随着你项目做得多了代码写得多了,你会 ...

  9. 【Git】认识各种开源协议及其关系

    开源许可协议 License是软件的授权许可,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的. 开源协议的种类 现今存在的开源协议很多,而经过Open Sou ...

最新文章

  1. Deploying Windows Mobile 6 with Exchange Server 2007 白皮书
  2. Hardfault 2
  3. CodeForces - 1425D Danger of Mad Snakes(容斥+组合数学)
  4. SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
  5. 大学计算机试卷分析报告,(最新整理)大学试卷分析报告
  6. HTML5实现的圆角框
  7. (SWAT-1)SWAT进行流域提取
  8. Python numpy.random中的shuffle和permutation函数的区别
  9. 上市公司产权和股权性质-区分非国企、国企和央企(2003-2020)
  10. 书小宅之概念汇总——胜读十年书
  11. Linux DDos防御
  12. 线性回归分析——高尔顿数据集更正版
  13. 案例分析:FIFA2018球员数据分析
  14. 【Excel】常用的excel表格操作
  15. 页面的版心html,关于PC端网页版心及网页自适应问题
  16. 《PMP学习笔记》1.2 财务评价指标
  17. Eclipse下搭建struts、spring、hibernate开发环境
  18. 关于对数函数的引入理解
  19. 联想小新 14、联想小新16 2023 标压版评测
  20. 7、如何判断接入的是百兆还是千兆网络?

热门文章

  1. 阿里云国际站:实名认证上传材料填写样例(域名持有者为个人)
  2. 基于485总线的评分系统
  3. 黑客发展历史和大事记
  4. mysql.cj.jdbc_com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver的区别
  5. CC2530接入OneNET-实现数据上传和命令下发
  6. 电容感应触摸屏工作原理
  7. 投影问题:带号求解,及中央子午线计算
  8. HCIP实验3-1:IBGP与EBGP
  9. mysql锁与程序锁_「最美应用」应用锁:这个程序锁,不寻常...
  10. recipe commences before first target. Stop 错误分析