第9回 Red Hat社のソースコード非公開を考察する

Red Hat社は2023年6月21日付けのブログ「
Furthering the evolution of CentOS Stream」で、Red Hat Enterprise Linux(以下RHEL)のソースコード公開を顧客やパートナーに限定すると発表しました。

それ以降、この話題は各種ニュースサイトで数多く取り上げられています。また、OracleやAlmaLinux、Rocky LinuxなどRHELクローンを開発するベンダーやコミュニティは強い反発をしています。

Red Hatの発表は、どのようなことを意味するのでしょうか。なぜ、ここまで強い反発を受けているのでしょうか。これらを理解するには、Linuxの歴史やディストリビューション開発方法、ライセンスに関する知識が欠かせません。

そこで、Red Hat社のアナウンスの意味や各社の反応、今後の動向予測など、今回の騒動をやさしく読み解いてみます。

Red Hat社の発表を読み解く

今回の発表を理解するには、CentOS Streamを理解する必要があります。CentOS Streamを紹介しつつ、今回の発表を読み解いてみましょう。

CentOS関連のRed Hat社/IBM社のアナウンス

全体像を理解するために、CentOS関連の状況を振り返ります。

  • 2004年 CentOS最初のリリース
  • 2014年 Red Hat社がCentOSを買収
  • 2019年 IBM社がRed Hat社を買収
  • 2020年 CentOSプロジェクトを中断すると宣言
  • 2021年 CentOS開発中止に対するアクションとして、コミュニティはAlmaLinuxやRocky Linuxを発表
  • 2023年 RHELのソースコード提供を顧客やパートナーだけに限定

CentOSの歴史は意外と古く、2004年のバージョン2.0にさかのぼります。当時、RHEL互換ディストリビューションは複数存在し、現在のような絶対的な状態ではありませんでした。特にScientific Linuxは長年使い続けられ2020年まで存在しました。また、Oracle Linuxは2006年に発表されました。

2014年には、これまで独自のプロジェクトだったCentOSをRed Hat社が買収しました。これには賛否あるでしょうが、当時CentOSのリリースが遅れ気味だったこともあり、歓迎の声も多かったように記憶しています。

2019年には、IBM社がRed Hat社を買収します。ここからCentOSが大きく変貌を遂げていくのはみなさまご存じの通りです。

CentOSの終焉とCentOS Streamへの移行

大きな変動の始まりは、2020年のCentOSプロジェクト終了のアナウンスです。以前「第8回 CentOSをOracle Linuxへ切り替える」でも紹介したとおり、CentOSプロジェクトは終了し、CentOS Streamへと切り替わっています(CentOS 7のサポートは2024/06/30までで、CentOS 8はすでに終了)。

そして世間を騒がせたのは、CentOS StreamはRHELのアップストリームという位置づけだったためです。

今までCentOSは無償で使えるRHEL互換ディストリビューションとして人気を誇っていました。それがCentOS Streamになり、RHEL互換ディストリビューションとは言えなくなってしまったのです。また、CentOS Streamはローリングリリース方式を採用しています。そのため、常に最新化が求められ、本番環境用途での利用が難しくなってしまいました。

これが世に言う「CentOSショック」です。

Red Hat社の発表内容

Red Hat社は、ソースコード非公開化ついて次の2本のブログを発表しています。

最初に「Furthering the evolution of CentOS Stream」の重要部分を紹介します。いろいろなニュース記事で細かく解説されているので、ここでは翻訳の正確さよりも、わかりやすさを重視して短めにしています。

As the CentOS Stream community grows and the enterprise software world tackles new dynamics, we want to sharpen our focus on CentOS Stream as the backbone of enterprise Linux innovation. We are continuing our investment in and increasing our commitment to CentOS Stream.

CentOS Streamコミュニティは成長し、エンタープライズソフトウェアが新たなダイナミズムに取り組んでいるので、今後もCentOS Streamへの投資を継続し、取り組みを強化しています。

Red Hat社はCentOS Streamへの姿勢を示すと共に、この前段となる文章では、アップストリームを迅速に公開することを歓迎する声もあることを紹介しています。

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.

CentOS Streamは、今後RHEL関連のパブリックなソースコードリリースの唯一のリポジトリとなります。Red Hatの顧客やパートナーには、Red Hat Customerポータルを通じて、今後もソースコードへアクセスする方法を提供します。

原文でも太字になっています。回りくどい表現ですが、単純に言うと「CentOS Streamのソースコードは一般公開するが、RHELのソースコードは一般公開しない」と表明しています。

続いて「Red Hat’s commitment to open source: A response to the git.centos.org changes」です。

前半部分のサマリーです。原文は長いので省略しています。

Red Hatはオープンソース開発モデルを採用し、新機能開発やバグフィックス、パッチのバックポート、さまざまなテストには多くのコストが掛かっています。また、常に3~4メジャーリリースを管理し、5~10年前のコードにパッチをバックポートするのは骨の折れる作業です。さらにはFedoraやLinux Kernelプロジェクトなどのアップストリームへの反映も必要です。

