«前の日記(2004年07月05日) 最新 次の日記(2004年07月07日)» 編集

Matzにっき


2004年07月06日 [長年日記]

_ [OSS]Javaのオープンソース化で苦悩するサン--レッシグらの助言も

CNET Japanより。

SunはJavaをオープンソースにするかどうかで悩んでいるらしい。

Javaの生みの親で同ソフトを管理しているSunは、Javaをオープンソース化することにより、同ソフトにとって最も重要な互換性が損なわれるのではないか、との懸念を表明している。

その根拠は

Sunは、JavaにUnixやLinuxと同じ轍を踏ませたくないと考えている。両ソフトは管理が甘かったため様々な亜種が誕生し、結果的に両者の互換性は失われてしまった。

SunのバイスプレジデントでJavaの主要な開発者であるJames Goslingは、JavaOneで行なわれた議論の中で、「私はUnix戦争を生き延びた」と述べ、さらに「私はLinuxの細部に至るまで全てを愛しているが、Linuxは再び同じ問題に直面している。これまでに数多くのLinuxディストリービューションが開発され、互いに大変似てはいるものの、それぞれ異なっており苛立ちを覚える」と語った。

なのだそうだ。

では、少々考察してみよう。仮にSunが持つJavaをオープンソース化することに対する懸念は「互換性が損なわれる可能性」だけだとする。ほんとは違うかもしれないけど。

まず、オープンソース化しなければ、Sun以外の要因による互換性問題は発生しないのか。

Sunのプロダクトにおいては確かにその通りだが、今やJavaに関連する技術は数多くあり、 その中の多くはSunによってコントロールされていない。 しかし、顧客の求めている互換性は、Sunのプロダクトの範囲でだけ互換性が維持されているかどうかではなく、 Javaに関連するテクノロジー全体での互換性ではないだろうか。 それらに互換性の問題が発生するかどうかは、Sunだけの努力では制御不能だ。

よって、互換性が維持できるかどうかは、コミュニティ全体が互換性に対してどれだけコミットしているかどうかで決まり、オープンソースであるかどうかによっては決まらないように思う。

次に、オープンソース化すると互換性の維持に必要なコミットメントが増大するかどうか考えてみよう。

彼らの反論ではUnixやLinuxはそのような例だという。本当にそうか。

まず、Unixについてだが、これらは元々オープンソースではなかった。 初期のUnixはAT&Tとライセンスを結ばなければ利用できなかったし、 詳しい事情は識者に任せるが、System VとBSDの「分裂」を産んだのも、オープンソースが原因ではなかったと思う。

またUnix間の非互換性を増大させたのは、 SunのSunOS、IBMのAIX、DECのUltrix、HPのHP-UXなど各種ベンダーによるソースが公開されなかった独自の拡張によるのではないか。すくなくともこれをもって「オープンソースが非互換性を増長させる」という結論は得られない。

では、Linuxはどうか。ここでの互換性は、

これまでに数多くのLinuxディストリービューションが開発され、互いに大変似てはいるものの、それぞれ異なっており苛立ちを覚える

ということなので、カーネルのバージョン間の互換性ではなく、 ディストリビューション間の違いであるとする。

当初、Linuxのカーネル以外の部分はまったく標準化の努力が行われていなかった。 なんとなく伝統的なUnixっぽいファイル階層やブートシーケンスが採用されていたので、 ディストリビューションごとに多くの違いがあったのは事実だ。

しかし、これはLinuxというものがオープンソースであったことが原因というよりは、 むしろ互換性のための動機づけや努力が希薄であったことを示すだけではないだろうか。 FHS(File Hierarchy Standard)などが定義された現在では、本質的な違いは少なくなっていて、 ディストリビューションの違いはパッケージセットや管理ツールの違いであり、 一般に「差別化」と呼ばれる好ましい違いに収まりつつあるのではないだろうか(まだ不完全かもしれないが)。

最後にプロジェクトの分裂についても考えてみよう。 オープンソースプロジェクトはプロジェクトの分裂を禁止することはできない。 しかし、分裂したプロジェクトのうち、どちらが選ばれるかは信頼によって決まると思う。

今までSunがJavaに対してしてきたことは、おおむね信頼にあたると多くの人が考えているのではないだろうか。 では、だれかがJavaを「奪おう」としても、Sunが引き続き信頼に足る行動を続けている限り、 たとえオープンソース化しても、SunのJavaの地位は安泰ではないだろうか。

SunにはSunの資産を自由にする当然の権利があり、 また、私はJavaがオープンソース化されようと、されまいとどっちでもよいのだが、 SunはJava自身を売っているわけではなくて(確かそうだよね?)、 また契約さえすればソースコードも無償で配ってるはずなので(確かそうだよね?)、 オープンソース化しないのは「無駄な抵抗」に見える。

となると、最初に否定した「互換性への懸念」以外の真の理由があるんじゃないかと考えちゃうんだが、 邪推のしすぎかなあ。

追記:

まとめると、

  • Sunが互換性の維持を重視することはすばらしいことだ
  • オープンソース化したからと言って互換性の維持が難しくなるとは限らない
  • 互換性の維持そのものは大変なことで、それはオープンソースであるかどうかと関係ない
  • Javaなら定義が既に明確にドキュメント化されているので互換性は維持できると思う
  • 私見だが、SunはJavaのコア(JDK)をオープンソース化した方がメリットが多いと思う

_ CNETにトラックバックが届かない

上のCNET記事にトラックバックしようとしたが失敗したようだ。 トラックバックリストに反映されない。www.rubyist.netの引っ越しのときにトラックバック機能に問題が発生したか、とも思ったが、「Matzにっき」自身へのトラックバックは成功する。なんだろう?

_ Sunと互換性

元々Sunって会社は「互換性命」というタイプの会社じゃない。

ハードウェアについて見れば、Sun3(モトローラ)からSun4(Sparc)では全然違っていた。 同じSparcアーキテクチャでもsun4cとかsun4mとかあって互換性はなかったように思う。 Sun1やSun2は実機を見たことはないけど、ハードウェア互換性があったとは思えない。

ソフトウェア(OS)はもっと顕著で、まるっきりBSDだったSunOS 3.xから、 なんとなくSystem V風味のSunOS 4.xに変わった時には、私を含めて多くの開発者が不満を覚えたものだ。 しかも、SunOS 4.xはバージョンが進むたびにBSDから遠ざかっていった。

しかし、我々は甘かった。Solaris(SunOS 5.x)が登場した時に、 SunOS 4.xはまだBSDっぽかったんだなあとふりかえることになろうとは、想像もできなかったのだから。

私はかつてそういう「酷い目」にあったものだから、Sunから「互換性重視」という言葉を聞いて、 どういう風に思ったらよいのか迷っている。

  • Sunも成長したのだなあ
  • 口先ばっかり。ほんとは互換性なんてどうでもいいんでしょ

どうしても後者の受け取り方をしてしまうのか恨み節だろうか。

ま、私自身はほんとは互換性をそんなに重視するヒトじゃないし*1、 SunOSの変化についての文句は「互換性がなくなったから」じゃなくて、 「自分の好みじゃない方に変化したから」なんだけど。

互換性と言えばIBMだろう。ソフトウェアプラットフォームとしての汎用機の寿命は半端じゃない。 使いたいかと言われれば、それは違うと答えるけど。

*1  Rubyを見れば分かるか


«前の日記(2004年07月05日) 最新 次の日記(2004年07月07日)» 編集