概要
Red Hat社が、従来は一般公開されていたRHELのソースコードを顧客やパートナーにのみ提供するよう方針変更しました。
その後も、AlmaLinuxはアップデートを継続する旨コメントしていましたが、新たなブログ記事で、RHELとの1:1互換でなくABI互換を目指すことを発表しました。本記事でメモしていきます。
RHELソースコードの一般公開停止の件の概要は、以下の記事にまとめてあります。
AlmaLinuxのブログ記事
以下のブログ記事が発信されています。
- 2023年7月13日
The Future of AlmaLinux is Bright
気になる方は原文 (英語) をご覧ください。
以降の引用は、特に記載のない限り、上記の記事を引用元としています。
RHELとの1:1互換でなくABI互換を目指す
RHELソースコードの一般公開停止を受けて検討を重ねた結果、AlmaLinuxはRHELとの1:1互換でなくABI互換を目指すことを発表しました。
After much discussion, the AlmaLinux OS Foundation board today has decided to drop the aim to be 1:1 with RHEL. AlmaLinux OS will instead aim to be Application Binary Interface (ABI) compatible*.
ABI互換とは
聞き慣れない単語ですが、ここでABI互換とは、"RHEL上で動作するよう作られたアプリケーションがAlmaLinuxでも問題なく動作する" ということを担保する意味合いであることが補足されています。
AlmaLinuxのブログ記事中、"ABI compatibility"の部分は、Wikipediaへのリンクになっています (参考:日本語版WikipediaのABIのページ) 。
ABIについては、本記事の後半で補足します。
ユーザにとっての変化:バグ互換ではなくなる
従来AlmaLinuxは、RHELとのABI互換以外に、ソースコードも同一であり、RHELと同じバグが再現するものでした。
この互換性のレベルを、従来は "1:1互換" をと呼び、これを目標にしていたのだと思います。
厳密には違いがあるかもしれませんが、"クローン" という表現や、今回のブログ記事では“bug-for-bug compatibility” (バグ互換) という表現があります。
For a typical user, this will mean very little change in your use of AlmaLinux. Red Hat-compatible applications will still be able to run on AlmaLinux OS, and your installs of AlmaLinux will continue to receive timely security updates. The most remarkable potential impact of the change is that we will no longer be held to the line of “bug-for-bug compatibility” with Red Hat, and that means that we can now accept bug fixes outside of Red Hat’s release cycle. While that means some AlmaLinux OS users may encounter bugs that are not in Red Hat, we may also accept patches for bugs that have not yet been accepted upstream, or shipped downstream.
ABI互換を目標とすることにより、以下のような状況が生じ得ることが説明されています。
- RHEL (Red Hat) がリリースしていない修正をAlmaLinuxに取り入れる
- RHELでは発生しないバグがAlmaLinuxでは発生する
- アップストリーム、ダウンストリームにまだ取り入れられていない修正をAlmaLinuxに取り入れる
開発プロセスの変化
開発プロセスの変更点について、触れられています。
パッチを作成する際、それがどこから入手したものか分かるようリンクを含むコメントが追加するとのことです。
One of the first things you will see is that we will include comments in our patches that include a link to where we got the patch that’s been applied (like Grafana’s release yesterday). This change is helpful for several reasons, but it helps us specifically further our goal of transparency.
Grafanaのリリースを例に挙げています。
この例では、RHEL自体のソースコードでなく、CentOS Stream用のパッチをAlmaLinuxに適用したようです。
また、 AlmaLinux のバグを報告する際には、CentOS Stream でも問題のテストと再現を試みるようにするようです。
近々、さらに発表が
何かあるらしいです。
There are also a ton of exciting developments and partnerships in the works that we will be able to announce in the coming weeks and months.
気になった点
ABI互換OSを使うかどうか
今回の方針変更が、ユーザがAlmaLinuxを使い続けるかどうかの判断に影響することはあるのでしょうか。
非互換の許容度にもとづく判断
例えば、本番環境がRHELで構成されており、そのための検証環境としてAlmaLinuxを使用しているといったケースを想定します。
"バグ互換" ではなくなったので、わずかな動作の違いも許容できない要件のもとで動作するシステムの場合には、本番環境と検証環境で異なるOSは使用できません。
そのような場合には、その環境を構成するOSの選定について、再検討することになるでしょう。
(感想) ABI互換も互換OSなのか
互換OSが、元になるOSとの互換性を表現するにもレベル感があって、"ABI互換" という基準もあることを知り、なるほど…と思いました。
他のディストリビューションの互換性
RHELのソースコード一般公開停止後、今回はAlmaLinuxがその方針として互換性のレベルに言及しました。
今後のRocky Linux、あるいはOracle Linux、またSUSEが発表した新ディストリビューション等も、今後どのようなレベルの互換性を基準にしていくかを明確にする機会があるかもしれません。
もうトップページの説明が変わっている
早速、almalinux.orgのトップページの説明が、"ABI compatible with RHEL" という表記に変わっていますね。
出典:almalinux.org
従来は、"1:1 binary compatible with RHEL" という表記でした。
(従来の表記)
出典:almalinux.org official web site sources (github.com)
Rocky Linuxの方は、RHELと "バグまで含めた100%の互換性"
ちなみに、Rocky Linuxは、RHELと "バグまで含めた100%の互換性" を掲げています。
出典:Rocky Linux
(参考) もう少し詳しいABIの説明や、LinuxにおけるABI
ABIについても、少し調べた際のメモを残しておきます。
ABIは、バイナリ同士 (通常、ユーザプログラムとOS/ライブラリ間) のやり取りの仕方を定義するものです。データ構造や処理にアクセスする方法です。
例えば、ユーザプログラム (アプリケーション) はシステムコール等のカーネル機能を使用するため、ABIを使用して動作します。
In computer software, an application binary interface (ABI) is an interface between two binary program modules. Often, one of these modules is a library or operating system facility, and the other is a program that is being run by a user.
出典:Wikipedia
不正確かもしれませんが、簡単にポイントをメモしておきます。
説明のためにAPIと比較されることがあります。
APIはソースコードレベルで定義されますが、ABIはマシンコードレベルで定義されます。
"ライブラリAとBはAPI互換性がある" という場合、ユーザプログラムはそのソースコードを変更せずにA上でもB上でも動作します (別途、再ビルドの要否としては、静的リンク、あるいは動的リンクでもABI互換性が無ければ再ビルドが必要で、動的リンクでABI互換性もあれば再ビルド不要)。
"ライブラリAとBはABI互換性がある" という場合、ユーザプログラムはそのバイナリを変更せずにA上でもB上でも動作します。バイナリファイルを一式コピーするだけで動作するパターンです。
例えば、Linuxのカーネルアップデート前後で、アップデートにより更新されるライブラリのABI互換性が保証されていれば、ユーザプログラムを引き続き安心して動作させることができます。
以下、参考URLです。
まとめ
本記事では、RHELソースコードの一般公開停止後、AlmaLinuxがRHELとの1:1互換でなくABI互換を目指すことを発表したことについてまとめてみました。