JavaをめぐるオラクルとASFのイザコザをパースしてみる

http://en.wikipedia.org/wiki/Technology_Compatibility_Kitの「Controversy」の欄にこうある:

In spite of the Java Specification Participation Agreement, Oracle have denied Java implementors a FOSS-compatible license to the TCK. On November 9, 2010, the Apache Software Foundation threatened to withdraw from the Java Community Process if they are not granted a TCK license for Apache Harmony without additional restrictions.[6]

Java Specification Participation Agreement」に反してオラクルはJavaの実装者に対しFOSS-compatibleなTCKのライセンスの提供を拒んだ。2010年11月9日にApache Software FoundationはApache Harmonyに対し追加の制約のないTCKラインセンスが認められなければJava Community Processからの脱退する意思のあることを示した。

バックグラウンド

テングが理解しているところの事実は:

  • 実装をJava規格に準じている、あるいは互換性のあるものと呼ぶためにはTCKを通らなければならい。
  • しかし、TCKを入手するためには(その対象となるJava実装)ソフトの稼働する環境を制限する「limited field of use」という規約に同意しなければならない。
  • これはモバイル機器での稼働を許さない。
  • ASFはHarmonyを作ったが、これをJava互換ソフトと呼ぶにはユーザの稼働環境を制限するオープンソースではありえあないライセンスにしなければならない。

解釈

SunはOpenJDKをGPLでリリースしたが、モバイルでライセンスフィーを取るためか、Java自体でなく、そのテストキットで稼働環境に制約をつけたと見える。GPLでリリースして世界にJavaオープンソース性を確心させる。一方で、ビジネス上、依存コンポーネントであるTCKで制約を加える。上手く考えたものだ。

これに対して、ASF同様批判的だったオラクルは、Sun買収したら掌を返したようにTCK制約路線の姿勢を固めた。驚くべきことではないが、正当化できる挙動ではない。そんな状況にアタマにきたASFが辞めてやる!と気炎を吐くのも無理はない。

疑問

Clojureやってみようかな…と思っている以外はJavaには縁がないテングには素朴な質問がある: TCKは「Javaに互換性のあるものと」と呼ぶために必要なんだよな? じゃあ、Javaに互換性のあると言わなかったらOracleから解放されるわけだよね? つまり、ASFはHarmonyをJavaモドキと位置付ければいいだけの話じゃない? でも「エンタープライズ」市場では太鼓判が必須なんだろうな。
あとGoogleは実際Harmony+DalvikでJavaと一線を画したにもかかわらずスーされているし。TCKを通るとOpenJDKのGPLが効いて、こういう攻撃からも守られるのかな。逆に言えば、競争相手の実装をGPLの安全地帯に逃がないために、TCKと「limited field of use」なる罠をしかけたってことになる? よくわからん。
やはり大企業絡み言語は恐い。