ラベル open source の投稿を表示しています。 すべての投稿を表示
ラベル open source の投稿を表示しています。 すべての投稿を表示

2010年1月9日土曜日

オープンソースとフリーソフトウェアは何が違うのか


「オープンソース」と「フリーソフトウェア」。この二つは似ているようで決定的に違う。

「オープンソース」は言葉として「ソースが見られる」というただ一つの意味しか持ち得ないが、「フリーソフトウェア」はプログラムを使う人の「自由」を求める言葉だ。

Communications of ACMにRichard Stallmanが「オープンソースではだめなんだ」と訴える記事を書いている。ここで言う「フリー」とは、「無料(タダ)」という意味では決してない。ソフトウェアを使う自由、コードについて学び、変更する自由、そして変更の有無に関わらずソフトウェアのコピーを配布する自由のことだ。

1983年から始まったフリーソフトウェアを啓蒙する運動のおかげで、GNUのツール群や現在のLinuxがあり、これなしには今のGoogleの姿もなかっただろう。自由に使えるOS無しには大規模クラスタの運用などとても叶わないし、検索エンジンなどを通してGoogleが世の中に与えている社会的価値はとてつもなく大きい。「フリーソフトウェア」が目指すのはそういった「社会的な価値」の向上だ。オープンソース開発では、ソースを公開することで広くユーザー・開発者を集めソフトウェアの品質向上につなげているが、必ずしもそれが「フリーソフトウェア」の目標というわけではない。(なぜならオープンソースでなくても、品質の良い製品を作って売り続けている会社があることは皆様もよく知っているはずだ)

僕も勘違いしていたのだが、GNU Public License (GPL)を使うのが「フリーソフトウェア」というのも誤解である。GPLとは「ソフトウェアを使う、ソースコードを見る、改変する、再配布する自由」を保証するライセンスで、GPLでライセンスされたソフトウェアを使ったコードは必ずGPLでライセンスしなくてはいけないという制限を課している。企業ではこの強い制限を嫌って、より制約の緩いオープンソースライセンスであるBSDやApache Licenseなどを使うこともある。しかし、GPLはあくまで「フリーソフトウェア」の概念を普及するための手段であって、他のオープンソースライセンスを使っていても「フリーソフトウェア」とみなすことはできる。

「フリーソフトウェア」の敵はあくまで「使う人の自由を制限する独占的なソフトウェア」だ。いくらオープンソースであっても、DRM(メディアのコピーを制限するプログラム)のようなものは、使う人の自由を制限するので決して「フリーソフトウェア」にはなりえない。

「フリーソフトウェア」が目指すものはいわば「表現の自由 (free speech)」であって、決して作ったものを「無料(タダ)でよこせ(free beer)」と要求することではない。確かに現実問題として「Eric Sink on the Business of Software」にもあるように、ソースを公開してビジネスを成立させるのは、不可能ではないものの、非常に難しくなる。しかしながら、作ったプログラムを独占して目先の利益を追求することは、より長い目で見るともっと大きな社会的価値を逃しているのかもしれない。

今まで「フリーソフトウェア」運動は、単にMicrosoftのような企業に反抗するためだけのものかと思っていたが、今回のStallmanの記事を読んで随分印象が変わった。「自由」であることの価値を認めるならば、「オープンソース」と言う代わりに「フリーソフトウェア」という言葉を使うことで、より正確な意思表示ができるように思う。

2007年2月13日火曜日

Microsoft OfficeかOpen Officeか

僕自身、文書作成には、プログラマ御用達のEmacs (Meadow)を使ってテキストを作成することがほとんどなのですが、見た目にスタイリッシュな文章を作成しなくてはいけないこともあります。

ただ、一般に使われるMicrosoft Office製品は、英語を書くときには文法間違いやスペルミスを発見してくれて強力なツールなのですが、日本語文書を作成するときには、ソフトウェアの価格ほどメリットを感じないことが多いです。それでも、周りのみんなが使っているから、自分も使わなくてはという強迫めいたものがあります。重要な事務書類をWord/Excelで作成してください、ということが多く、使わざるをえないのです。

以前、NHKの特集で、官公庁がMicrosoft OfficeとWindowsから、コスト削減のため無料でまかなえるOpenOfficeとLinuxに乗り換えようとしているという話がありました。 でも、既存の文書のレイアウトが崩れてしまうなどの理由で、Windowsマシンも残しているとか。

特定のOSを選ぶ理由は、やはりアプリケーションにあります。今まで使えたアプリケーションが使えなくなるなら、それを上回る新しい魅力がないと、OSを切り替える気も起きません。

つまり、もうひとつ重要な観点があって、データを何年残しておくか?ということ考える必要があります。Microsoftは財務体力を得た会社だから、Vistaの普及が思うように進まなくて失敗したとしても、数年でつぶれるような会社ではないです。だから、Office製品が突如死に絶えてOfficeのデータが使えなくなることはないでしょう。でも、SunのCEOであるJonathan Schwaltz氏が指摘しているように、Web上で使えるGoogle Docsや、フリーのOpen Officeのように他に魅力的な文書作成ソフトが出てきたときに、Open Document Format (ODF)のような公開されている仕様で、文章を作成しておくと切り替えがスムーズにできます。OSが代わってもデータを生かしておくことができるのです。

