2014-01-27

Clang VS 自由ソフトウェア

オープンソースで有名なEric S. Raymondが、自由ソフトウェアで有名なRichard Stallmanに、GCCのアンチプラグインポリシーについて突っ込んでいる。

GCCは、長年、コンパイラーのモジュール化を政治的な理由で行っていなかった。もし、例えばパーサーや意味解析だけを分離して使えるようにしたり、内部表現を規格化したりしてしまうと、GCCの一部が、不自由なソフトウェアに取り込まれたり、あるいは不自由なソフトウェアがGCCのプラグインという形で入り込むことになってしまう。これは、利用者の自由を第一とする自由ソフトウェアにとって、悪夢のような未来である。そのような未来を未然に防ぐために、政治的な理由で、GCCのはプラグインに反対するポリシーを採用している。もし、GCCを改良したければ、自由なソフトウェアとなるべきなのだ。そして、GCCのプロジェクトに参加するべきなのだ。

とはいえ、コンパイラーが機能毎に分割されていないのは不便だ。たとえば、高度なコード補完やリファクタリングのために、コンパイラーのうちのフロントエンド部分だけをテキストエディターから使いたいこともあるだろう。コンパイラーの内部表現が規格化されていれば、内部表現を生成して、そこから先のターゲット別のコード生成はコンパイラーに任せるなどといった使い方ができる。LLVMのコードは、そのような利用も、ライセンス的にも、コード的にも、簡単にできるようになっている。

GCCが市場を独占していた頃はよかったが、今やLLVMが登場し、驚異的な開発速度でGCCを追い上げている。もはやC++の規格準拠度では、完全にGCCを追い抜いている。これはGCCにとって脅威である。以前ならば、GCCでなければ事実上できなかったことが、LLVMでできるようになってきているのだ。しかも、LLVMはオープンソースという間違った目的を持っている。オープンソースと称する浅はかな思想は、利用者の自由を守ることに価値を見出さない。ああ、自由なソフトウェアの未来は暗い。

Eric S. Raymond - clang and FSF's strategy

Clangと自由ソフトウェア財団の戦略

From: esr at thyrsus dot com (Eric S. Raymond)
To: rms at gnu dot org, gcc at gcc dot gnu dot org, emacs-devel at gnu dot org
Date: Tue, 21 Jan 2014 15:19:49 -0500 (EST)
Subject: clang and FSF's strategy
Authentication-results: sourceware.org; auth=none

David Kastrupの最近のemacs-develへの質問により、私は前々から考えていた、もっとより本質的な質問を開こうと思う。一体、自由ソフトウェア財団の目的は、GCCを技術的に制限することにより達せられるものだろうか。

この問題には個人的にも興味がある。私は自由ソフトウェア財団のプロパガンダには、目的を阻害するという点で、反対している。オープンソースかつユーザーがコントロールするというソフトウェアエコシステムに、私は賛同するし、また個人的にも達成をしようと務めてきたところである。一方、自由ソフトウェア財団の遺物は良質の武器であり、GCCは確かに武器庫の中のもっと巨大な大砲だ。

私はGCCに自由ソフトウェア財団がやりたいことをやってもらいたい。自由とオープン性を啓蒙し、プロプライエタリな支配を打破し、開発ツールチェインのベンダーロックインを防ぐのだ。この目的にあたって、アンチプラグインポリシーが、いまだに妥当な方法かについて考えるべき時に来ている。

この問題には、Clangの存在が大きい。Clang開発者は、公の場で、自由ソフトウェア財団のアンチプラグインポリシーが障害であると堂々と発言していて、実際それが彼らの作業の意欲にもなっているのだ。しかも、彼らの進捗たるやすごい。今日、Clangは製品品質のツールに達し、GCCほど高機能ではないにせよ、GCCより優れた機能も提供している。例えば、Clangのエラーメッセージは、はるかに優れている。

Clang開発者は、彼らの目的はGCCを時代遅れにしてゴミ箱行きの遺物にするものである、とは言っていない。しかし、彼らの目標は、疑いようなくそこにある。3年から5年の時間で考えると、GCCの独占に対する現実の脅威となってくるだろう。

あるいは、ClangがGCCを王座から蹴り落としたら、私の目標は達成に近づくとも言える。つまり、自由ソフトウェア財団のクソな営業上の理由により、進歩を妨げて、その結果として地位を脅かされるわけなのだ。

