コードがマージできなくても努力はマージできる
これは、プログラムを書かない人にもぜひ読んで欲しい記事です
UnixUserという雑誌の12月号に「開発者座談会」と称して、Linuxのカーネル(OSの中核)を開発している人たちの座談会が出ています。その中に素晴しい発言がありました。(()内は引用者注)
僕の経験でも、ときどきパッチ(プログラムに対する改善提案)がリジェクト(採用拒否)されたといって怒り出す人がいる。「なぜ、リジェクトされるんだ?5ヶ月もかかったのに!」ってね。まあまあ、落ち着けよというんだけど。
もしすると、ほかの人のパッチのほうがうまく問題を解決していたのかもしれない。たとえ、コード(プログラム)がマージ(複数の作業結果をひとつにまとめること)されなくたって、努力はマージできるんだ。それだけのパッチを書いたということは、その部分に関しては世界中でほかの誰にも負けないくらい理解したということだろう。そうした、ほかの人の書いたコードもよく理解できる。
自分が作業しているのと同じところのコードを誰かが書いたってことはいいことだと思うよ。その問題に関して、自分以外にそこを完全に理解している人と話せるってことだから。
パッチがリジェクトされる、それは実は普通のことなんだ。Linusの仕事はパッチをリジェクトすることで、皆の仕事は納得させることだ。そう考えたらどうだろう。これはバトルなんだ。もし、彼がすべてのパッチを受け入れていたら、カーネルがリリース(完成したとして配布)されることは決してないだろう。
パッチを書いて、「それはこういう理由でだめだ」とリジェクトされたとする。そしたらまた挑戦すればいいさ。そのうちだんだん自分でも分かってくる。「このパッチを、Linusは、あるいはAndrewは受け入れないだろうな、こうしなきゃ」って具合にね。学んでゆくんだ。このプロセスを通らないと、自分自身が進歩しないよ。
Paul "Rusty" Russellさんという方の発言ですが、なぜ、中央でコントロールされないで共同作業ができるのかがよくわかりますね。オープンソース的コラボレーションの本質がわかるような気がします。また、どうやって自分の困難を楽しみに変えていくか、という魔法の処方箋でもあるし、短かい言葉の中にひとつの素晴しい生き方が見えてくるようにも思えます。