スタイル(自分で登録したデザイン)を作成できて、アウトラインを作成できるという意味では、もう、無料のOpenOfficeでも、Wordと同等、あるいはそれ以上の機能が備わっていて、問題なく使用できます。PDFに変換することもできるので、PDF形式で相手に渡せば、Wordや OpenOfficeをインストールしてなくてもメッセージを伝えることができます。プレゼンテーション資料も、Open Office Impressで、見た目に遜色のないもの作れるので、PowerPointいらずです。今の段階では、PowerPointの方が動作が軽いのですが、スライドをPDFに変換してAcrobatでプレゼンすれば、動作も軽快ですし、OS依存部分を減らせるので、配布するときも喜ばれます。

MacOS Xでは、X上で動作するOpenOfficeを使うより、NeoOfficeを使うほうが動作が快適なようです。1万円を払う気があるなら、iWorkを購入して、PagesやKeynoteを使う方が最初から見た目のよいものが作れるし快適です。ただ、こちらは残念ながらODFには対応していないし、連携する表計算やデータベースソフトがないので、OpenOffice/NeoOffice、あるいはMicrosoft Excel, Accessのお世話になります。PDFやRTF(rich text format), Word形式の文書は作成できるんですけど。

表計算に関しては、簡単な計算式が書けて、ピボットテーブルが作成できればいいと思うのですが、それも、Excel, Open Office Calcのどちらでもできるようになりました。

ただ、Excelが断然優れているのは、グラフ作成機能でしょう。世の中には、グラフを作成する無料のツール(GnuPlotなど)もありますが、使いこなすまでの労力を考えるとExcelに軍配が上がってしまうのは残念。MacのPagesもなかなかきれいなグラフは作れます。

2006年9月14日木曜日

15万行のプログラミング

ものは試しに、今自分が作っているシステムのコード行数をカウントしてみました。

C++で7万行超えている…。

えーと、1日に1000行もプログラミングするのなんて、無理ですよね。既存のコードの修正もあるので、のらりくらりと1日200行くらい追加されると見積もって、350日分。ちょうど1年分。 うーん。たいしたこと有るような、たいしたこと無いような。

一番古いファイルは何かと見てみると、2003年4月28日。CVSから、Subversionを使ってソースコードを管理するように変えたのがこのあたりなのかも。

違うプロジェクトで作ったJavaのコード行数を見てみると、8万行ありました。計15万行。これで2年分ですね。

書いたコードを廃棄することなんてよくやるから、単純にコードを書いた量だけだったらもっとあるんでしょう。

ちなみに、BerkeleyDBのソースコードはおよそ19万行、xerces-cは30万行でした。sqliteは7万行ですね。PostgreSQLは70万行だとか。 まぁ、CのコードはC++と比べて大きくなりがち。

これだけ書いていて、自分の作ったシステムがまだつぎはぎだらけなのは、研究結果が優先になってしまうことで、機能優先ではないというところかな。 機能優先にするなら起業しないと金銭的にやっていけない。

年間10万行書くには、1日当たり、400行ですね(休日等を除いて1年を250日として計算)。調子がいいとできるんだろうけど。3時間経ってもバグ取りで10行しか進まないということがありますから…。企業のプログラマだと、これくらい書くと聞いたことがあります。仕様を先に決めてしまうから書きやすいのかもしれないけれど。

あと、経験とともにコード数って短くなるのです。コードを短くするための自作ライブラリも増えるし、人の作ったライブラリの使い方を習得して、ますますコードが簡潔になったり。だから、コードの行数って技術力を表すものではないんだけれど、コード量と実際の書き方をちらっと見ると、プログラミングの経験値は推し量ることができます。

まぁ、これだけ書いたんだから、自分のシステムもそろそろ世の中にちゃんと送り出してあげないと。

2006年6月4日日曜日

Leo's Chronicle: Ruby on Rails 30分 Hacking

Leo's Chronicle: Ruby on Rails 30分 Hacking の日時、会場が決まりました。

Seminar: Ruby on Rails 30 分 Hacking
日時 平成 18 年 6月6日(火)午後 4 時 30 分~
場所 東京大学本郷キャンパス 理学部 7 号館 102 室

どのような人が集まってくるのかな。まぁ、頑張ります。

2006年5月31日水曜日

Ruby on Rails 30分 Hacking

お題はもちろん「キューピー3分クッキング」のもじりです。
次回の情報科学を学んでいる人向けのなんでもセミナーで発表&デモを行う予定です。時間・場所等の詳細は追って紹介します。

「Ruby on Rails 30分 Hacking」

概要
Ruby on RailsはWebアプリケーション開発のためのノウハウが集積されているフレームワーク&ライブラリです。今回は、RailsやWebアプリケーション開発の基礎について説明し、実際にRailsを用いて、30分間で、wikiを実装するデモを行います。ファイル添付機能付き、さらに、AJAXを使ったwikiのdynamic
preview機能などにも挑戦します。

RubyやSQLを使用しますが、これらについて知らなくても、理解の上で支障はないかと思います。
3分~15分くらいの短い時間でも、DBを使った簡単なWebアプリケーションは作れるのですが、それだと、情報系の人を唸らせるところまではいかないと思い、30分にしました。キューピーの10倍です。

