Tracについて思うこと

最近Tracを調べて感じたことを書いてみたいと思います。

Trac自体はずっと使ってきています。使い倒したとはいえないしうまく運用できなかったこともあります。

そして実践投入していないRedmineにも心惹かれています。

それでもやはりTracは素晴らしいソフトだと思います。

Tracが革新的だったのはオールインワンであることとチケットという概念を作ったということにあると思います。

順番に書いてみます。まずオールインワンであること。

TracWiki, BTS, 構成管理と密に連携することよって1つ1つの機能の足し算で終わらないものを生み出しました。
とりわけコミットフックとリポジトリブラウザによりバグやエンハンスとソースの差分を双方向にリンクできる仕組みを実現しました。JIRAとFishEyeでも同様のことはできるわけですが、この場合すくなくともタイムラインはない。これはオールインワンならではの連動性だと思います。ぶっちゃけTracの個々の機能自体は他のソフトに劣ってると思うんですよ。例えばAtlassianならConfluence、JIRA、FishEyeは優れていると思います。ちょっと触った感触でしかないですけど。でもその個々の機能が有機的に連携することによりチケット駆動開発がスムーズに進んだりタイムラインで進捗をはかったりができるわけです。

次にチケットという概念を作ったということ。

単純なバグ管理方法はExcelに1個1個書くというもの。このバグをWebから扱えるようにしただけでなくエンハンスやタスクもバグと近い形で扱うためにチケットという概念を導入したのだと思います。僕がTracを初めてさわったときチケットが何を意味するのかわかりませんでした。しかししばらく使っていくうちにこれはバグIDを拡張したものでありこれによって作業を管理していけばいいのだと思うようになりました。チケットという概念は本当にスマッシュヒットだと思います。

さて一方では下記のような弱点があげられると思います。

・1プロジェクトにつき1リポジトリしか扱えない
・対応済みというステータスが無いなどワークフローが貧弱でかつカスタマイズが難しい
ガントチャート、カレンダー機能が標準で無い
・プロジェクトをつくるのにtrac-adminコマンドを実行する必要がある
・テーブルヘッダが無いなどWiki機能が貧弱
・デザインがちょっといまいち
・セットアップが大変(TracLightingは除く)

Redmineと比べるとセットアップが大変なのは同じだと思うけどそれ以外は確かに弱点かなと。

ただ僕個人は上記を弱点と思ったことがあまり無い。というのも小規模開発であり一人のときも結構あったのでマルチプロジェクトはいらないし、ステータスはnewとclosedで十分だし、ガントチャート?いらんでしょそんなもん、てか進捗報告って何?俺ができたときが完了したときでしょみたいなw、プロジェクト?作るの最初だけでしょ、テーブルヘッダぐらい無くてもいいじゃん、デザイン?見慣れるよ、セットアップ?俺がしたんじゃないしw みたいなノリなのでデメリットはそんなに感じない。

あとプログラマチックな視点でいうとTracコンポーネントアーキテクチャは面白い。Pythonメタクラス全開なのでよくわからないが、わからないからといって必ずしもつまらないわけではない。わからないけど面白いということはある。core.pyのソース解説してくれ誰かw 拡張ポイントをimplementsしてメソッドを実装してmainから呼ばれるあたりは見所満載だ。たぶん。いや、ていうかどうやってコンポーネント作ってるのかがよくわからんw EnvironmentがComponentManager継承しているのがポイントなんだよな。多分。あとINavigationContributorのget_navigation_itemsってジェネレータ関数なんだな。ま、この辺は個人的な嗜好です。はい。わかっているわけではありません。あしからずw