2012-02-27

firebug is still alive

後藤さんがfirebugが終わったという話を何度も書くので、オープンソースにおける開発モデルの話も交えて書こうと思う。

そもそもfirebugはJoe Hewittが作ったもので、彼はFirefoxの開発メンバーの一人でもあった。で、Netscape崩壊後、自分の会社を持ってたけどfacebookに買収されてそこで働いてた (最近辞めたらしいけど)。facebookに行ったあとはfirebugにそんなに関わってなかったと思うけど。

firebugは一人で始めたものでもあったのだけど、その後Firebug Working Groupが開発を行うことになって複数のメンバで開発が行われている。オープンソースではこういうことはよくあって、自分がコードを書き始めたけど自然と参加するメンバーが増えていって、開発が複数人になる。そのときにコアのメンバーが抜けたとしても、それをフォローする人がいればそのプロジェクトは当然続くし、新たな機能が追加されていく。これがオープンソースにおける重要なポイントでもあるし、MozillaというかFirefoxが未だプロジェクトとして続いているのはこのポイントでもあると思う。そもそもFirefoxプロジェクト始めた張本人(Blake RossとかDavid Hyattとか!)は誰もMozillaにいないしね。

また、たとえばLinuxを例にとれば、LinusがLinuxから離れていってもLinuxは終わらないであろう。そこでLinuxが終わったという人はたぶんFUDを流したいMicrosoftとか敵対している人たちでしかないとは思うけどね。

当然誰も引き継がなかったプロジェクトというのは死んでいくわけだけど、forkという形で残ることもあるよね。forkしていった結果本家になるgccみたいな例もあるけど。

また、メジャーなオープンソースプロジェクトになっていくと、それを利用しようとする企業がその開発者と契約して仕事としてコードを書かせることもある。firebugでいれば、Googleに入社したJohn J. BartonはIBMとの契約を持ってたらしいし、またfirebugの開発者として有名なhonzaはMozillaとの契約を持ってたりする。人間として生きてく以上、生活費は稼がないといけないので、開発者としてはそういう契約をしたりもするのはしょうがない。まぁ、一生遊べるだけのお金を持っている人ってそんないないしね。

企業として雇っている以上、そのプロジェクトへの投資ということにもなるので、その人の契約ってのは会社の方向性に当然左右される。その会社がもう投資は必要ないと感じれば、その契約は終わる。John J. Bartonの件はIBMとしてこれ以上投資する気はないというだけな話だと思う。

契約が終わればどうなるのかと言えば、人間なんで仕事探すよね。それで探した先がgoogleなだけだったと思うけど、それでfirebug終了のお知らせって書かれるのはどうかとは思う。後藤さんはFreeBSDのコミッタな人なので、こういうことに関しては痛いほどよくわかってると思うんだけどねぇ。FreeBSDなんて特にいろんな会社に振り回されたプロジェクトなんだから。

また、MozillaはFirefoxに開発者ツールを入れようとしてるけど、これはfirebugを殺すためなの?って思う人がいるかとは思うけど、それは違う。Mozillaの考えで開発者ツールを作るけど、これも選択肢があった方がいいと思ってる。そもそもfirebugやってるhonzaはDeveloepr Toolsチームの一員としてfirebugをやってるんで、別に殺すつもりも全くないし、競争が力を生むと思ってる。

僕は中の人でもあるから、いろんなことを知ってるけど、英語の記事も読まなくて日本語記事しか読まない人は記事書く人の思い込みでいろいろ間違った知識を持っちゃうよねぇ。しょうがないけど。

ちなみに記事タイトルは、DJ PaulのHolley Noiseネタね。(元ネタのLA StyleとEUROMASTERSのライブを両方見たことある)。最後に話が横にそれた

2012-02-05

Visual Studio 2010への移行

Firefox 13でWindows x86 (not x64) のビルドをVisual Studio 2005 SP1からVisual Studio 2010 SP1に移行してる (したとは書かない) わけだけど、その際に起きた顛末をいろいろ書いておこう。

PGOでこける

PGOってのは、Profile-guided optimizationといって、コードを実行させた情報から最適化がもっと必要なところを見つけ出してさらなる最適化を行うというコンパイラの機能。2005SP1を使ってた時もコンパイラというかリンカの制限にあたってしまってビルドができなくなるという楽しい事件があったのだけど、2010 SP1に移行した時も別の問題にぶち当たった。というのも、PGOは性質上2度ビルドを行う必要 (プロファイル情報を集められるようなっているビルドと、プロファイル情報からさらなる最適化を行うビルド) があるのだけど、最初のビルドでできたバイナリがどうも壊れたバイナリを生成するらしく、ビルドに失敗してた。これは、khueyがconnect.microsoft.comへレポートしてるけど、最適化オプションを一部で無効にすることでとりあえず、回避。

ビルドマシンにVS2010SP1が入ってない

MozillaではビルドマシンはVMWare ESX上に複数存在しててラウンドロビン的にビルドマシンが選択される。大量のブランチとかを効率的に処理するためにこんな構成になってるんだけど、一部のビルドマシン上にVS2010SP1がインストールされてないという困ったことがここで発覚。ビルドはチェックイン (push) 毎に走るんだけど、そのインストールされてないビルドマシンがたまに回ってくるとビルドエラーになるというロシアンルーレットが起きてた。そのビルドマシンを外すことでこれも回避

で、

Talos (Mozillaで使ってるパフォーマンスデータ収集ツール。最近WebKitでも使うらしいよ) で見ると起動・シャットダウン・ベンチなどのデータが5%-10%くらい改善されてる。これでめでたしめでたしと思いきやそんなことはなくて、今は、BreakPad (GoogleとMozillaでやってるクラッシュ時のログ生成・ログ送信ツール) で見るとクラッシュ時のスタックトレースがキレイに取れない問題発覚。これどうなのよってところでってところ。ChromeってVS2008使ってた記憶あるけど、先にMozillaが地雷踏んでしまってる?

余談。x64はどうなの?

えっと、先ほどのBreakPadが使ってるDIA SDKが腐ってて、シンボルの列挙で30-120分ほどCPUをぐるぐる回す変なバグがあって、それをどうにか解決しないと移行できないね。。。。たぶんハッシュテーブルがかち合ったとかで、すべてのデータを列挙しなおしてるという感じに見えるけどね。これ困ってるんだけど、どうしようか、マジで。