キューピー3分クッキングの舞台裏の紹介番組を見たことがありますが、あの番組は本当に生放送で、料理人一人ではなく、実は多数のスタッフの人が、見えないところで、調理、盛りつけ等を手伝っているのです。

それに比べれば、今回は本当に1人でデモをするので、30分なら妥当な線かと。Java+Struts+JSP+JDBCでWebアプリケーションの開発をしようものなら、こんな時間では設定すら終わりません。

既に30分で実装を終わらせることはできるのですが、見ている人にわかりやすいようにデモをするには、もうちょっと練習が必要そう。乞うご期待。

2006年5月9日火曜日

[Open Source] もはやGPLはmustの存在ではない

自分の書いたソースコードについてどのライセンスを適用すればいいか、考えが整理されてきたので、オープンソースや、フリーソフトウェアについてまとめてみることにしよう。

GNU GPLはviral(伝染する)ライセンスであるから良くない、という主張は、オープンソース開発の本質を得ていない。Emacsの開発者でもあり、GPLの生みの親でもあるStallmanがこの方法を取ったのは、プログラムをproprietary(独占、転じてclosedの意)、つまり、特定の個人や企業の所有物とされたくないという考えが大本にあって、それを実現(強制)するための手段がGPLという形になっているだけだ。

他人の書いたコードに依存しないプログラムを書くことは、膨大な労力を要するものだ。開発者の知性や時間を、真に新しいプログラムを生み出す方向に向けるためには、過去に作られたプログラム、つまり知識や道具を誰もが利用できる形にし、それらをつなぎあわせることで不必要な作業を省き、創造する力を助長してあげなくてはならない。ソースコードが企業の利益のために隠されてしまって、創造が止まってしまうことを避けたいという信念がGPLの中にはある。

ここで、非公開でもうまくいく、とMicrosoftの例を挙げるのはかなり極端な話だ。確かに彼らは、Windows用のAPIを公開して内部実装を非公開にしているが、そのclosedな実装であっても、プログラマは利益を損なうどころか、APIの恩恵を享受して、プログラミングを快適にしてもらっている。でも、勘違いしてはいけない。彼らのビジネスモデルは、WindowsというOSを売ることであり、そのためには、Windowsの価値を向上させる必要がある。価値を向上するには、Windows上で動く品質の良いソフトウェアが多く誕生しなくてはならないのだ。そのために、他人任せではなく、熱心に次々とWindowsの機能を生かすためのコードを自社開発している。ただそれだけの話だ。

でも、コンピュータという創造力を無限に引き出すようなものの前では、Microsoft一社だけでその開発をすべてまかなえるほど、人間の新しいものを生み出す知性や創造力は限られてはいないということだ。確かにMicrosoftの貢献は大きい。Officeのように優秀で安定していて実用的なアプリケーションはとても便利だ。でも、品質のいい製品をマーケティングまで考えて開発するのは時間がかかるし、それもMicrosoftが超巨大企業になったからこそできることだ。でも、カレンダーのようなWebアプリケーションなど、今すぐ使いたいものを開発する小回りの良さでは、小さなグループで開発を進めるGoogleに完全に出し抜かれてしまっている。もし、Microsoftや他の企業がソースコードのすべてを独占し、オープンソースのコードやOSが存在しなかったらGoogleが台頭することなんてできなかっただろうし、我々がWebアプリケーションの便利さを知ることすらできなかったかもしれない。

この例だけでも、GPLが世に与えた影響は大きい。けれど、GPLを自分のコードに適用しようとすると頭の痛い問題を抱えることになる。著作権保持以外は商用利用もソースコード非公開でバイナリ配布など何でもありのBSDライセンスと同様に、ソースコードの利用に関して制限の緩いApache Software License (ASL) version 2.0が適用されたプログラムであっても、GPLライセンスのコードと組み合わせた場合、ともに配布することはできなくなってしまう。それはASLには、特許に関連する訴訟を起こした場合、ライセンスに書かれている権利を失効させる条項が含まれているからだ。ASLの権利を失うということは、ASLのソフトウェアを配布できないということを意味する。

GPLはソフトウェア開発を阻害するような特許訴訟を起こした人物にさえも判決が確定するまで、ソースコードを配布する自由を守ろうとしているし、ASLは、プログラマや企業の心の平穏を保つため、そのような特許訴訟に対しての対抗策を講じている。けれど、ここや、ここの話を見る限り、両者は対決をしているわけではないし、問題点は特許に関する条項のみであるから、歩み寄りの方向に向かうのであろう。GPLのページで、GPLと他のライセンスが適用されたコードを同時に配布できるか(compatibility)について、 こと細かに述べられているが、compatibilityの問題はさほど重要でもない。要するに、いろんな独自ライセンスのproliferation(増殖)のために、GPLの親であるFree Software Foundation(FSF)が、GPLの制約の維持に苦慮しているということだ。


