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

Matzにっき


2004年07月07日 七夕 [長年日記]

_ [OSS]オープンソースによる互換性の喪失

mimiさんからのツッコミをいただいたが、 十分に理解できた自信がない。

オープンソース化されれば、差別化、重視になるでしょう。
一部のコミュニティが互換性を無視することに対してコミットして、互換性は失われる方向になる。
オープンソース化すると、誰にも互換性の維持はできない。
と考えています。

分からなかったのは、

  • 「差別化、重視」とは、誰が、何を、どのように、行うことを想定しているのか。
  • 「コミュニティの一部が互換性を無視することに対してコミットする」とは、 誰が、何を、どのように、行うことを想定しているのか。

という点だ。

前者についていえば、あるオープンソースプロジェクトに対して「差別化を行う」ということは、 差別化できる存在を新たに作る、すなわちフォークを意味すると思われる。 それ以外の差別化はオープンソースであるなしに関らず発生するからだ。 しかし、実際にはフォークはめったに起きないし、 起きたとしてもどちらのプロジェクトが「正当」であるかは明らかなので、 互換性を重視する人がどちらを選ぶかは明白だ。

後者については、「コミュニティの一部が互換性を無視することに対してコミットする」という表現は、 やはりフォークを想起させる。 たとえオープンソースであろうとも、プロジェクト管理者(JavaならSun)が望まない修正は取り込まれないし、 ローカルパッチは決して広く受け入れられないからだ。 結局はフォークを心配しているのね。 しかし、上に述べたように、フォークは重大な問題ではありえない。

想定できる問題として「互換性はないが、より優れたフォーク」が登場した場合に 発生しうる混乱があるが、これは心配しなくてもいいんじゃないかなあ。 フォークが発生したとしても、まずフォークした方は長期的には生存できないと思う。 Sunやその他の人々がJDKに注力しているリソースを考えると、 それを越えるのは容易ではないし、そんなことを考えるのはマイクロソフトくらいだ。

それもArtisticライセンスのようにプログラム名を担保するとか、登録商標を駆使するとかで、 少なくとも「Javaの名前」は守れるだろう。 名前が違ってしまえば、それは「Javaに似たなにか」であり、 違うものであるのでそもそも互換性は問題ではない(それがC#か)。

多くのオープンソースプロジェクトが互換性を重視していないのは事実だが、 それはそれだけのコストを払っていない(払いたくない)からであって、 オープンソースだからではない。 Sunは互換性維持のためにこれまで十分コストを払ってきたと思うし、 その努力にはオープンソース化してもあいかわらず有効だと思う。

と、いうことで楽観的な私の結論は、

  • オープンソースかどうかと、互換性の維持のコストはほとんど関係ない

である。

mimiさんには「オープンソース化すると、誰にも互換性の維持はできない」という結論を出す 論拠なり、実例なりがあるのだろうか。 Javaくらいのプロジェクトだとフォークが頻繁に起きることが予想できる理由がある、とか。

それから、現状のJDKはGosling自身の言葉のように

「われわれは、(Javaの)ソースコードをコミュニティーに提供することで、多大な恩恵を受けている。唯一の難点は、ライセンス条件が一部の人が望むより、少し面倒だという点だ」

であり、ソースコードは入手可能で、ライセンス上の問題以外はオープンソースとさして変わりはない。 もっとも、その問題が重要だと考える「開発者」は多いだろう。 逆に上記のHotWiredが声を聞いた「ユーザ」にとっては技術上の些細な点に過ぎない。

私は、この「ライセンス上の面倒」の解決は、 Sunにとって大きなメリットがあり、デメリットはほとんどないのではないか、 と私は思うんだけど、どうなんだろうねえ。


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