I feel that much of the anger from our recent decision around the downstream sources comes from either those who do not want to pay for the time, effort and resources going into RHEL or those who want to repackage it for their own profit. This demand for RHEL code is disingenuous.

RHELのソースコードをリビルドだけして、何の貢献もしていないRHEL互換ディストリビューションの不誠実さには怒りを覚えます。

ここではフリーライドを非難しています。

オープンソースソフトウェアは、さまざまな理由で発展してきました。無償もしくは低コストで使用できる、ソースコードが公開されているのでベンダロックインされない、などの利用者側のメリットが最大の発展理由でしょう。しかし、開発者側にもメリットはあります。利用者が増えバグ報告されることで品質が上がる、開発メンバーが増えることで開発が進む、ドキュメントや技術情報が多言語で展開されることで利用ユーザーが増えるなどです。

近年はAmazon Web Servicesなどのメガクラウドでフリーライドが問題になっています。RedisやElasticsearch、MongoDBなどがメガクラウドのフリーライドに反発してライセンスを変更しています。

We also provide no-cost Red Hat Developer subscriptions and Red Hat Enterprise Linux (RHEL) for Open Source Infrastructure. The developer subscription provides no-cost RHEL to developers and enables usage for up to 16 systems, again, at no-cost. This can be used by individuals for their own work and by RHEL customers for the work of their employees.

われわれは、Red Hat DeveloperサブスクリプションやRed Hat Enterprise Linux for Open Source Infrastructure(オープンソース開発コミュニティ向けサービス)を無償で提供しています。

利用規約を読むと用途はかなり限られますが、一部のユーザー向けにRHELの無償利用プログラムを提供しています。

なぜ、強い反発を受けたのか

今回の騒動は、「RHEL互換として無償利用できるCentOSが無くなる」「CentOS Stream以外のRHEL関連ソースコードは一般公開されない」 ことが原因です。このことを、もう少し深掘りしてみましょう。RHEL互換ディストリビューションの作成方法やGPLについて説明します。

RHEL互換ディストリビューションの作成方法

下図はRHEL互換ディストリビューションの作成方法を表したものです。RHEL互換ディストリビューションは、RHELもしくはCentOSのソースコード(SRPM)を元に開発していました。多くのディストリビューションは、権利関係が除外され加工しやすいCentOSを元にしていました。

問題になるのは今後の作成方法です。RHELのソースコードは顧客やパートナーなど限定されたユーザーに限られます。CentOS Streamだけが、誰でもアクセス可能なソースコードリポジトリになりました。ところが、CentOS StreamはRHELのアップストリームです。CentOS Streamのソースをリビルドしても、RHEL互換にはなりません。

GPLとRED HATエンタープライズ契約

Linuxカーネルは、GPL v2でライセンスされているプログラムです。LinuxはGPLなのだから、ソースコードを公開しないのはおかしいと考えるかたもいるでしょう。そこでRHELのライセンスを理解するうえで重要な、GPLとRED HATエンタープライズ契約について簡単に説明します。

GPLは大変強力なライセンスで、次の特徴を持ちます。GPLの条文は有志による日本語訳も公開されていますが、難解で解釈が分かれる部分もあるので、大まかにこんな雰囲気とお考えください。

  • 商用利用可能
  • 作成者はいかなる責任も負わない
  • 著作権表示や無保証であることを記載する
  • 配布時にソースコードの公開義務がある
  • GPLライセンスが適用されたプログラムの全部もしくは一部を使ったソフトウェアを作成した場合は、これもGPLとして配布する必要がある

注目すべきは 「配布時にソースコードの公開義務がある」 の部分です。これに対する一般的な解釈は「オブジェクトコード(バイナリコード)を持っている人は、ソースコードを入手する権利がある」。しかし「オブジェクトコードを持ってない人は、ソースコードを入手する権利はない」といえます。

具体的な例で説明すると、ある企業でGPLのソフトウェアを改変して社内だけで利用するプログラムを開発します。このソフトウェアはGPLですが、社外公開していないため、改変部分を含むソースコードを外部に公開する必要はありません。

GPLはソースコード公開について強力な特性を備えながらも、上記のような性質を持っています。そのため、Red Hat社は顧客とRED HATエンタープライズ契約を締結することで、顧客との間に一定の制限をかけています。RED HATエンタープライズ契約の内容には踏み込みませんが、制限の多い条文が含まれています。

各ベンダやプロジェクトの反応

Red Hat社の発表に対し、RHEL互換ディストリビューションを開発するベンダやプロジェクトはさまざまな声明文を公開しています。それらを紹介します。

AlmaLinux

AlmaLinuxは、ホスティング用Linux OSとして実績を持つCloudLinux社が中心となって立ち上げたプロジェクトです。アフターCentOSのプロジェクトでは、もっとも早くリリースされました。立て続けに3本のブログを公開しています。