でも、GPLを自分のコードに適用することを考えると、そのコードを書いたことに対する自分への金銭的な見返りが何もなくなってしまうことがとても恐ろしい。GPL製品を使う企業は、製品そのもののソースコードは公開しなくてはならないから、製品そのものを売ることはできないけれどその周辺(サポートビジネスなど)で対価を得ることはできる(バザール型)という。でも、そもそも個人プログラマがそんなビジネスを一からはじめるのは、とても大変だし、かなり長い道のりだ。かといって、ASLのように、非公開でコードがどんどん拡張されて利用されることが認められる場合には、自分のプログラムが何の断りもなしに金儲けに利用されてしまうのではないかと思ってしまう。ただ、GPLと違い、ASLの場合は、自分も非公開にしてお金を稼ぐことはできる。

たとえば、データの通信ライブラリを自分が作ったとして、それを他人が利用してWeb通販などのビジネスを始めたとする。Web通販部分は、自分の作ったものとは別個のものだから、そこにまで自分の権利が及ぶと考えるのは傲慢だと純粋に感じる。もし通販部分のソースコードを公開してしまえば、通販部分の開発費を他人のために投げ捨てる事態になってしまう。データ通信部分がGPLだと、まさにこの状況になる。差別化を計れる機能を実装しても、自分自身ですら商用に利用できなくなってしまう。まぁ、著作者ならGPL以外を適用すればいいのだが、GPL製品に囲まれてしまうと、すべての著作者やcontributorをたどってGPL以外の適用を認めるように依頼しなくてはならない。開発者の意思としては、BSDライセンスのように緩いものを適用するだけでよかったとしても、コミュニティの中で開発するためにGPLを選択した例も多いはずだが、その意思を確認することはほぼ不可能だ。

GPLはGPLのコミュニティ内で活動しているとき以外は、どうも自分の手足を縛るようなものの気がしてならない。創造性を助長するというよりは、窮屈さや将来への不安を感じてしまうものなのだ。ただ、変化するソースコードを公開したままにするcopyleftというのは決して悪いアイデアではない。

そうすると、Sun MicrosystemsがOpen Soralisに適用しているCDDL (Common Development and Distribution License)というライセンスがとても魅力的になる。mozilla.orgのFirefoxなどに適用されているMPLと同様に、ソースコードはファイル単位でライセンスが付与されるなど、ライセンスの適用対象が明確。それゆえ、違うライセンスが付与されたファイルとともに配布することができる(配布物全体に影響が及ぶGPLコードとともに配布することは無理だが)。ファイルを更改して配布した人には、ソースコードの公開義務(copyleft)を課すことができる。バイナリ形式で配布するときには、違うライセンスを付けてもいい、など。

Sun関連の人のblog(これとか、これとかこれ)を読むと、CDDLができた経緯や意図がわかって、さらに面白いかもしれない。

CDDLは、MPLがmozilla.org専用のものであるのに対し、commonと銘打たれていることからわかるように、MPLを汎用化したライセンスとなっている。GPLが他のライセンスとのcompatibilityで苦労した轍を再び踏まないようにしたいのであろう。プログラマが開発中に法律的な条項の解釈で悩むのは、やはり好ましくない。

CDDLを使いつつも、GPLコミュニティの中で自分のプログラムが生きていけるようにするには、mozilla.orgと同様に、GPLとCDDLのデュアルライセンスを検討するといい。GPL単独での利用で困難なのは、開発メンバーが多岐に亘った場合に、条件の緩いライセンスへの変更の意思を確認することである。最初から、開発者にGPLとCDDLの双方の条項に同意してもらえれば、Firefoxの成功例のように、企業、個人、非営利団体の垣根を越えて、オープンソースソフトウェアとして安心して開発を続けられるものになるはずだ。

ただし、デュアルライセンスという形態では、GPLプログラムとの共存が完全ではない。一度GPLプログラムを取り込むと、デュアルライセンスという形式はとれずGPLライセンスのプログラムとなる道しか選べないからだ。 LinuxのようなGPLで固められたOS用に移植することは可能だが、そうするとGPL専用、CDDL/GPL兼用の2つのbranchができてしまうことは想像に難くない。開発者は、GPL製品を利用することはできるが、それを利用してできたコードを、CDDL/GPLのデュアルライセンスの形に戻すことはできない。

面倒な問題は山積みだが、ライセンスを考える上でのポイントは、プログラマの心の平穏と、創造性を助けるもの、開発コミュニティの形成を促すライセンスであるかどうか、だ。CDDLはOpenSoralisで多数のプロジェクトが生まれているように、企業や個人を含めた開発コミュニティを作りやすくすることを目的としている。

GPLとのcompatibilityの問題のように、ライセンスにこの不具合があるからだめだとかという議論は、概して不毛であるし、いいものを作るというソフトウェアライセンスにこめられた本当の目的からは外れてしまう。LinuxのようにGPLによって得られた産物のインパクトの大きさから、GPLに反するライセンスを安易に卑下する意見が巷でよく見られるのだが、GPLの威力は、GPLのcopyleftの性質によるものなのか、それとも、GPLの適用範囲がそれを利用するものすべてに拡大していくことによるものなのか、を区別して判断しなくてはいけない。けれど、そのどちらについても、FirefoxやEclipse、Apache Software Foundation、PostgreSQLなどの成功例によって、copyleftが必ずしも必須ではないこと、ライセンスの適用範囲を広げなくても、いいものは出来上がることが示唆されている。もしかしたら、それらはGPLによってオープンソース開発の土台ができたことによって成功した例なのかもしれない。けれど、はっきりと言えることは、もはやGPLはmustの存在ではない、ということだ。

