2004年01月11日 日曜日

GNUの20年

ずいぶん前の話になるが、昨年はrmsがGNU Projectへの呼びかけ(翻訳,後の「GNU宣言」の元になる文書だと思う)から20年目の年だったそうな。昨年の9月末の話なので何をいまさらという話であるが、1月5日のNewsforgeにrms自身による「The Free Software Community After 20 Years: With great but incomplete success, what now?」という記事(和訳)が掲載されていたので、読んでみて思い出したかのように日記の記事にすることにした。
ソフトウェアにそれなりに踏み込んでつきあうようになると誰でもそうであると思うが、GNUの成果物の恩恵に預かっていることに気づかされることが多い。僕の場合は今年で11年目になると思う。最初の出会いはテキスト処理をするために使い始めたawkであるが、MS-DOSで使っていたので当然GNU版のawkであるgawk(の日本語版jgawk)だったように思う。当時書くのもめんどくさいテキストファイルのフィルタ処理がこんな簡単な言語でできるもんだと感動して使った記憶がある。(その後、awkの使いこなしでは師匠に絶対勝てねえと思ってperlを使うようになりawkを忘れ、今はテキストの処理の需要があまりないのでなんにもやってないが。)
その後、数値計算でCでプログラムを書く機会が多かった(Fortran嫌いなんで)ので、MS-DOSでMS QuickCを使っていた。Cを始めた頃はこの処理系でよかったが、当時積分計算をすることが結構多くて処理速度を稼ぐために最適化をかけたいことがよくあった。ただMS-Cのような処理系は_学生時代には絶対買えないお値段の処理系_(今も買えませんが)で、とても手を出せる状態にはなかった。またMS-DOSの制約以上の大きなメモリ空間を計算上必要としていたこと(こっちの方がより重大だった)ため、どうしてもMSのツールじゃ駄目だった。そんなときに大学のFTPサーバを覗いていて発見したのが、GNUのCコンパイラGCCのMS-DOS版であるdjgppでした。DOS-Extenderという妙な環境で動く何ともしれないコンパイラだったが、結構長い間愛用していた。
その後のLinuxの登場によりMS-DOSという妙な環境ではなく、何の制約もないUnix互換環境でGCCを使えるようになったので、ソースファイルごとLinuxの環境に移行してしまい、それ以来何かツールを作る環境はLinuxの上でやってきているし、こんな素晴らしいものはないと言うことでLinuxや*BSDの普及活動に時間があったら手間を惜しまず関わっている。まぁ最近はC/C++でプログラムを書くこともなくなったので、すっかり一利用者になってしまったけども。(お仕事上のVBAは除く。あれは選べない環境なので。)
最近の風潮ではGNUのGPLによる配付の縛りがきつすぎて、_GPL嫌い_な人を結構見かけるが、近年のオープンソースムーブメントのよりどころは_Linusによるバザール的開発手法の発明_とESRによる精緻な再定義によるものだとかんがえられる。しかし実際にはそれ以前の_rmsのFree Softwareの運動が基礎として存在_しており、GNU嫌いな人も_アンチテーゼとしての存在としてのGNU_なしには語れない訳だから、すべてに対して影響を及ぼしていると考えて良いと思う。改めて凄いことだと言わざる得ない。
さて、最初のrms自身の記事にもどるが、ちょっと過激なところはあると思うが大いに刺激を感じる記事かと思う。たしかに僕自身も特許やら企業秘密の中に生活している人なので、特許や企業秘密に依存するソフトウェアがどうしてもclosedでものでproprietaryな物にならざる得ないのは理解できるので、「Non-free software carries with it an antisocial system that prohibits cooperation and community.」は、ちょっと言いすぎだろうと思うが、先鋭的な意見を述べて戦い続けなければならない立場を考えると、確かにそう言い切ってしまわねばならないのだと思う。
さらに読んでいくと、

Today we have a large community of users who run GNU, Linux and other free software.Thousands of people would like to extend this, and have adopted the goal of convincing morecomputer users to “use free software”. But what does it mean to “use free software”?Does that mean escaping from proprietary software, or merely installing free programs alongside it?Are we aiming to lead people to freedom, or just introduce them to our work?In other words, are we working for freedom, or have we replaced that goal with the shallow goal of popularity?
とあり、普及の次を見通せていない僕の心の内を見透かされてしまっている_かのようだ。やっぱり普及という目先の話だけではなく、次というか未来を考えている。(やっぱり哲学から入ってくるあたりが絶対勝てないと思うところである。)単純に使ってもらうべく活動すると言うのは実はほんの些細な問題で、やっぱり_自由にソフトウェアを使うことができる権利(ひょっとしたらハードウェアも入るかもしれない)を維持し続けるには莫大な手間をかけて戦い続けなければならないということだ。今ある自由は、永遠にある物ではなく、その獲得に過去の膨大な努力の成果があり、またこれからの不断の努力によって支えていかなければならないという認識がどうしても必要だと言うことなのだが、どうも日本人として生を受けた僕にとってはその辺の意識が希薄なのかもしれない。認識を改めるきっかけにはなる文章だと思う。
さらに、
There are two common motivations to develop a free program.One is that there is no program to do the job. Unfortunately, accepting the use of a non-free programeliminates that motivation. The other is the will to be free, which motivates people to writefree replacements for non-free programs. In cases like these, that motive is the only one that cando the job. Simply by using a new and unfinished free replacement, before it technically compareswith the non-free model, you can help encourage the free developers to persevere until it becomes superior.
と続いている。(強調は私。) rmsは自由なプログラムを書く動機の内の一つが_「自由への意志である」_と言う、この20年のrmsの戦いを集約している言葉といえると思うし、rmsはこちらの方にほとんどすべてを投じているのだろう。ただそう思ってからこそGNUの素晴らしい成果物があると言うことで、rmsやGNU Projectに携わっている方々にはいくら感謝をしてもしたりないのである。
僕のようにツールなどを開発する能力もなく、一利用者にすぎない人は何をなせば良いのだろうかと常々思っていて、僕はずいぶん前はドキュメントの翻訳などをしていたことがあった。ただそれも本業が忙しくてできなくなって久しいので、最近ではこうしてできてきた成果物をうまく活用して、より高度な仕事に生かす方法がないかと言う方向で考えることが多い。活動している世界が違うわけだから、僕らのなすべきことはこうしてできた成果物をきっちり使い込んで、さらに別な有意義な成果を生み出せば、元の開発者に十分還元できるのではないかと思うのだ。ちがうだろうか?