深度解读:红帽新规背叛开源惹众怒?

2023年6月21日,红帽在官网博客上发了一篇公告,引发了很多讨论。

比如:红帽对 RHEL 下游造成毁灭性打击!停止公开企业版源代码,要挤占开源份额实现盈利?

比如:继 CentOS 后,红帽又惹“众怒”:限制访问 RHEL 代码,要“杀死”下游发行版?

再比如:红帽“背叛”开源:限制RHEL源码访问,突袭下游发行版

咳咳,至于这么恐慌吗?

本文就是说说这个事。

343520b0e0db1605890231fe9952d1e8.png红帽的公告

公告里面最重要的一句话是:“CentOS Stream将成为RHEL相关源代码公开发布的唯一代码库。对于红帽的客户和合作伙伴,源代码仍将通过红帽的客户门户网站提供。

原文是:CentOS Stream will now be the sole repository for public RHEL-related source code releases. For Red Hat customers and partners, source code will remain available via the Red Hat Customer Portal.1

也就是说,公开渠道不再提供RHEL的源码,只能获取CentOS Stream的源码,而RHEL的客户和合作伙伴,仍然可以通过专门途径获取到源代码。

一、相关背景知识

有人会问,Red Hat、CentOS Stream、RHEL,还有以前常说的CentOS,这都是什么?以及是什么关系?

Red Hat(红帽)是一个公司,RHEL(Red Hat Enterprise Linux)是红帽的企业版Linux操作系统产品,订阅客户(即企业版的付费客户)可以享受订阅服务(即维保服务),也即可以从官方获得补丁、更新、升级,从官方获得专家技术支持以及培训等资源。

CentOS(Community Enterprise Operating System)是红帽的社区版Linux,免费的。当然,不花钱就没有专门的服务,技术支持主要是通过社区的方法来解决。但是,这么个可以捡便宜的好东西,在2020年12月以后,不再提供后续版本了。

从上下游关系上看,Fedora是上游,里面有操作系统最具创新的内容,其中比较成熟和稳定的内容进入RHEL,最后再进入CentOS:

e57118c4aae3635ac1420b3d74e294ef.png

所谓上下游,就是一些新功能新特性先在上游做,做得差不多了,比较稳定了,就可以输出到下游发布和进一步发展了。

Fedora是一个开源社区,专门研发Fedora Linux操作系统,红帽对其进行赞助,所有最具创新性的想法都在Fedora里面先行试验。

CentOS社区使用RHEL的源码,把Red Hat有关的商标都去掉,重新编译,就产生了CentOS Linux,可以说CentOS和RHEL是100%兼容的。CentOS始创于2002年,本来是一个独立的社区,2014年加入了红帽2

每当RHEL更新后,CentOS就会根据RHEL的更新,重新编译后跟着发布,正如克隆一样。没钱的老百姓用着这不花钱的CentOS也确实挺开心,虽然没服务,可咱穷人什么时候买过服务啊,能用就行。

然而,突然有一天(2020年12月8日),红帽宣布CentOS Linux项目停止,CentOS 8成为最后一个版本,不会再有CentOS 9。

同时,红帽推出了CentOS Stream项目,而且定性为RHEL的上游。

CentOS的创始人Gregory Kurtzer(他2005年就离开了CentOS)闻讯大怒,毅然创建了Rocky Linux项目,以继承CentOS的原始目标。

于是,上下游关系变为:

8fd1204d849b2bfe76a917ef62e26773.png

现在,老百姓就不敢随便用CentOS Stream上生产了,因为它不再是RHEL的下游,而是变成了RHEL的上游。也即最新的东西先在CentOS Stream中出现,然后才会进入RHEL(记住这句话,后面用得上)。

更为不便的是,CentOS Stream是滚动发布的,整个发行版始终保持所有内容的不断更新(每次更新都会包含最新的软件包和组件),而不像RHEL那样定期发布大版本和小版本,所以,大多数用户不敢直接拿CentOS Stream干正事,它连个固定的版本号都没有,谁知道里面有多少坑呢。

二、此举“背叛”开源了吗

当然没有。下面分析一下。

RHEL是个发行版,里面都是开源软件,占主要部分是GPL软件,还有一些软件包使用LGPL、Apache、MIT等许可证。

