解き放たれしソフトウェア

GNU/LinuxなどFLOSSについて書いてみるつもり

【雑文】GNU/Linux ディストリビューションは統一不可能だ

GNU/Linuxディストリビューションは、統一されることはなく、むしろ増えていくだろうと思います。

ディストリビューションをわざわざ創るのは、目的や思想がそれぞれ異なるからです。 創っている当人も、使っている人々も、多種多様です。 それが本質的な原因です。

さて、まずOSとしての基礎的な部分が統一不可能です。 init もブートローダも統一不可能なので。 なにせ init でさえも、SysVinit にまだ拘る人々もあります*1。 Systemd の採用が強引に増やされてきましたが、Systemd を採用するのはセキュリティ上を含めリスクがあります。 SysVinit、OpenRC、rc-file(rc.conf)、Systemd 等々の多種の init があるからこそリスクが分散されるのですし、使いやすさ(ユーザビリティ)は管理する人それぞれに指向が異なりますから、init が統一されることはないし、あってはなりません。

パッケージマネージャも、統一されないでしょう。 求めるパッケージ管理の思想と規格が、人それぞれ異なります。 そしてまた、プログラミング言語に何を採用したいかも、人それぞれに異なります*2

カーネルコンフィグレーションも、目的や思想やハードウェアにより異なるので、ビルド済カーネルで誰もがこと足りるということはありえません。 例えば、セキュリティを堅牢にしたい(hardend)のであればそのための手法を導入するでしょう。しかしそれは皆が望んでいるとは限りません。

SELinux を入れたい人あれば、AppArmourを入れたい人もあり、Tomoyoかもしれませんし。手法が複数あるのも、セキュリティのリスク分散でもありますし、思想の相異でもあります。 しかしそもそもこうした手法も、多くのエンドユーザは、理解と管理の手間が大変多いので、避けます。

さて、"Gentoo Linux"ならばこうした基礎的な部分でさえ選択可能なようにしてはありますが、そもそもパッケージのインストールにいちいちビルドするということを受け入れられない人の方が多いでしょうから、Gentoo に統一されることはありえません。 それに、Gentoo のパッケージ管理規格(PMS)が意に沿わない(not prefer)な人も多いと思います。Portage と Paludis と Pkgcore でパッケージマネージャが選べたところで、PMS は選べません。

しかしそれ以上に、ビルド済のディストリビューションになってしまうと、選べません。 例えば Sabayon は Gentoo ではありません。USE フラグの意義が抹殺されています。

ビルドするためのコンパイラアセンブラやライブラリも多種多様です。例えばコンパイラでも GCC や Clang やその他 Intel コンパイラ等々あります。アセンブラでも、GAS、yasm 等々あります。ライブラリも、 Glibc だとは限りません。

バージョンも、ビルドの際のフラグも、異なりえます。 例えば GCC も適宜バージョンが上がっていきますから、それを追いかけていく作業が要り、移行のペースが異なり、ソフトウェアによってはいわゆる Upstream の対応が遅くって、ディストリビューション側が対応に苦慮することがよくあります。 CFLAGS や CXXFLAGS にしても、オプティマイズオプションを -O3 にしたい人と、 -Os にしたい人と、-O2 派の人と、あります。いわゆる「組み込み系」で記憶装置の容量が小さいものだと -Os にすることが必至でしょう。

そして、リポジトリに入れるソフトウェアの選択、とりわけライセンスの部分で、論争必至です。 典型的には、プロプライエタリリポジトリを提供すると、フリーソフトウェアディストリビューションではなくなってしまいます。FSF は、Ubuntu どころか、DebianFedora も、フリーソフトウェアディストリビューションとしては認めていません。

なにせ「そもそも論」として、BSD 界隈だって、統一されていません。FreeBSDNetBSDOpenBSD が統一されることは、ありえないでしょう。双方相容れません。技術的な面以外にも、ディストリビューション同士で、創始者やメンテナ達も仲良くはありません。仲良かったら OpenBSD はフォークしていません。 BSD 系が統一しえないことと同様に、GNU/Linux も統一することは不能でしょう。

究極の「そもそも論」として、OS もアーキテクチャも何も、統一されていませんし、統一しないからこそ善いのでしょう。

MS-WindowsMacGNUBSD が統一されてよいと思いますか?  なにせ、無理です。運営方針や経営モデルでさえも異なります。技術以前に背景部分が異なります。

x86_64(AMD64) と ARM を統一することはありうるでしょうか? 根本的に異なる演算手法を用いているのですから、統合されないでしょう。目的に応じてどちらが適しているか、分かれます。

こうして、ひとつにしない方が役に立つのですし、多様であるからこそリスクが分散され、将来の可能性の広さも保てます。 ヒトどころか乳酸菌も、個体によって遺伝子が異なるのと同じです。全く同じクローンだったら、パンデミックやカタストロフで滅亡します。

たしかに、ディストリビューションのかなり多くは、Debian 系です。 厳密に言えば Debian系や Debian 系の Ubuntu 系です。 そうするとこれらは統一が可能なように思えるかもしれませんが、実際には困難です。可能だったならば、DebianUbuntu は統合していますって。 経営が異なりますし、コミュニティが異なりますし、Debian では基準に合わないライセンスのソフトウェアを Ubuntuリポジトリに盛り込んでいます。

Debianディストリビューションはあまたありますが、デフォルトの「デスクトップ環境」(DE)が異なっていたり、インストール済のソフトウェアが異なっていたりします。 提供したいソフトウェアが異なるために、リポジトリもフォークして改変していたりします。

「フレーヴァー」(flavor)だとか「スピン」(spin)だとか言い方はそれぞれですが、同じディストリビューションの中でもある程度は変えられます。 しかし、全ての人の要望や嗜好を満たすにはほど遠いでしょう。

人類70億人以上もあるのですから、ディストリビューションを1つにはしえないし、しないからこそよいわけです。 最大公約数で1つに統一しようとしたら、結局は何もなくなるか、あるいは独裁者が牛耳る世界にでもなるでしょう。

*1:例えば、Debian を SysVinit 版に改造した Devuan がそうです。

*2:Linux と同じように C にすべきだと思っている人もあれば、C++ の方が手抜き可能なのでコントリビュータが増えるからよいと思っている人あり、さらに Python などの遅い言語をあえて採用する事例も沢山あります。