そうすると、一個人プログラマとしての僕にとって重要な指標は、自分が自分のソースコード(とそれを利用したアプリケーション)を自由に(商用・非公開を含めて)利用でき、改良が僕の知らないところで行われないという点だ。これらを満たす選択肢としては、CDDLが今のところ最良のものとなる。GPL非依存のライブラリも増えてきたこともあり、GPL製品に頼らなくても、コードを開発する土台がある今なら、GPLへ回帰する選択肢だけは残したまま、つまりCDDL/GPLというデュアルライセンスの形態をとり、GPL非依存のライブラリやツールを構築していくというのが、今の僕の結論だ。

2006年2月21日火曜日

GPLの選択は当事者間の問題か?

コメントに対する回答をここにも乗せます。

先日書いたブログからは、GPLがviral(伝染性)ライセンスだから批判しているような印象になるかもしれません。でも、僕は、そういう一面が嫌いではありません。企業にとって、GPLであるが故に、それを使うために企業がコミュニティに貢献せざるを得ない状況を敢えて作っているところは、少数のプログラマが大企業に対抗するのに必要不可欠だったわけだし、こういったレジスタンス的な活動は、むしろ大好きです。

GPLライセンスの製品には巣晴らしいものが多々あります。主要なオープンソースプログラムはGPLへの対応済みであって、一度GPLの輪の中に入ると幸せでしょう。

でも、そこからGPLから抜け出し、GPL以外の選択肢を取るのは相当大変です。僕の主張は、安易にGPLを選択しないで、ということです。GPLの選択は確かに当事者間の問題ですが、内容をよく吟味せずにGPLを選択する当事者が増えてしまうのは困り者だと、僕は思っています。

ソース公開義務を課したり特許による攻撃を防ぎたいならMPLや、その微修正版のSunのCDDLがあります。copyrightの表示だけを義務付けたいなら、 New BSDライセンスも使えます。Apache License v2.0なら、著作物を改変した人の名前も追うことができるようになります。

でも、オープンソース開発後進国の日本では、GPLがv3になろうとしているのに、こうしたことが驚くほど話題になっていないのです。少なくとも、GPLが有名だから、という理由で、GPL採用する人には歯止めをかけたいのです。種々のライセンスを使う人には、それなりのメリットや理由があります。でも、それを理解するには日本語の情報源があまりにも少ないと思うのです。

この昔の記事はオープンソース開発を創めるにあたって、役にたつかも。著者の八田さんは、オープンソースに関連して頑張っている数少ない日本人のようです。

2006年2月20日月曜日

Stallmanが嫌う知財という言葉

"Did You Say "Intellectual Property"? It's a Seductive Mirage"
という意見がありました。GPLに関する議論で、知財(intellectual property)という言葉を使うのは、安易でしたね。

GPLの発案者であるRichard M. Stallman氏が、ソフトウェア業界へ多大な貢献をしてきたこと(企業にプログラムや技術を独占されないようにしてきた)や、Linuxなどの発展を促進したことについては周知の事実です。でもね。。あの人の顔をみる限り、僕の好きなタイプの人間ではありません(検索してみるとすぐでてくるはず)。GPL信奉者となることは避けたいです。

本題に戻ると、オープンソースのプログラムで問題となる知財は、主に著作権(copyright)と、特許権(patent)です。 GPLは、著作権に関しては手厚く保護しているライセンスと言えます。一方、特許権に関しては、GPLでは、特許のライセンス料を徴収することが禁止されています。

日本の著作権法や特許法とGPLの関わりについてはこちらが詳しいです。
経済産業省のページ

けれど、特許権の行使に関しても、個人レベルで開発している僕にとってはあまり大きな意味を持ちません。特許侵害されても、踏み倒される危険性の方が大きいですから。

僕が嫌っているのは、個人の貢献が、GPLのopen sourceでビジネスを展開している企業に何の対価もなしに吸収されてしまうことです。それも、GPLでライセンスされているプログラムを使用しているという理由だけで。

これを避けるためには、GPLライセンスのプログラムを使わず、自分が著作権(あるいは著作人格権)を持つプログラムや他のオープンソースライセンスを利用したプログラムで、身を固めるしかありません。(時間と労力がかかるけれど、これはこれでプログラマにとって楽しいことです。知識を吸収できるし、経験も増えます)

上のリンク先の文章から引用すると、
GPLに準拠するソース・コードの比率が小さいソフトウ
エアの全体に対して,ソース・コードの開示などの制約が
かかるのは民法の権利濫用の法理で無効になる可能性があ
るとの意見がある。

とあります。こういった濫用と思われる行為から自分のコードを守るには、どのような権利を駆使すればいいのでしょう? そして、それは知財のうち、どれにあたるのか。

いうなれば、非商用でソースコードの開示義務を課すライセンスが欲しい。商用への対応はデュアルライセンスにすることで切り替えられるけれど。。。それでは、開発者が集まらないだろうからオープンソースにするメリットがありません。

2006年2月16日木曜日

GPLから知財を守ろう

