パスワードを忘れた? アカウント作成
130812 journal

taro-nishinoの日記: 私のPerlコミュニティへの貢献と位置について考える。

日記 by taro-nishino

Iron Man Blogging Challengeへの参加者が増えて、どちらかと言えばストイックなPerlコミュニティが弾けるようにオープンになったように思います。日本でも参加者が増えていることは嬉しい限りです。因みに私は参加していません。私はすべてに怠惰で、損得があろうが無かろうが、少しでも束縛される要素は出来るだけ排除したいのです。
さて、Iron Man Blogging Challengeに参加しているブログを頻繁に巡回しています(不思議に、私はこういうことに関しては怠惰ではないのです)が、個人的な感性から、Iron Man Blogging Challengeの提唱者であるMatt S. Trout氏のブログが一番面白いと思います。但し、日本人である私が英語ネイティブな人にこういうことを書くと語弊がありますが、氏の英文ははっきり言って悪文(これは悪口ではありません、念のため。むしろ、とんでもない悪文を時々勢いで書くから面白いとも言えます。)が多いのです。因みに、私個人が端正な英文と感じるのは(面白いかどうかは別にして)、Perlブログで言えば、Tim Bunce氏、Dave Rolsky氏、David Golden氏、Dave Cross氏の四人です。ところが、最近、Matt S. Trout氏も執筆参加した"The Definitive Guide to Catalyst"という本を読みましたが、これは(当たり前ですが)美文です。日本人が真似てもいい思う言い回しが散りばめられています。
前置きが非常に長くなりましたが、そのTrout氏が(決して悪口ではありません)柄にも無く、少しセンチメンタルな記事Musings on my contributions to and membership of the perl communityを書いたことがあります。以下に、その私訳を載せておきますが、CPANを探索したことがない人は聞き慣れない言葉や名称が沢山出て来ます。PerlerとCPANは切離して語ることは出来ません。CPANを知らずに、Perlでプログラムを書いた人の殆どが赤ちゃん言葉で喋っていたことだろうと思います(Matt S. Trout氏程の天分に恵まれた人ならともかくも)。それは昔のCGIの残骸を見れば明らかでしょう。CPANを通して、モジュールを利用し、ソースを読み、パッチを書く、モジュール作者と論議する等して始めて、やっと青年レベルに達することが出来ます。このエッセイを読むに当たっては、そういう細かなことを抜きにして読んでくだされば幸いです。
最後に、私は常日頃、Trout氏が書いたDeve::REPLにお世話になっております。これ無くして暮らせません。氏に感謝!

私のPerlコミュニティへの貢献と位置について考える。
2009年6月19日 Matt S Trout

多分、これは少し変な投稿であるが、今私は自分を省みる気持ちになっている。

ともかく・・・・

Perlコミュニティに参加して以来の、私が関係したいろいろな分野、私が為した事の意味、そして、それらが他の人達に対する意味について考えている最中である。

が最初に、旅が始まった所へ少し戻ろう。

それは、POEの上に非イベントドリブンソフトウェア層を作るために、GNUのguileとcall/ccを使うことCoro::AnyEventプラスAnyEventのPOEサポートが結局は十分だったことを認識しないうちに、私は後にMarc Lehmannのcoroutine stuffを扱うことを企てたが、その時までに、顧客は次期資金を見つけ損ない、跡形もなく消えた。)を気まぐれにちょっとやっていた2004年早期に始まった。

ちくしょうめ、継続を含むデータの配列をguile空間からperl空間へ渡せないことを発見したが、私は自分のC能力の酷さにもかかわらず(それは今もほぼ存続している)、何とかしてフィックスバージョンを作ることが出来た。それから、Sam Tregarにパッチをメールし、リリースに適用するか訊いた。彼は時間が無いし、そのコードはもう使っていないと答えたが、CPANでフィックスしたいなら、PAUSEアカウントを取る方がよいと勧め、私が自分で配布することを許可した。