而我们知道,GPL是要求最严格的开源许可证,谁敢违背它呀,一违背就会被人告。

红帽只向RHEL客户公开源码,是否违背GPL?

不违背:因为GPL说,你分发二进制(或称目标码、非源码形式)的时候,要让被分发人能够获取到源码。

具体可见GPLv2的第3条和GPLv3的第6条。

客户就是被分发者,客户仍然可以通过门户获取RHEL的源码,所以没问题。

只是非客户不能那么容易获取源码而已,但非客户本来也不是RHEL的分发对象啊。

我看了一下门户,长这个样子:

cc936585c019da5a139f4709061aaa69.pnghttps://sso.redhat.com/

客户和合作伙伴应该都是有用户名和密码的。

有人会问,那客户能不能把源码再给非客户?

当然可以,所有的开源许可证,都允许一个得到源码的人,再次免费地分发源码。

这在OSD(此即著名的开源定义)的第一条里面就说明白了:

OSD1:The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.

大致翻译:开源许可证不得限制任何人销售或赠送发行版中的软件,开源许可证不得对此行为收取版税或其他费用。

RHEL完全由开源软件组成的,其中所有软件的许可证(如GPL、LGPL、Apache、MIT等)都是满足OSD1的,所以里面的所有源码都允许别人再次分发,不管是收费还是免费。

对,根据开源给你的权利,你还可以卖RHEL的源码,就看有没有人买了。

三、此举对下游的影响

虽然在2020年底红帽停止CentOS项目后,就没有RHEL的官方下游了,但是还是有一些项目,立志继承CentOS的作用。

除了前面提到的Rocky Linux,比较知名的还有AlmaLinux。在它的官网上,明确说明AlmaLinux是和RHEL完全1:1二进制兼容的,简单地说,它就是RHEL的克隆。

为什么要干这个事呢,原因很简单,RHEL做得好、又稳定,一定程度上也很安全,很多人想用这个,但又不想花钱订阅,考虑到RHEL反正也是开源的,何不就用它的源码构建一个一模一样的呢,于是就有了CentOS这样的发行版,大家就可以享用Red Hat的劳动成果了,只不过不享受Red Hat的服务而已。

以前(这个公告发布之前),RHEL的源码,是可以从git.centos.org获取的,所以下游做克隆,都很顺利,但是这个公告发布后,就没这么容易获取源码了。

AlmaLinux已经发现,RHEL的一些更新已经没有像以往那样在git.centos.org上同步了。

没有RHEL的源码,能否直接从CentOS Stream的源码,做出RHEL的1:1兼容?

这不太容易,因为毕竟CentOS Stream是上游,RHEL是下游,虽然红帽说这两者差别很小,但要做到RHEL的1:1,需要一些努力。

有人说,那AlamLinux直接做CentOS Stream的下游,和RHEL站在同等的位置不行吗?

行是行,但那就不是AlamLinux的定位了,他想做的就是RHEL的下游,或者说,AlamLinux就是想做RHEL的克隆,仅仅是不带Red Hat商标而已。

那能不能让客户把RHEL的源码拿过来,或者AlamLinux自己当个客户,然后基于RHEL源码做克隆呢?

我认为可以。

但AlmaLinux在官网博客中,针对此事分析道:“这一变化意味着,作为RHEL克隆的构建者,我们现在除了要遵循软件源中包含的许可协议外,还要负责遵守红帽相关的许可和协议。不幸的是,按照我们今天的理解,红帽的用户协议指出,通过Red Hat客户门户获得源码然后重新发布,是违反协议的。这意味着我们需要一个新的解决方案。” 3

原文是:This change means that we, as builders of a RHEL clone, will now be responsible for following the licensing and agreements that are in place around Red Hat’s interfaces, in addition to following the licenses included in the software sources. Unfortunately the way we understand it today, Red Hat’s user interface agreements indicate that re-publishing sources acquired through the customer portal would be a violation of those agreements.

我认为AlmaLinux的理解是错误的,至少是过于悲观了,我看了一下Red Hat和客户的协议EULA4(END USER LICENSE AGREEMENT),里面说得很明白,除了Red Hat商标不让用,完全可以再分发。

