第1回で分けた「血統の木」── その先の、所有権と互換性の物語
第1回で、UNIX 一族には血統の木(AT&T のコードが実際に流れる:BSD・System V)と再実装の木(コードは継がず思想だけ:MINIX・GNU・Linux)がある、と見ました。その「血統の木」を掘り下げると、コードの所有権をめぐる法廷闘争と、「Unix らしさ」を仕様として固定する標準化という、二つの大きな物語に出会います。技術のブートストラップと並ぶ、制度のブートストラップの話です。
血統の木が「本当にコードを継いでいる」ことは、第1回で裁判になったことを証拠に挙げました。その顛末を追います。UC バークレー(CSRG)は AT&T のソースライセンスの下で BSD を育て、やがて AT&T のコードを除去した部分を Net/1(1988)・Net/2(1991) として公開。BSDi はそれを補完し i386 へ移植して BSD/386 を売り出します(電話番号は 1-800-ITS-UNIX)。ここで AT&T の USL が「我々の UNIX コードが入っている」と提訴(1992, ニュージャージー)。下の図で、その時系列を追ってください。
Novell(USL を買収)と大学が和解。争点だった BSD の 18,000 ファイル中、削除はわずか 3、修正は 70。ほぼ全てがフリーと確認され、proprietary UNIX コードを含まない 4.4BSD-Lite が公開されました。
意義は二つ。① コードの血統が、法廷で1行単位で争えるほど実在した(第1回「血統の木」の裏づけ)。② この訴訟の不確実さが続いた数年が、ちょうど台頭してきた Linux(再実装の木・訴訟と無縁)に追い風を与えた、という見方もあります。
血統の木のもう一方の枝が、AT&T の商用系です。System III(Xenix などの基盤)を継いで、1983年1月に System V が登場。AT&T はこれをUnix のデファクト標準にしようとします。一方には BSD 系。両陣営が「どれが本物の Unix か」を競った80年代末〜90年代初頭が、いわゆる Unix 戦争(Unix wars)です。ベンダーごとに少しずつ違う Unix が乱立し ── 互換性が、切実な問題になりました。
分裂への答えが POSIX です。IEEE は1984年に P1003 委員会を作り、POSIX.1(IEEE Std 1003.1-1988)として、100を超えるシステムコールとライブラリ関数を C の API で規定しました(System V と BSD の双方から採る形で)。名前 “POSIX”(Portable Operating System Interface)は、Richard Stallman が考案したとされます。
POSIX のすごさは、コード(遺伝子)を共有しなくても、仕様に従えば同じように振る舞えるようにしたこと。これは第1回の「思想の継承(再実装の木)」を、公式の仕様として固めたものです。MINIX も Linux も GNU も、AT&T のコードを1行も継がずに「Unix らしく」振る舞える ── その根拠が POSIX。血統の木と再実装の木は、根では別々でも、POSIX という水平な共通仕様の上で握手できるようになりました。下の図で、POSIX 前後を切り替えてください。
(1) USL v. BSDi の和解内容には非公開部分があり、細部は資料により表現が異なります。「18,000 中 削除3・修正70」「4.4BSD-Lite」は広く引用される数字です。(2) UNIX™ という商標の所有権は AT&T → Novell → X/Open → The Open Group と複雑に移り、「コードの血統」と「商標・認証の血統」はまた別の話です。
(3) POSIX は最小公倍数的な取り決めで、現実の OS は独自拡張だらけです。Linux や各 BSD の POSIX 準拠も程度問題で、「POSIX に完全準拠」と「Unix 認証(The Open Group)を取得」はまた別。(4) 「Unix 戦争」は俗称で、実際は複数の標準化団体・連合(後の 単一UNIX仕様 など)が絡む複雑な経緯を、ざっくり一語で呼んだものです。
第1回の「血統の木」を掘ると、二つの物語に出会う。ひとつは所有権 ── UC バークレーは AT&T のソースライセンス下で BSD を育て、AT&T コードを除いた Net/1(1988)・Net/2(1991) を公開、BSDi の BSD/386 をめぐって AT&T(USL) が提訴(1992)。1994年の和解で 18,000 中 削除3・修正70、ほぼ全てがフリーと確認され 4.4BSD-Lite が生まれた。コードの血統は、法廷で争えるほど実在した。
もうひとつは互換 ── AT&T の System V(1983) と BSD が競った Unix 戦争が乱立を生み、その答えが POSIX(IEEE 1003.1-1988、名は Stallman 考案)。100超のシステムコールを C の API で規定し、コードを共有しなくても Unix らしく振る舞える基準を作った。これで再実装の木(Linux ら)が堂々と Unix 互換になれた。継承は三本柱 ── ①血統 ②思想 ③標準。Unix 一族を形づくったのは、コードだけでなく、それを取り巻く制度でもあった。
gcc・bash で立ち上がりました。なぜ Stallman は、わざわざ Unix を白紙から作り直そうとしたのか。ツールチェーンが自由でなければ、種を自分で撒けない ── その思想と、本編との深いつながりを見ます。
印刷 / PDF 化:⌘+P(Windows は Ctrl+P)。画面では図1のスライダーで BSD 訴訟の時系列を、図2のボタンで POSIX 前後の互換性を切り替えられます。「答えを見る」で解答が開きます。