GPL(GNU General Public License)の欠点は、知財(IP: Intellectural Property)を公開しなさいという、押し付けがましいライセンスだということに尽きる。GPLの特徴は、GPLでライセンスされたプログラムを改変したり、それを利用するプログラムを配布する際は必ずソースコードを公開しなくてはならない、というものだ。

ソフトウェア開発の重要なメリットは何よりコストを低くできること。プログラマの知識や経験に対する対価は高くつくが、設備投資が必要な製造業より、PCがあれば開発できるという手軽さは何よりの強みだ。それゆえ、GPLの持つソースコードを誰でも利用できるようにするという性質は、新製品を開発したところで、競合他社にコピーされてしまい、独自の技術と呼べるものではなくしてしまう。

けれど、ソフトウェアがコピーできることが問題なのではない。広くソースコードを公開することによって、オープンソース開発のコミュニティを広げ、機能追加、バグの早期発見&修正が促進されることは多々ある。ソースを公開し、製品を利用するためのサポートビジネスを主に展開するところも多い。GPLの本当の問題は、自分の開発したプログラム、すなわち「知財」を公開しないという選択肢が与えられないところだ。つまり、GPLライセンスを持ったプログラムを利用した場合、自分の知財の放棄を強要されるわけだ。個人認証など、セキュリティの肝となっている部分にGPLプログラムを利用できないのは明らかだ。
(ライブラリの形で利用する場合はソース公開のライセンスは適用されないというLGPLもあるが、プログラムをリンクして使う、つまり、ソースコードにヘッダをincludeするもの、単に通信して利用するものなど、さまざまな形態がありうるにもかかわらず、ライセンスの適用範囲が非常に曖昧だ。)

GPLを推進するFree Software Foundation(FSF)が目指すものは、まさに、知財が個人の所有物となることを防ぐことである。ソフトウェアの開発に、特許侵害を懸念していては、健全な開発ができないという思想である。確かに、特許という審査に時間のかかるものとソフトウェア開発は相容れない。submarine特許による脅威に常にさらされているのもソフトウェアだ。それに、自分のソースコードを自由に使っていいというcontribution(貢献)のおかげで、かなりのソフトウェアが成長してきたことは明らかだ。

けれど、自分が公開しているのだから、あなたのソースコード、つまり知的財産も公開しなさいという主張を、他に押し付けなくてはいけないというのは、非常に心苦しい。当然、企業はGPLプログラムには参入しにくい。フリーで手にはいるものをわざわざ買う顧客はいない。 ソースコードの開発者は本当にGPLを選択する必要があったのだろうか。GPLを付与しているプログラマがすべて、FSFと同じ主張だとは思えない。

GPLを採用しつつも、顧客企業に非GPLの形でソースコードを提供できるデュアルライセンスの形をとっているところもある。MySQLや、BerkeleyDBのSleepycat(先日ORACLEに買収された)がこの形を取れるのは、プログラムをほぼ100%自社開発しているからである。コミュニティによるcontributionは少数のパッチやバグ報告で、主要な機能はすべて自己で開発している。この場合のGPLの役割は、開発者にGPLを適用することを押し付けて、ソースへの改良や、それを応用したプログラムすべてのソースコードを自社のものとすることにある。 Sleepycatの収益の70%がライセンス契約によるものという話であるから、GPLによる束縛を避けて、知財を非公開にしたいという需要が大きいことが見て取れる。

形が違うだけで、これではGPLソフトウェアといっても、proprietary(商業)ソフトウェア専門のMicrosoftと大きな差異はないように思われる。結局は、自社開発。企業側は、ソースをGPLにすることで逆に知財保護に利用している(これが行き過ぎで、他の知財剥奪になるのが問題)。FSFが掲げる特許に縛られないソフトウェアの世界とはかけ離れている。いろんなプログラムを利用して新しいものを気楽に作るという目標から逸れてきている。今では、GPLは自社製品への囲い込みを狙うMicrosoftより性質が悪いと感じる。

(確かに、大学の書類等もOffice製品のフォーマットで囲い込まれてしまって、Officeの購入を余儀なくされるという腹立たしい現状はあるが、それは、むしろ、安易に製品を選択する大学側の意識の問題である。Officeの信頼性を検証をしたという話は聞いたことがない)


拡張自在のブラウザFirefoxで注目を集めるmozilla.orgのMPL(Mozilla Public Licence)は、その点、知財に関して注意が払われている。MPLが適用される部分に改変を加えた場合はソースを公開しなければならないが、MPLとは独立に自分で開発したソースコードは非公開とすることができる。こちらのほうが知財の放出を強制されることもなく、よっぽど健全であろう。 自分の書いたソースコード、つまり知財がコミュニティの中でどのように進化するかも見てとることができる。

オープンソースソフトウェアに関しては、日本OSS推進フォーラムでよくまとめられている。

GPLに関しては、こちらのリンク集が詳しい。

2006年2月1日水曜日

サン、「Solaris」にGPL第3版の適用を検討

記事によると、Solarisがdual licenseになるかも、という文脈で、SunのCOOの
Jonathan Schwartz氏が
LinuxとOpenSolarisの関係を効率化し、互いに実りあるものにするためにできることに取り組みたい」と記し、「『DTrace』と『ZFS』や、『GRUB』と『Xen』の轍は踏まない」と続けた