大まかな内容は次のとおりです。

  • RHEL互換のソースRPMの入手は困難になるが、セキュリティアップデートには迅速に対応できる
  • RHELダウンストリームの姿勢は堅持するが、RHELとの1:1互換性は捨て、バイナリレベルでの互換性を目標とする
  • オープンソースコミュニティ、そしてFedoraやCentOS Streamなどのアップストリームも含め、Enterprise Linuxエコシステム全体に貢献していく

2番目のブログではOpenSSLを例にセキュリティアップデートへの追従方法を紹介しています。また、日本でRHEL互換ディストリビューションを展開するサイバートラスト社(MIRACLE LINUX)は、AlmaLinuxのメインスポンサーであるCloudLinux社との提携を発表しています。

Rocky Linux

Rocky Linuxは、CentOSプロジェクトの創設者であるGregory Kurtzer氏が立ち上げたプロジェクトです。サポートもGregory Kurtzer氏が立ち上げたCiQ社が実施しています。こちらも3本のブログを公開しています。

大まかな内容は次のとおりです。

  • バグレベルまでのRHEL 100%互換性を追求
  • 安定して長期間使用できるRHEL互換ディストリビューションを提供する使命を果たす
  • オープンソースコミュニティ、そしてFedoraやCentOS Streamなどのアップストリームも含め、Enterprise Linuxエコシステム全体に貢献していく
  • Red Hat社のTerms of ServiceやEnd User License AgreementsではGPLで認められた権利を阻害しているが、合法的な方法でソースコードを入手する方法を紹介している(コンテナイメージのRed Hat Universal Base Imageを使用する方法と、パブリッククラウドの従量制インスタンスを使う方法)
  • OpenELAというEnterprise Linuxを推進するプロジェクトをOracle社やSUSE社と立ち上げた

Oracle

Oracle Linuxを開発するOracle社は以下のニュースを公開しています。

AlmaLinuxやRocky Linuxと比べて皮肉っぽい内容もありますが、大まかな内容は次のとおりです。

  • 25年にわたってLinuxコミュニティに参画。誰にとっても無料で使用できる最高のサーバーOSにすることを目標にしてきた
  • 2006年にOracle Linuxをリリースし、Linuxコミュニティを分断しないためRHEL互換を選択した
  • GPLを順守し、バイナリとソースコードをオープンにしてきた。IBM(Red Hat)とは異なり、サブスクリプション契約で利用者の権利を妨げるようなことはしない
  • 今回のソースコード非公開は競合他社を排除する狙いがあるのではないか
  • 可能な範囲でRHELとの互換性を維持し続ける
  • 今後もOracleはLinuxコミュニティに貢献し続けると共に、バイナリとソースコードを公開する。ダウンストリームディストリビューションを歓迎する

SUSE

最後にSUSEです。RPM系のディストリビューションではあったものの、RHEL互換ではなかったSUSEがRHEL互換ディストリビューションへの参入を発表しています。

おわりに

Red Hat社は、間違いなくエンタープライズ向けLinuxマーケットのリーダーでした。また、これまでLinuxに限らず、オープンソースコミュニティへ同社が果たした貢献は計り知れないでしょう。それだけに、今回の発表には驚きました。

Red Hat社の発表から3カ月しかたっていませんが、各社の迅速な対応が見られます。主要なRHEL互換ディストリビューションベンダーのすべてが対応策を表明しているだけでなく、ヨーロッパで高いシェアを持つSUSEまでが参加を表明しました。そのためRHEL互換ディストリビューションが無くなる、もしくはセキュリティパッチが大きく遅れるようなことはないでしょう。

今回の件は、2003年から2010年まで続いた「SCO linux 訴訟」を思い出させます。Linuxの著作権を持つSCO社がIBM社を訴訟したことを皮切りに、Novell社やRed Hat社も訴え、さらには一般のLinuxユーザーまで訴えることを匂わせた裁判です。世界中から大ブーイングを受けたうえ、裁判に一つも勝てず、多額の訴訟費用を支払うことになりました。

今回は、SCOのパテントトロール的な悪質さはありません。しかし、オープンソースの世界で多くの反対者が出るようなことが成功を収める可能性は低いでしょう。ただし、アップストリームとしてのCentOS Streamのニーズもあることから、RHEL互換のダウンストリーム陣営との共存が図られるかも知れません。

関連サービス

Oracle Linux KVM

Linux KVM (Kernel-based Virtual Machine:カーネルベースの仮想マシン) は、Linuxに組み込まれたオープンソースの仮想化テクノロジーです

Oracle Linux

オラクル製品の開発は、Oracle Linux( Unbreakable Enterprise Kernel )に基づいて進められているため、オラクル製品に最適化されたOS環境をご利用いただけます。Kspliceによるゼロダウンタイムパッチを適用することが可能です。