わかるUNIXの歴史 / 番外編 ④血統の木を、法廷と標準まで

第1回で分けた「血統の木」── その先の、所有権と互換性の物語

二本の木の続き ── BSD訴訟・System V・POSIX 第1回で「血統の木(コードの継承)」と「再実装の木(思想の継承)」を分けました。今回は血統の木を、法廷(誰のコードか)標準(Unixらしさを仕様で固定)まで追います。所有権と互換性 ── 鶏と卵の“社会的な”側面です。

前提:第1回(二本の木) 種明かし:血統・思想・標準の三本柱

第1回で、UNIX 一族には血統の木(AT&T のコードが実際に流れる:BSD・System V)と再実装の木(コードは継がず思想だけ:MINIX・GNU・Linux)がある、と見ました。その「血統の木」を掘り下げると、コードの所有権をめぐる法廷闘争と、「Unix らしさ」を仕様として固定する標準化という、二つの大きな物語に出会います。技術のブートストラップと並ぶ、制度のブートストラップの話です。

01血統の木、法廷へ ── USL v. BSDi

血統の木が「本当にコードを継いでいる」ことは、第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, ニュージャージー)。下の図で、その時系列を追ってください。

図1:BSD をめぐる時系列。ライセンス取得 → Net/1・Net/2(AT&Tコード除去) → BSD/386 → 提訴(1992) → 和解(1994) → 4.4BSD-Lite → *BSD。和解のスコアに注目
和解のスコア(1994)

Novell(USL を買収)と大学が和解。争点だった BSD の 18,000 ファイル中、削除はわずか 3、修正は 70。ほぼ全てがフリーと確認され、proprietary UNIX コードを含まない 4.4BSD-Lite が公開されました。

意義は二つ。① コードの血統が、法廷で1行単位で争えるほど実在した(第1回「血統の木」の裏づけ)。② この訴訟の不確実さが続いた数年が、ちょうど台頭してきた Linux(再実装の木・訴訟と無縁)に追い風を与えた、という見方もあります。

02System V と Unix 戦争

血統の木のもう一方の枝が、AT&T の商用系です。System III(Xenix などの基盤)を継いで、1983年1月に System V が登場。AT&T はこれをUnix のデファクト標準にしようとします。一方には BSD 系。両陣営が「どれが本物の Unix か」を競った80年代末〜90年代初頭が、いわゆる Unix 戦争(Unix wars)です。ベンダーごとに少しずつ違う Unix が乱立し ── 互換性が、切実な問題になりました。

03POSIX ── 「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 は、二本の木を「互換」で橋渡しする

POSIX のすごさは、コード(遺伝子)を共有しなくても、仕様に従えば同じように振る舞えるようにしたこと。これは第1回の「思想の継承(再実装の木)」を、公式の仕様として固めたものです。MINIX も Linux も GNU も、AT&T のコードを1行も継がずに「Unix らしく」振る舞える ── その根拠が POSIX。血統の木と再実装の木は、根では別々でも、POSIX という水平な共通仕様の上で握手できるようになりました。下の図で、POSIX 前後を切り替えてください。

図2:二本の木と POSIX。POSIX 前は各 OS が独自 API でバラバラ。POSIX 後は、血統の木も再実装の木も、共通仕様 POSIX に接続して同じ API で会話できる
つなぐ声 ── 三本目の継承 第1回では継承を二つ(血統・思想)に分けました。この番外で、三本目が見えます ── 標準(仕様による互換)。①コードを継ぐ(血統)②思想を継ぐ(再実装)③仕様に合わせる(標準)。Linux が「Unix ではない(血統になし)のに Unix として使える」のは、②思想と③標準の合わせ技です。所有権(訴訟)と互換性(POSIX)── コードそのものだけでなく、それを取り巻く制度もまた、Unix 一族を形づくってきました。
正直な線 ── 制度は、コードより輪郭がぼやける

(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. USL v. BSDi の和解(1994)は、第1回の「血統の木」の何を裏づけたか。
    答えを見る
    BSD に AT&T の実コードが(法廷で1行単位で争えるほど)実在したこと。18,000ファイル中の削除3・修正70という具体的な線引きは、コードの血統が実物であることの証拠。
  2. Unix 戦争は、なぜ POSIX のような標準を必要としたか。
    答えを見る
    System V 系と BSD 系などベンダーごとに少しずつ違う Unix が乱立し、互換性(同じプログラムがどこでも動くこと)が問題になったから。共通の仕様が要った。
  3. POSIX は、コードの血統が無い OS に何を可能にしたか。
    答えを見る
    AT&T のコードを1行も継がなくても、仕様(システムコール・API)に従えば「Unix らしく」振る舞い、互換を保てること。再実装の木(MINIX・GNU・Linux)が Unix 互換になれる根拠。
  4. UNIX 一族の「継承」の三本柱を挙げよ。
    答えを見る
    ①コードの継承(血統:BSD・System V)②思想の継承(再実装:MINIX・GNU・Linux)③仕様による互換(標準:POSIX)。

まとめコードの所有権と、振る舞いの互換

第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 一族を形づくったのは、コードだけでなく、それを取り巻く制度でもあった。

この文書は「わかるUNIXの歴史」番外編④です。史実:AT&T UNIX のソースは大学等にライセンスされ、UC バークレー CSRG は BSD を派生。AT&T コードを除去した Net/1(1988)・Net/2(1991) を BSD ライセンスで公開し、BSDi が Net/2 を補完・i386 移植して BSD/386 を販売。AT&T の USL が1992年にニュージャージーで BSDi を提訴、UC Regents も被告に加えられた。1994年、Novell(USL を買収)と大学が和解し、BSD 18,000 ファイル中、削除3・修正70に留まり、4.4BSD-Lite が proprietary UNIX コードを含まない版として公開された。System V は AT&T の商用 Unix で System III を継ぎ1983年1月に登場、標準化を志向。80年代末〜90年代初頭のベンダー間標準化競争は Unix 戦争と呼ばれる。POSIX は IEEE の P1003 委員会(1984発足)による標準で、POSIX.1(IEEE Std 1003.1-1988)は100超のシステムコール・ライブラリ関数を C API として規定、System V と BSD の双方に由来。名称 POSIX は Richard Stallman の考案とされる。UNIX 商標の所有権は AT&T → Novell → X/Open → The Open Group と変遷。和解内容の一部は非公開で、細部・数値は資料により幅がある。 ── 印刷する場合はブラウザの「印刷」から「PDF に保存」を(印刷版では図の操作・解答は静止/非表示になります)。

印刷 / PDF 化:⌘+P(Windows は Ctrl+P)。画面では図1のスライダーで BSD 訴訟の時系列を、図2のボタンで POSIX 前後の互換性を切り替えられます。「答えを見る」で解答が開きます。