今のところ、私はこの可能性を無視する。思うに、私としてはむしろ、GCCとClangの間で競争を促し、両方共強化させて、オープンソースツールチェイン全体を力を強めたほうがいいのだろう。

故に、自由ソフトウェア財団は、もはや自由なコンパイラーに対するプロプライエタリなベンダーのプラグインを防ぐことはできないのだ。いまや対抗馬が出てきてしまったのだ。アンチプラグインポリシーは、もはや戦略として機能しない。

また思うに、Microsoftを除いては、もはやプロプライエタリなコンパイラーを書きたいとおもうところなんて存在しないということだ。GCCはこの戦争には勝った。オープンソースのツールチェインをサポートすることによる市場の利点は、もう十分に理解されたので、新しいプロセッサーは当然のごとくサポートしているではないか。

そうであれば、GCCの制限を取っ払って、Clangと同じように、開発者の興味をひくようにするのが自然ではないのか?

Clang以前、まだGCCが市場を独占していた頃、このような制限は機能したのかもしれない。異論はある。もはや過ぎ去りし日のことを議論してもしょうがない。今や、そのような制限は無意味なものとなり、GCCの開発を妨げ、Clangの増長を許すばかりだ。

GCCには強みがたくさんある。特に、マルチプラットフォームとクロスプラットフォームサポートにおいてだ。自由ソフトウェア財団は完全にコードを自由にし、政治信条による制限を廃止し、プラグインによる豊富なエコシステムを推奨しなければならない。GCC, Clang, その他のコンパイラーを、単純に技術的な利点でのみ競争させようではないか。

過去15年の歴史が十分に実証しただろう。プロプライエタリなベンダーがオープンソースツールと、同じ土台で戦おうとすると、砂をかむことになると。しかも、彼らはその事実を、飛散な失敗から学んでいて、もはや再び試みようともしないだろう。研究費はもっと有益に費やせるのだ。

まあ、私は誰が勝とうがどうでもいい。GCCだろうとClangだろうと、私の目的は果たせるわけだ。私はどちらのツールも可能な限り最高になってほしい。そして、自由ソフトウェア財団が変化を認識して、時代の流れに追いついて欲しい。

Eric S. Raymond

There's a tendency today to absolve individuals of moral responsibility and treat them as victims of social circumstance. You buy that, you pay with your soul.

-Tom Robbins, Still Life with Woodpecker

Richard Stallman - Re: clang vs free software

Re: clang vs free software

From: Richard Stallman <rms at gnu dot org>
To: gcc at gcc dot gnu dot org
Date: Fri, 24 Jan 2014 09:54:13 -0500
Subject: Re: clang vs free software
Authentication-results: sourceware.org; auth=none
References: <CAJnXXoi2MLpZWxOxknR=mNR91JdZcHrKRsqYZSWY373fvwxObg at mail dot gmail dot com> <87eh439w1n dot fsf at uwakimon dot sk dot tsukuba dot ac dot jp> <CAJnXXojjSAWL8cqZp0X16xa81R73huywtTS90p6O3CpRaPOiDQ at mail dot gmail dot com> <jwvwqhu8zcg dot fsf-monnier+emacs at gnu dot org> <87ha8yqvup dot fsf at engster dot org> <E1W5cXI-0000j4-8x at fencepost dot gnu dot org> <CAJnXXoiuzZhjDGpvXY7psee=+bXn1rB+GdELYP0FS0CuWPqYeQ at mail dot gmail dot com> <E1W6HwP-0001WU-Tg at fencepost dot gnu dot org> <87r47zezcc dot fsf at fencepost dot gnu dot org> <m2eh3ykc3y dot fsf at gmail dot com> <20140123174934 dot GA10933 at thyrsus dot com>
Reply-to: rms at gnu dot org

[[[ 私のメールを読むNSAとFBIの職員に告ぐ ]]]
[[[ 米国憲法を内外の敵より守るために     ]]]
[[[ 諸君はSnowdenの道を辿らざるべからず  ]]]

自由ソフトウェア運動で、我々はコンピューターのユーザーの自由を啓蒙してきた。オープンソースの価値である単なる「より良いコード」という究極の目的と、自由ソフトウェアの価値は、根本的に異なるものである。もし、GCCが自由なコンパイラーから不自由なコンパイラーのプラットフォームに成り下がった場合、もはや自由という目的を果たすことはできない。故に、我々はそのような自体を阻止せずんばあらず。

