Monoを使うことの是非

MonoやPortable.NET*1といった.NETのオープンソース実装は,MSの特許を侵害しているのではないかという意見があります.

いちおう.NETにおけるアプリケーション実行基盤である共通言語基盤 (CLI; Common Language Infrastructure) とC#の仕様はそれぞれECMA-334とECMA-335で標準化されています.ですが,Visual C#にはECMA-334で標準化されていない言語機能がいくつかあります*2

標準化されている機能についてはサードパーティが勝手に実装するのをMSはとめないことになっていて,CLIについてはMSがシェアードソースなリファレンス実装も提供しています.では,標準化されていない機能も実装しているMonoなどの正当性はどうなんでしょう?Monoはこのまま使い続けても大丈夫なんでしょうか?

実際のところ,Monoに特許侵害があろうともMSは黙認し続けるでしょう.MSがXamarin (Monoの商用バージョン) 用のライブラリを提供していることが理由の一つです.しかしながら,MonoやPortable.NETを認める声明を直接出してはいません.


そんなこんなで特許問題への懸念が払拭しきれないMonoですが,それでも使い続けると宣言したオープンソースプロジェクトがあります.GNOMEが一例です.

GNOMEプロジェクトを間接的な影響下に置いていると思われるフリーソフトウェア界の教祖様はMonoがお嫌だそうですが,GNOMEのDave Nearyは「Monoに関して私がRMSに反対する理由」と題されたブログ記事で特許に対する彼のスタンスを明らかにしています.以下に抄訳を添えて抜粋引用します.

I’m not arguing that we should encourage its use either, but I fundamentally disagree with discouraging someone from pursuing a technology choice because of the threat of patents. In this particular case, the law is an ass. The patent system in the United States is out of control and dysfunctional, and it is bringing the rest of the world down with it. The time has come to take a stand and say “We don’t care about patents. We’re just not going to think about them. Sue us if you want.”

Monoの利用を促すべきだとも言っているわけではないが,特許侵害の恐れがあるからといって人がある技術を追求することに口出しすることには基本的に私は反対だ.この場合に限って,法律はカスだ.米国の特許システムはその統制を失って機能不全に陥っていて,他国の足を引っ張っている.「わたしたちは特許を気にしない.考えないようにする.訴えたければお好きに」という立場をとる時が来たのだ.

In all of the projects that I have been involved in over the years, patent fears have had a negative affect on developer productivity and morale.

私が数年来関わってきたプロジェクトの全てにおいて,特許問題への懸念は開発者の生産性と士気に悪影響をもたらし続けている.

訳が適当になっていますが,彼は諸々の理由からの「特許制度を完全に無視しろ」という少々危なげな主張をもって,Monoを忌避することに反対しています.

彼はこの記事の最後に次のように綴っています.

So if you want to write a killer app in Mono, then don’t let anyone tell you otherwise. If you build it, they will come.

だからMonoでキラーアプリを作りたいなら,反対する声に耳を貸すな.作ってしまえば文句は出まい.

なんともかっこいい激励のセリフですが,キラーアプリが存在することで特許問題を無視して人が集まるのかはかなり疑問です.本当にそうならばかなり興味深い.

*1:DotGNUの一部.私は寡聞にしてPortable.NETの存在を最近まで知りませんでした.

*2:例えば,varキーワードによる変数の型推論やLINQなどのファンシーな機能はECMA-334には載っていません.標準化されているのはMS実装のサブセットのみです.