読者です 読者をやめる 読者になる 読者になる

Geant4 には公式の CVS 閲覧用ページがない

Geant4 のソースコードがあまりにも汚く、さらに KEK に用意されている doxygenLXR のページの可読性の低さに辟易し始めています。たしか 5 年前くらいだったか、ここ

Coding Conventionsのないプログラムを解読することのストレスは、実感してみなくてはわからないだろう。是非実感してみようと思う方は、Geant4のソースコードをご覧になるとよい。その後ROOTのソースを読むと、あまりの分かりやすさに涙が出る事請け合いである。大規模なプログラム開発では複数人数で開発することが多いが、このとき各自が自分の書式で書いてしまうと読む方は非常に混乱する。前者は数十人の開発チームでCoding Conventionsを定めなかった場合、後者は数人のチームでCoding Conventionsを厳しく定めた場合。

と書いてあるのを読んだ記憶があります。そのときは coding convention くらいで大げさなと思っていましたが、 Geant4 の bug 探しと読解をするようになって、この言葉の重みが分かりました。

そんな愚痴を研究室で言っていたら、「どんだけ ROOT 好きだよ!」と後輩から突っ込まれましたが、 ROOT の code が読みやすいのは確か。HTML も自分で吐くような仕組みにしてしまう徹底ぶりには頭が下がります。

さて、 bug を追いかけるためには過去の code からどのような修正があったりするかを調べる作業は必須なのですが、Geant4 では CVS の差分を見るために ViewVC のようなものが一般向けに用意されていません*1。一方で、 ROOT の場合だとこんな風に簡単に CVS 内の code の履歴を簡単に見ることができます。

で、Geant4 ではこういうものが doxygenLXR 以外に用意されていないか何度も検索したのですが出てきません。そこで Geant4 の developer の方に聞いたところ、

For some reason, the G4 collaboration does not have a CVS browser - even for us inside the collaboration - and the Bonsai System tracking CVS tags is for collaborators only; makes sense in my opinion since general users should only concern themselves with public releases.

だとのこと(強調は私による)。せっかく source code 公開しているんだから、もっとユーザが読みやすい形で source code を出しておいてくれないと、bug 潰すのが大変でしょうと思うのですが、「For some reason」とあるので、何か考えがあってのことなのでしょう(質の低い bug report が大挙するとか?)。

ということで、ViewVC のようなものは公開されていないので検索しても無駄です。

===追記 (2010/07/12)===
某、Geant4 の中の人にお伺いしたところ、「出版前の論文に載せるような物理 data が code の中に含まれている場合があるので、公式 release の前に CVS などで外に見せることはできない」というのが理由だそうです。これは納得。

*1:LXR の機能で、release tag のつけられた code 同士の比較はできますが、可読性が悪く、最新版の閲覧もできないようです。