红帽的EULA根据开源许可证的不同,分为多个版本,比如基于GPLv2的叫Red Hat GPLv2-BASED EULA,基于LGPL的叫Red Hat LGPL-Based EULA,此外还有基于Apache的EULA、标准版EULA等等,应用于不同的软件组件,在每个版本EULA的第一条,都根据相应许可证赋予了用户按照相应开源协议运行、拷贝、修改和再分发源码的权利。

比如在Red Hat GPLv2-BASED EULA的第1条中是这么说的:

  1. 许可证授予。在遵守以下条款的前提下,Red Hat 公司(Red Hat)根据 GNU 通用公共许可证第2版 (https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) 授予你永久的、全球性的程序许可(每个程序可能包括多个软件组件)。除了下面第2节中描述的特定图像文件(笔者注:指商标文件)外,每个软件组件都受其许可证(位于该软件源码中)管辖,该许可证允许您运行、复制、修改和重新发布(在某些情况下需遵守某些义务)该软件组件。

1.License Grant. Subject to the following terms, Red Hat, Inc. (“Red Hat”) grants to you a perpetual, worldwide license to the Programs (each of which may include multiple software components) pursuant to the GNU General Public License v.2 (https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). With the exception of certain image files identified in Section 2 below, each software component is governed by a license located in the software component’s source code that permits you to run, copy, modify, and redistribute (subject to certain obligations in some cases) the software component.

我还看了Red Hat的其他一些协议,比如SOFTWARE AND SUPPORT SUBSCRIPTIONS协议5,也没有发现说不让再分发的。

从常识讲,红帽也不可能对客户再分发源码有什么限制的,作为一个资深开源大佬,他比谁都更清楚这些。

除非RHEL并不是完全由开源软件组成的,而是有一些开源之外的东西,但我没有听说有这回事。

另:有朋友提示我,客户从门户拿到的源码,可能并不是很利于构建克隆的形式,如果是这样,从CentOS Stream构建克隆可能还更方便一些。

四、红帽此举的用意?

在公告里面,红帽是这么说的:

“以前,在还没有转向CentOS Stream的时候,我们把RHEL的代码公开在git.centos.org(为的是让CentOS Linux用),后来CentOS Linux项目中止了,不再是RHEL的下游了,我们仍然开放着RHEL。但是,出于对CentOS Stream的参与度、项目的投资程度、以及我们对客户和合作伙伴的事项优先级的考虑,我们(在CentOS Stream之外)继续维护RHEL源码库,就显得有些多余和低效能了。最新的源码仍将通过CentOS Stream提供。”

 原文是:Before CentOS Stream, Red Hat pushed public sources for RHEL to git.centos.org. When the CentOS Project shifted to center on CentOS Stream, we maintained these repositories even though CentOS Linux was no longer being built downstream of RHEL. The engagement around CentOS Stream, the engineering levels of investment, and the new priorities we’re addressing for customers and partners now make maintaining separate, redundant, repositories inefficient. The latest source code will still be available via CentOS Stream.

我从里面推测红帽的大致意思是:

“反正我都不搞下游了,还公开RHEL源码干什么呢。”

“至于是不是方便你们克隆我的RHEL,我觉得不重要,重要的是大家一起把CentOS Stream搞好,你们想做下游,就做CentOS Stream的下游呗。”

“欢迎你们做RHEL的竞品,而不是再克隆RHEL,那多没意思啊!”

上面那段最后一句是“最新的源码仍将通过CentOS Stream提供”,一开始差点没看懂,什么?RHEL的最新源码仍将提供?后来我回过味来了:

RHEL的最新源码,当然一开始都会在CentOS Stream里面。

毕竟CentOS Stream是上游嘛,只不过这些“最新源码”,什么时候进入RHEL的发行版,就不清楚了。

作者:卫剑钒


  1. https://www.redhat.com/en/blog/furthering-evolution-centos-stream 

  2. https://lists.centos.org/pipermail/centos-announce/2014-January/020100.html 

  3. https://almalinux.org/blog/impact-of-rhel-changes/ 

  4. https://www.redhat.com/en/about/eulas 

  5. https://www.redhat.com/en/about/appendices 

猜你喜欢

转载自blog.csdn.net/vigor2323/article/details/131427928
今日推荐