私がやり、彼がやり、Guile.pmは私のリリースが未だ最新版である。私はもう、そのコードを使っていないので、再度恐ろしい程壊れているだろう(誰か欲しい? メール下さい)。しかし、今や私はCPAN idを持っており、私がリリース出来ることを考え始めた。

その翌年、私はウェブディスパッチに関して適度に馬鹿げたことを突っついていたので、irc.perl.orgの#catalystにうろついていた。開発チームとチャットし、私は家を見つけたと思った。それから間も無く、Marcus RambergがCatalystのsubversionリポジトリを運営する時間が本当に無いと言い、ボランティアを募った。

私は志願し、今やShadowcatが、ReactionMoose及び、それらの関連プロジェクトと共に、CatalystDBIx::Classプロジェクトのためのインフラを提供している。

勿論、その時点ではDBIx::Classは存在しなかった。(a) #catalystにおいて、Class::DBIの諸問題を手助けすることに甚だうんざりさせられていること、(b) 顧客に「いいえ、手頃な価格で、それは出来ません」と言わざるを得ないことに嫌気がさしていること、(c) Class::DBI::Sweetの私の仕事に基づく、Tony Bowdenとの一会話が、現行のコードベースは上手にリファクタリング出来ないので、再度新規開発を始める意味がある、という結論に達したこと、の組合せからDBIx::Classは誕生した。

その時の前後で、私はCatalystディスパッチャをハッキングし始めた。少し自分でコミットすればと言われ、後にコアチームの一員となった。ずっと後にDBIx::Classのヒントを呼び起こした人への似たような怒り(今回は、本当に親切な人達がCPANモジュールのためのホームディレクトリインストールをセットアップした。)は、local::libを作ったが、現在は私の手からは離れている。

おお、勿論、Catalyst財団やMoose財団等々・・を作ることよりもむしろ、新しいPerlの啓発を心配する我々のグループは、コミュニティの売込みと推進をするため、Enlightened Perl Organisationを創設したのだった。そして、Shadowcatは、irc.perl.orgのヨーロッパの半分を運営することになった。また、私は他の事柄も思う。例えば、Devel::REPLインタラクティブシェルは、私が保守するのが嫌だった電子メール(と、以前のブログ)の処理スクリプトを書く試みから出て来た。また、Florian RagwitzのMooseX::Declareのような素晴らしいものにパワーを与えた、Devel::Declareのオリジナルバージョンを書いた。他にも、私が完全に見落としている興味深い事柄があるだろう。

そして・・・上のどれが、私のコミュニティへの最も重要な貢献なのか?

大きなユーザ層、ウェブとデータベース・アプリケーション構築のための安定的な拡張性の高いプラットフォームをコミュニティに与えて来ていることから、多くの人が、CatalystとDBIx::Classでの私の仕事が該当すると言うと思う。

local::libは、アプリケーションの依存を独立した区画に押し込めるので、一方の一モジュールのアップグレード及び、それが他方を誤って壊すことについて心配する必要が無い。Shadowcatのシステム管理者はlocal::libが該当すると言うだろう。

Mooseの作者であるStevan Littleは、Reactionが彼個人にとって最も有益であると言うかも知れない。Mooseの初期に、彼がやらない間に、Reactionを書くことはMooseの数多くの優れた事例を広げたし、Devel::Declare(Florianが私のお粗末なCをフィックスすべく取上げる以前である)の土壌の検証になった。そして、MooseX::Declareを利用する流れにたどり着いた(しかも、Stevanは、Reactionから「自動strict且つwarnings」を盗んだのだから。コード内で私にクレジットするのを忘れているけれども)。

私はどうかって? 上のどれでもないと言おう。

実の所、他の誰もが可能であると信じなかった時に、それが可能であることを証明するため、私が最初に切り口を書かざるを得なかった幾つかの場合(しかも、それらの大部分は、他の人が立ち去り、今や可能であることが判ったのでずっとより良いバージョンを書いた。)を除いて、私が書いてきたコードはそれ程重要だと思っていない。

