ライセンス

dieさんのところ(http://www.hizum.net/01misc/zz000158.read)に続いてしまいました。

 dieさんのおっしゃることを平たく言うと「open sourceという言葉は狭義の意味で使うべきで、それ以外に使うのは意味を希釈するのでよろしくない」というものかと思います。ただ、http://www.opensource.org/advocacy/faq.phpにある

We strongly encourage everyone who cares about open software to use the term
only to describe licenses that conform to the OSD,
or software distributed under such licenses

のところにあるように、「必ずしもOSDに合致しなくても許される」というものかなあとは思います。

 これはしばらく前にあった「オブジェクト指向」の話に似ていますよね。オブジェクト指向のほうの僕の立場としては、「別にC++Javaを意味する言葉として使うなとは言わないが、最初はちょっと毛色の違うものを指す言葉として生まれたし、今でもそういう意味で使いたがっている人もいる、ということは知っておいてほしい」というものです。"open source"のほうは、技術用語というよりはマーケティング用語ということですし、もともとopenなことを志向している、という点からもドグマ的になるのは避けたいものの、元の意図は汲んで使いたいと思います。

用語

あんまり関係ないけど、JITコンパイラの"JIT"という言葉も微妙なんですよね。JITという言葉以前に"dynamic translation"の技術は存在して(存在していただけではなくて安定して広く使われていた)のに、現在かなり多くの人が、JITとはJavaが生んだ技術だと思っているような気はします。dynamic translationの人と話すと、別に"Just In Time"(ぎりぎり間に合うように)コンパイルしているわけではなくて、より正しいタイミングでマシンコードにしているだけなのだからJITというのはおかしいんだけどね、ということを言う人もいます。

ライセンス

ああ、ライセンス話。ついに。

SqLの精神は、http://minnow.cc.gatech.edu/squeak/3363にあるように、完全に再配布可能、ビジネスも可能、変更はコア部分に対する変更は公開を義務付け(これは強い)、著作権は勿論作者に認められている、というように「オープンソースの精神」に完全に合致しています。別に、なんちゃってオープンソースを騙って、ハッカーコミュニティーにいい顔だけしておいて囲い込み的ビジネスに役立てようというような話ではないです(もちろん)。ちなみに、Squeak LicenseそのものはOSDより前からありますので、後から定義されたものの定義にあわせるのは現実問題として大変です。97年以降は開発拠点となっていた会社は変わっていましたし。

SqLのライセンスに関する話はhttp://minnow.cc.gatech.edu/squeak/159にまとまっています。とりあえずなるべく簡単に概要だけ。ちなみに"Open Source"と"open source"の話はここに書いてあります。「2004年秋」の話とwww.opensource.orgのFAQの改定時期との関係は良くわかりません。

 OSDと相容れないのは3点だといわれています。それらは、フォントと、賠償責任条項と、禁輸条項です。

フォントはもはや配布物に入っていない以上無関係なのですが、ライセンスを書き換えてくれないので残ってしまっています。

 賠償責任条項は、ある人(A)がSqueakを使って銀行破りをした場合、銀行がAppleを訴えたら、Appleにかかった訴訟費用はAが負担しなくてはいけない、というものです。ほとんどありえない仮定の元にかかれた条文で、会社(Apple)としてはとりあえず入れとけ、というような定義ですが、OSDには合致しないらしいです。

 禁輸条項は、合衆国政府が定める戦略物資禁輸措置国に輸出してはいけない、というもので、使用範囲を限る以上OSDには合致しません。が、アメリカの会社が会社としてOSDに合致するオープンソースな物を作ったとして、「これはOSDにかなったOSSだから」と言って、北朝鮮キューバで軍事的に使われることが判っていながらコピーをさせたりサポートしたりしたら、OSIがなんと言おうと合衆国政府からは訴えられます。まだそういうケースが裁判沙汰になったことがない以上、「OSDにのっとっているから安全」というようなことは裁判の場ではまったく意味を成さない、と言う可能性はあるわけです。(が、もちろん言語処理系をダウンロードさせただけなら政府に訴えられることはないだろう、と言えます)。

といわけで、後の2項は会社としてオープンソースプロジェクトをやっているなら本来当然のようにライセンス条項に入っていてもおかしくないものだとも言えます。これらを字義通りに解釈して、「定義に合致していないからオープンとはいえない」というのは、ちょっとドグマ的過ぎです(dieさんが「オープンとは言えない」と言っているわけではないのは承知しています)。

dieさんに紹介してもらったhttp://japan.linux.com/opensource/03/06/01/0234213.shtmlも読みました。バザール型開発に与える影響、と言うことで言えば負の影響がありえない、と言って良いと思います(実際成功していますし)。また、「Squeakオープンソースである」、と言うのが、この文で想定している「敵」を利する行動とはちょっと思いがたいですね。

最終的には、やっぱり"open source"と"Open Source"の違いはあって、Squeakに関しては、"open source"と言う言葉は使っても良いだろう、というのが考え直した後の結論ではあります。(あ、でもGoogleしたら俺も昔"Open Source"と書いていたな^^;)。多分「OSD準拠ではないがオープンソース」というのが良いのかもしれません。

Smalltalk-72

id:sumimな鷲見さんにまで書かれてしまったからには、もうちょっと書こう。

Smalltalk-72の面白いのは、シンタックスを拡張し、評価順などもメソッド定義ごとに帰られるというところですね。
http://lists.squeakfoundation.org/pipermail/squeak-dev/2005-February/088581.html
に匂わせておいた物をどのくらいの人がわかってくれたのかは不明ですが、Squeakにある#>>メソッド(クラスオブジェクトをレシーバーにして、シンボルを引数にするとコンパイルメソッドが帰ってくる)、でSmalltalk-72のようなことができれば、

Object>>#printString

と書く代わりに>>の定義の中で「次はシンボルだと思って一トークン読め」と書いておくと、

Object>>printString

と書いてちゃんと動くようになるわけです。

というか、見直したらhttp://d.hatena.ne.jp/sumim/20040404#p1が一番詳しかったのです。ごめんなさい、鷲見さん。