自由ソフトウェアとオープンソースの詳細な違いについては、 http://www.gnu.org/philosophy/open-source-misses-the-point.htmlを参照。また http://thebaffler.com/past/the_meme_hustlerのEvgeny Morozovの全記事も参照。

ClangとLLVM開発者は、我々と共通の価値と目的を共有していないため、別の結論に達したのだ。自由を守るという我らの目的に彼らが反対する理由は、単に不便であるというだけであり、彼らにとっても必要である事柄を認識していないか、あるいはそもそも気にしていないのだ。おそらく、奴らは自分達の仕事を、「オープンソース」などと呼称し、自由についてはあまり論じていないのだろう。奴らはAppleという、自社のapp storeは不自由なソフトウェアであることを要求するほど自由を忌み嫌う企業から支援を受けている。(*)

不自由なコンパイラーがLLVMを土台にしているのは、私の正しさである、危険が現実のものであるということを如実に証明している。もし、私がGCCを不自由な組み合わせで使えるように「オープン」にしたならば、それは敗北を防ぐ助けにはならない。むしろ、敗北を早めるだけだ。

GCCが、他の技術的に優れていて、しかも同じぐらい自由を守るコンパイラーによって置き換えられたのならば、個人的には悲しいことであるが、私はコミュニティの進歩に歓喜するであろう。LLVMの存在は、我々コミュニティにとっては、退化である。なぜならば、LLVMはコピーレフトではなく、不自由コンパイラーの土台として使われ得るからである。つあmり、LLVMへの貢献は、我々の助けになるのと同様に、プロプライエタリなソフトウェアの助けにもなってしまうのだ。

退化の理由は、非コピーレフトコンパイラーが存在することにより、不自由コンパイラーの土台となりうるからである。LLVMにしろGCCにしろその他のものにしろ、コンパイラー自体は問題ではないのだ。GCCをそのような目的に提供することは、タオルを投げ入れるようなもんドア。もし、そのことによってGCCが「勝利」するのであれば、勝利など虚しい。なぜならば、本当に重要である、利用者の自由という点では、勝利していないからだ。

もし、読者は、我々がこの点で「妥協」しなければならないと考えるのであれば、http://www.gnu.org/philosophy/compromise.htmlを参照。

我々を助けるが、敵の助けにはならない唯一のコードは、コピーレフトなコードである。許諾的なライセンスで提供される自由ソフトウェアは、我々のためにはなるが、敵のためにもなってしまうのだ。もし、自分の作業に自由の利点を得たいならば、利用可能な武器を使うべきだ。すなわち、コードをコピーレフトにするのだ。私は、LLVMの主要アドオンの開発をしている者達に、コードをGNU GPL version 3 or laterで公開することを推奨する。

もし、GNUプロジェクトの目的を変更することを議論したいのであれば、適切な議論場所はgnu-misc-discuss@gnu.orgである。そちらに移動してもらいたい。

(*): もしバイナリが公開されたソースコードから生成されたものであっても、ソースコードの改変版から生成さればバイナリをインストールすることはできない。たとえソースコードが自由であっても、バイナリはプロプライエタリなのだ( http://www.gnu.org/philosophy/free-sw.htmlを参照)。Appleのapp storeのバイナリは、自由なソースコードとして公開することはできるかも知れないが、AppleのルールとAppleのDRMにより、バイナリは自由と離れないのだ。

--
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org www.gnu.org
Skype: ありえん! そいつは不自由な(自由を否定している)ソフトウェアだ。
Ekigaとか、普通の電話を使え。

2 comments:

Anonymous said...

Raymondの言っている事は正しい。
だからといってStallmanが間違っているとは限らない。
Stallmanの言っている事も正しいとおもう。
長い目で見るとどっちが正しいんだろうか。

リチャード・ストールマンは常に正しかった
という事になりそうな気がする。

OpenBSDのコンパイラーであったように、Stallman時代のGCCを懐かしむ事になるかもしれない。

Anonymous said...

BSD の人たちは、かつて、自分たちのソースを乗っ取られちゃったことを、忘れちゃったんですかね?また、のっとられるよ。きっと。