そして、それが私が重要だと思う部分である。私のモジュール群のうちの一つに、誰かがバグを報告する度に私は、彼等にテストケースを書き上げるよう、努めて話す。それから、パッチを書くことに進ませる。一旦パッチが良ければ、彼等自身でコミットするためのアクセス権を与えるからと、説得に努める。特定のリリースに多大な貢献があるなら、Sam Tregarが私にしてくれたことを私は彼等にする。すなわち、PAUSEアカウントを取らせ、共同保守者にし、私と言うよりも彼等がアップロードするようにさせる。

IRCまたはメーリングリストで興味深い特徴のアイデアを語る人達を見る毎に、私(または、近頃ではプロジェクトの一人が私より前にいて、以下のことをするが)は彼等と一緒に、それをどうしたら実装出来るかを努めて考え、彼等が自分で実装出来ると得心するまで、アイデアを語る。そして再度、若干のコミット権を渡し(時には私を信じ、確信するまでに時間を食うが)、少しの幸運があれば、我々は新しい貢献者を得ることになる。

昨年のことを考える。私は、自分のオープンソースの時間の多くを、人々に貢献することは本当にいいことなんだと確信させるのに費やしている。設計作業を通じて語り、また時には、賢明だけども自身を信じられない人達が問題を解決するまで、私は相談相手として振舞う。時には、他者が敬う人になって、「そう、これはいい。是非やるように。」と言うことさえある(仮に、彼等がちゃんと動くコードを発表する前に、私がしている馬鹿な間違いの数々を知るなら、おそらく彼等は信じなくなるだろう。私は間違いを頭に叩き込み、しっかりしたアイデアがある時のみに書き始めていればなぁ。しかし、まぁ、それはともかく・・・)。

多分、今は2年経っている。

そして何が判ったのか? それは傑作だ。

一人の男はひたすらコードを書くことのみ出来る。「もっとボランティアを」と叫びこと及び私がする他のすべてにより、私が自分でコードを書いて来たよりも、遥か大量のコードを引き起こした。私よりも特定の問題に詳しい人によって書かれた殆どが、必要なこと以上に素晴らしいアイデアを持ち、効果的なテストを持っていた。

さらに良いことは、私は、多くの人が頼りない未熟な新人から出発して経験ある貢献者となっているのを目にすることだ。彼等は、未熟な新人の次世代が、自分の力で為し、進むべきだと言われるショックを克服させ、最初のパッチ、最初のコミット、最初のCPANリリースの喜びを経験させている。私は過去数年で少なくとも百件のコミット権を輩出している。私が輩出して来た人々がまた数百を輩出したと考える。

私はこのことを最初に認識した時、ご存知の通り私は実際にプログラミングを楽しんでいるので、いくぶん気を悪くした。その時、最も重要なことは何かと自問した。その答えは、「クールなコードを沢山書く」ことではなく、「クールなコードがもっと沢山書かれる」ことだった。それは、「人をよい良い、より楽しい、もっと信頼出来るプログラマにさせ、私が可能だと思わなかったことを彼等が為すことを注視する」ことを伴う。

私が「もっとボランティアを」と叫んだ時、充分に弾まなかったすべての人へ、私の不快な冒涜的言動共に泊まり、私が説明しようと努力しているアイデアを聞いたすべての人へ、直接又は間接的に私が言ったこと、したこと、又は只単にいいと思ったことを問わず、私が関係したものへパッチを送った、すべての人へ、私はこう言いたい。

貴方すべてを誇りに思う。コミュニティを更に楽しい場所にしてくれたこと、世界をいい所にしてくれたこと、私が行き詰まった時に、肩を貸してくれたことに感謝します。

とりわけ、事が困難で、私が道を見失った時でさえ、次世代の人々に貢献することを語り続けるモチベーションを与えてくれたことに感謝します。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

Stableって古いって意味だっけ? -- Debian初級

読み込み中...