とあります。

ちょっと待て。ZFSやGRUBがライセンスの選択で何か失敗していたのか? けれど続きを読んでも、そんな失敗の内容は書いてありません。

上のリンクは、訳ですが、原文はこちら

該当部分を抜き出すと、
"We want to do what we can to drive more efficiency and cross-pollination between Linux and OpenSolaris," Schwartz said. "Why recreate the wheel with technologies like DTrace and ZFS--or GRUB and Xen?"


どうやら、Why recreate the wheel...?を、「轍(てつ)を踏まない」と訳したらしい。どう考えても、dual licenseに対応させるために、Sun自慢のDTraceなどの技術を一から作り直すなんて効率の悪いことはしないという意味です。

「轍を踏まない」は失敗を繰り返さないという意。日本語の使い方を間違ったのか、原文の意味を理解していないのか。

そもそも、大本のJonathanのブログはこちら

実を言うと、僕は、最初にブログの方を読んでいました。公式の場ではないので、Solarisがdual licenseを検討しているという内容で、確かにそういうことを検討しないと使いにくいよな、と思っただけです。 が、記事になると、検討しているだけのことに、それが一大事であるかのように誇張されてしまう。さらに、誤訳も混じって、意味不明な情報に。

記事って情報源がわかってしまうと、かなり陳腐になりますね。

2006年1月10日火曜日

Webで動くワードプロセッサ Writely

Writelyを使ってみました。ブラウザで動く簡易ワードプロセッサ。日本語も普通に使えるので好印象。

けれど、このような、Ajaxベースのアプリケーション(AjaxはWeb上でページを移動せずにデータのやり取りができるもの)がでてくるたびに思うのは、人様のサーバーにデータをおくのは嫌だということ。ブログならいざしらず、個人用のメモが流出するのは避けたい。

2005年12月21日水曜日

Emacs on Rails dvelopment

Emacsをrails開発用に設定するノート。 MMMは良いですね。

2005年12月5日月曜日

OpenOffice Writerを使ってみる



Impressはやや不具合が目立ったが、Writerの方はかなり使えるようだ。Writerで作成した文書のイメージを貼り付けます。

Open Sourceについて考える

OpenOfficeを使っていてふと思ったのだけれど、open sourceの情報って、ビジネス的な価値があります。open sourceの文化はまだ日本では、欧米ほど普及していないから、必然的に英語圏の情報を探すことになります。 ここで必要な能力はもちろん英語力なのですが、open sourceプロジェクトは、文章が完備されていることは少なく、使ってみて初めてわかること、ソースコードを見て動作を把握してようやく得られる知識が多いです。

ビジネスとして利用するためには、open sourceプロダクトの使い方やチューニングのノウハウを身につけて、サポートビジネスとして売る。あるいは、bug fixやfeature enhancementを行って売るなど、どちらも技術者としての力量が必要。

英語が堪能(交渉力がある、翻訳できる)人は多いかもしれないけれど、開発技術を合わせ持った人材となると非常に少ないはず。 現に、ワイズノットというオープンソースを使った会社が成長してきているし、「日本」でこういう人材を集めることにはかなりの意味があるはず。中国・インドのようにその能力を持った国がオフショア開発で台頭してきたといっても、日本の隅々までサポートを売るというのはまた別の話。

こういうことできる技術者集団が作れるといいな。というか作るために頑張ります。

2005年12月4日日曜日

Microsoft Officeから、OpenOffice2.0に

完全移行できないか確認するために、OpenOffice 2.0をいろいろ触ってみました。僕にとってMicrosoft Officeというソフトは、使う頻度はそれほど多くないものなのに、何万円もするアップグレードを買うサイクルでMicrosoftに囲い込まれてしまっていたので、いい加減うんざりしていたところです。
  • 長所
    • Microsoft Officeの基本機能(あるいはそれ以上)のことはできる
      • Word, Excel, PowerPoint, Access、数式エディタとほぼ同じことはできる
    • そこそこの互換性
      • Officeで作ったファイルも殆ど読めるし、Office用のファイルの作成もできる
      • 同様の操作感
        • Officeに慣れた人なら、すぐ使い方に慣れることができる
    • さらに、Draw(お絵かきソフト)もある
      • EPS出力もできるのでTex用の画像を作成する人にはとっても便利
    • PDF出力機能が完備
      • Acrobatを数万円出して買わなくても良くなる
    • Base(データベース)では、ODBC接続等で、sqliteをバックエンドのDBとして使える
    • 万が一、ソフトウェアが不具合で強制終了されても、復元機能がついている
    • Math(数式)は、慣れればテキスト入力だけで数式が編集できるので、マウス操作が必須の数式エディタよりはかなり使いやすい。
  • 短所
    • Impress(プレゼンテーション作成)の動作がぎこちない
      • データサイズの大きい画像を背景に使うと、プレゼンテーションをうまく表示できないことがある
      • ただ、プレゼンをPDF化してしまって、Acrobatでプレゼンすればまったく問題なかったりもする。
    • Impressのアニメーション機能はそれほど綺麗ではない
    • マニュアル、How-Toなど、日本語訳ができていない
      • 英語を読める人なら問題ないのですが…

