WebKit について (レビューとか文化とか)

WebKit のコードレビューについて。 Google ではこのコンポーネントはあの人が詳しそうだなーという人にコードレビューをお願いするシステムなのですが、 WebKit では WebKit reviewer 全体に review を頼んで、このコードは俺が得意だとか見られると思った reviewer が review するシステムになっています。また、 Google やら Chrome やらではほぼ committer==reviewer と言って良いのですが、 WebKit の場合は committer になってさらにかなりの修行を積んだ人だけが reviewer として認められるシステムになっていて、 reviewer は committer よりかなり人数が少なめになっています。

さてこのシステムだと実際のところどういう感じになるかというと、 reviewer を指定しないので「この patch 早く見てあげないと…」的な圧力がかからない上に、 reviewer 自体が committer/contributor に比べて少ないので、大量の外部 patch の放置という悲しい結果になります。特に、あまり review に熱心でない偉い人しか自信を持って review できないような patch については、ヘタしたら 1,2 ヶ月単位は余裕で放置されることになります。 IRC で review をお願いしたらその場で見てくれたりもするのですが、日本とかだと時差的に結構きつい感じに…

私は基本的にいくつもの patch が同時並行で review 待ち状態になっている状態を維持して、 review をしてもらったものは適切に処置する、という感じで作業効率を落とさないようにしています。ですがまぁこれも放置されてる間に別の人が同じ fix をしてしまったりすることとかもあるので、 review システム自体がどうもあまりうまいこと行ってない感じかなぁと思います。

review のやりとりは bugzilla 上で行なわれるのですが、その他のやりとりは主に IRC と ML で行なわれてるようです。特にみんなの意見が必要な内容、コーディングスタイルへの提案だとか大規模な refactoring の計画なんかは ML で議論が行なわれます。

その議論ですが、たまに喧嘩ごしというか激しい議論になったりします。特に Apple の人と Google の人はそこらここらで意見があわないことが多いようです。しかしまぁ両者ともに別に一枚岩というわけでもなくて、 Apple の人が Google の人の味方をしたりとか、その逆とかもたまに見かけます。

例えば global script という機能を Google の人が実装始めるよーと宣言した時には、 Apple の人が 1.標準になってないものを実験として入れるのはメンテナンスコストなどの観点からリスキーである 2.似たような機能を既に shared worker などの形で入れてるわけだがそのへんではダメなのか 3.つか本当に使うの? というような論点で反対しました。に対して Google の人が反論して…っていうのはよくあるのですが、その最中に Apple の人が CSS gradient を例に出して、 CSS gradient は WebKit で実験して、結果として WebKit のその案自体はそれほどいいものではなかったけど、 CSS WG がもっといい文法に変えたわけだけど、俺らが実験しなかったら CSS WG もなにもしなかったよねー実験自体はいいんじゃね、という論点で 1 に反論したり、一方で Google の人が Google の提案に文句言ったりと、まぁなかなかにカオティックな感じでした。

そんなこんなで、色んな自己主張が強い人がからんでるので、まぁなんか議論を色々したけど結論が特に出ないまま議論が立ち消えたりとかがよく起きます。まぁこのへんは特に独裁者がいない型のオープンソースぽい感じではありますかね。

あと具体的にどういう人達が作ってるのーというのは、 WikiWebKit Team というページがわかりやすいです。

http://trac.webkit.org/wiki/WebKit%20Team

だいたい、 Apple, Qt 系の人々, Google ってあたりが3強なんじゃないかと思います。 Gtk+ 系はかなり少なくて、 build bot の Gtk+ のところとか見ると、たいてい赤くなってていくつかのテストがこけてる状態だったり。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h