OSSじゃなくても、大規模なソフトウェアだと、バグトラッカーシステム (BTS) は導入されているんだけど、BTSに登録したから、誰かが見てくれると思っているのは間違い。
ゴミくずのようなバグが増えていく
昔勤めていた会社は大規模なソフトウェア会社だったためBTSはあったんだけど普通にバグを登録しても放置される状態になる。それは、そのバグ登録等については誰でもできたため、ゴミくずのようなバグだらけになるからという原因がある。(実際問題、原因がソフトウェアに関するものではなかったり、違うバグ修正で直っているものだったり、過去のバージョンで直したものだったり!)。
またその時の一番の問題は、バグを登録した際にアサインがデフォルトでなしという状態だったのが、一番の問題だった。だれもアサインされてないんだから、当然誰もやりやしない。重要なバグであってもね!。
その会社ではBTSを変える時に、デフォルトアサインのままだとバグを登録できなくするように変更したため、誰にアサインすればいいのかが分からない人にはバグ登録ができなくなるということになった。ちょっと敷居をあげた状態に変更したおかげで、常に誰かにアサインされるため、誰かが一旦はバグを見ることになるオペレーションへ変更した。
また、ゴミのようなバグが増えるきっかけは、開発フェーズの時に報告されたバグが多数残ること。開発をやっている人だったら分かるとは思うが、一つのバグの修正が複数のバグを修正することは多くある。そのため、既に直っているバグがアクティブのままずっと放置されることなんてよくあることになる。その後誰かがもう直っているかどうかの検証をしないと、バグが直っているのにもかかわらず、数字上はバグが残っている状態になる。もちろんテスターがそれを検証すれば、もう再現しないから(work for me)、そこでクローズとなんだけど、ただ開発のマネージャからしてみれば、そんなにテスターにコストを払わないといけないの?。そんなゴミのようなバグ報告に対して??ってことになるよね。
ゴミバグへの対処 (とりあえずクローズする)
とあるソフトウェア部隊だと、そういうゴミバグに対処するため、メジャーバージョンのリリースが行われた時点で、アクティブなバグについては基本的に修正しない(won't fix)でクローズをしてしまって、報告者に「新しいメジャーバージョンで試して、直ってなければ再オープンしろ」という指令が下る。そのため、ある程度のバグの掃除が可能だ。当然、報告者がいなくなったりして、まだバグが残っているのに再オープンされないものもあるから、バグ報告が見逃されるのでは?って思うかもしれないけど、でも、それが重要なバグだったら、誰かまた報告するでしょ?。また、マイナーバージョンは?って言われれば、それ専用のBTSを別途もっておいて、「そこに報告しろ!」っということにすればいい話。マイナーバージョンのリリースチームがレビューして直すかどうか判断すればいい話だからね。
ゴミバグへの対処 (バグ報告者を制限する)
上記のようなゴミバグを増やさないためには、優秀なテスターにのみバグ報告を許すというやり方もある。あるソフトウェア部隊ではそういう手順を取っていた。そのため、使っていて非常にバグが多いようなソフトウェアがリリースされた (実務で使えば、そんなことくらい分かるだろ!ってバグ多数)。また、外向けのコメントでもこのくらいバグのない状態でリリースできました!という数字のマジックを発生させて、(優秀でなくとも) その開発マネージャが昇進するという、笑えるオチがつくんだが。
この方法の一番の問題は、バグをそのテスターに報告したとしても、バグが登録されるかどうか分からない点と、実は優秀で何でもできるような人を取り込みずらくなる (そのソフトウェアにモチベーションを持てなくなる) 。
前者は、そもそもテスターの問題なのかもしれないけど、テスターに報告したとしても、そのテスターの環境でたまたま再現しないだけで、「再現しないから、バグ登録しない」という話になりやすい。でも、それは、コードを直接書いている人だったら、自分の環境で再現できる話なのかもしれないし、別の関係ない人が再現方法を明確にするかもしれない。だからそのようなところで止めるべきではないと思う。(ただ、バグの書き方が分からない人をヘルプする人やものは必要だとは思うけどね!)
後者は、自分がいろいろできる人だと、変な仲介者を制限されるのは嫌う傾向にある。コードが書けるんだったら、こう書けばもっといいのに!って思うのは当然だし、直接チェックインもしたくはなるよね。だから、直接BTSに登録して仲介なしに議論したいと考えるのは当然。そういう人に対して変な仲介者を通さないといけない状況を作った場合、バグを登録するのにも、無駄な労力を使っていく状態を作ることが、そのコードに対するモチベーションを下げる要因になりやすい。しかも、もしその仲介者のスキルが報告者よりも下だったら、なおさら、無駄な労力を使うことになるので、よりやる気を失っていく。。。
自分の考え
そもそもBTSは、開発する上で必要なトラッキングツールなんだけど、外部の人にバグエントリの追加や更新を許可する場合の一番の理由はQAや開発のコストを下げるためなんだ。そもそも無尽蔵にリソースがあるのであれば、別に外部に開かれる必要もないしね。OSSについては、それを外部に依存しているんだから、BTSの運用方法をより考える必要がある。
個人的には、バグ報告者を制限するやり方は非常にまずい。バグを報告してくれる人ってのは、悪意ではなく善意の場合がほとんどなんだ。ゴミが増えるということやクオリティ維持のためにそんな方法で善意のある人も制限するのは、バグがあるのにバグ報告がなくなるという悪循環になりうる。善意で報告しているのに、(開発者でもない人とかに)とやかく面倒なこと言われたら、モチベーションが下がるでしょ?
次はMozilla.orgについてのBTSの話を書いてみようかと思っている。