残念ながらImpressは及第点とまではいきませんでした。質素なスライドならImpressでもいいんだけど、綺麗なプレゼンテーションを作る観点では、操作性、描画の早さなど、まだまだPowerPointの方が使いやすいです。Writer(文書作成)、Calc(表計算)は、もう少し使ってみてからブログに書きます。

2005年12月1日木曜日

OpenOffice

OpenOfficeがかなり普通に使えるようになっていてびっくり。WordやPowerPoint互換のスライドも作成できるし、今後Office製品を買わなくても済むのではと期待。

実用に問題がなければ、企業ではかなりのコストダウンを期待できます。あとは、オープンソースプロジェクトの評価(開発の持続性、この製品をサポートする人の熱意を見るなど)をしないと。

2005年11月25日金曜日

ZFS at OpenSolaris.org

僕 は、自称トランザクション管理の専門家です。トランザクション管理の歴史的経緯を知っているが故に、古い考えにとらわれていることに今日気づきました。

先日、Sun Micro SystemsのCOOがblogを書いているとHarvard Business Reviewで知り、調べてみたのです。そうすると、Sunのdeveloperさんなどもblogを書いており、興味本位で、覗いてみると、ZFS at OpenSolaris.orgという新しいファイルシステムのプロジェクトを発見しました。

通 常のデータベースは、データを一元管理するので、データの更新時、ディスク上のデータを書き換えるという操作をします。複数ユーザによる同時書き込みを防 止するために、データがある部分を保護(write lock)するのですが、このwrite lockはファイルシステムの性能を上げる際のボトルネックになることが多いのです。 なにせこの領域のロックが開放されるまで、他がその部分にアクセスできないので。また、read lockを取得後、write lockを取得してデータを書き換えるというプロセスは、デッドロックに陥りやすいという欠点もあります。

write lockを使わずに同時書き込みを防止するには、versionningといって、古いデータを上書きせずにとっておいて、更新後のデータを別のディスク 領域に書き出します。 この方式(Multiversion 2PL)はPostgreSQLでも採用されていて、古くなったデータの後始末さえうまく行えば、readトランザクションは、writeを気にせずデー タをとりだせるので、それなりの性能を発揮できます。ただ、このversion管理がわりと曲者で、B-Treeなどのデータ構造に、version管理 用のデータ構造を組み合わせる必要があるので、目的のデータにたどり着いてもversionを調べる分アクセスが間接的になるし、遅いイメージがありまし た。

け れど、ZFSでは、B-Treeのようなデータ構造を、更新時に新しいversionにswapしてしまうのです。swap操作は、リンクの張替えだけな ので、負荷は低く抑えられます。簡単だし、version管理の長所そのままを具現化したものなのですが、目から鱗が落ちる思いです。

た だ、トランザクション管理は、B-Treeではここ20年の研究成果が集積されていて随分安全になっているのですが、ログを管理をしないこの木の入れ替 え方式がどこまで、データベースのトランザクション管理に応用できるかは、検証してみないといけない。ログがない時点で、ディスクエラーには強くても、 rollbackには対応していないのは明らか。でも、利用価値は存分にあります。

研究者として、本質的に新しい方式を見るのはわくわくします。 最新の研究といっても、既存の技術をこねくりまわしたものが多いご時勢なので。

2005年7月26日火曜日

Firefoxに移行

WebブラウザをMozillaのFirefoxに移行することにした。これまでは、SelipnirやLunascapeなどの和製タブブラウザに慣れ ていたので、タブの操作方法が若干異なるFirefoxはなんとなくとっつきにくいと感じていたのだが、中クリックで、新しいタブを開く操作に慣れてしま えば、Firefoxの方がadd-inによる機能拡張が豊富で、魅力的なため、思い切って乗り換えることにしたのである。

追加したプラグイン
  • CustomizeGoogle
    • Googleの検索結果にフィルタをかける
  • Adblock
    • ページ内の広告部分を抑制する。NIKKEI NETなど、記事の上にかぶさる広告が多いサイトに有用
  • Tabbrowser Preference
    • tabの作成・フォーカス移動の設定項目が増える
  • FlashGot
    • ページ内のリンクを一括ダウンロードできる
  • Gmail Notifier
    • Gmail内のメールチェック
  • PDF Download
    • PDFダウンロード時に、開くか保存かを選択
  • Image Zoom
    • 画像を拡大表示
  • All-in-One Gestures
    • マウスジェスチャーで、タブを閉じる操作などを行う
  • SessionSaver
    • Firefoxを終了しても、開いていたページが復元される
  • Web Developer
    • CSSをWysiWyg(What You See Is What You Get) で編集できる。HTMLのvalidationも可
  • googlebar
    • IEのgoogle toolbarと同様の機能を実現。検索ボックス、キーワードのハイライト
  • SmoothWheel
    • ホイール操作に慣性をつけて、ページスクロール時でも、文字を読みやすくできるようにするもの
  • LiveLines
    • RSS配信のリンクがページ内にあれば、そのリンクを、Bloglinesにワンタッチ登録できる

License

Creative Commons LicenseLeo's Chronicle by Taro L. Saito is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License.