A Trac plugin that synchronizes Trac tickets and Remember the Milk tasks.
- when a ticket is created, a RTM task also will be added.
- when you close a ticket, the associated RTM task will be completed.
Screenshot

Screencast
Download
The source code is on github: http://github.com/mootoh/ticket2rtm/
Benefits
- unified Task List
- check tickets from mobile
Install
build
- edit Makefile and set PLUGINS_DIR to your Trac plugin dir
- make
or:
- python setup.py –bdist_egg
- copy dist/TracTicket2RTMPlugin*.egg into your Trac plugin dir
RTM API key, token
This plugin requires RTM API key, shared secret, and write-permitted token.
You can obtain your API key and shared secret from here.
After acquired key and shared secret, you can get your token by using bundled script.
Run as follow:
% python get_token.py <api key> <shared secret>
Configuration
- copy/paste contents of trac_ini_sample.txt to your trac.ini
- set rtm_api_key, rtm_api_secret, rtm_api_token to ones acquired above
- enjoy !
TracのチケットからRemember the Milkのタスクを自動生成するTracプラグインをつくりました。
詳しくは trac:Ticket2RTMに。
スクリーンショット
チケットがつくられたら、自動的にRTMのタスクがつくられます。

スクリーンキャスト
ダウンロード
ticket2rtm-0.1.zip
動機
やることリストを1つにしたいと思ったのでした。
- RTMで日々のやることを管理しつつ、何かつくるときはTracでチケットを切ってる → タスクがあちこちに分散
- 複数のプロジェクトを同時にTracですすめる → チケットがあちこちにありすぎ
あちこちにタスクが散らばっていては、やらなきゃいけないことを見落としてしまったり、やらないことを決めるためのコストが増えてしまったりで、ストレスフリーな状態になかなかなれません。
ぜんぶまとめて1つのインターフェイスで見られたら幸せだろうな、RTMのインターフェイスはいいよな、と考えてプロトタイプをつくってみたのでした。
あと、RTMはモバイル版もあるので、チケットをケータイからも確認できるという副作用的メリットもあります。
学んだこと
Python
Pythonのコードをまともに書くのは始めてでした。selfうっとうしいとか、正規表現めんどいとか、インタラクティブ環境でのreloadを最初しらなくてえらい非効率だったりとか、switchないの? とか驚きの連続でしたが、なんとかなるもんですね。
プラグインをつくるためにTracのコードを読んでたのですが、インデント強制な言語はコードリーディングにいいですね。
ものの見方を増やせたのはよかったかなと。
RTM連携させるために、RTM APIのPythonラッパの一部を書くことになりました。
これには1年ほど前にrtmilk.rbというRuby版をつくっていた経験が活きました。多少言語のsyntaxが変わろうが、やりたいことがはっきりしてれば考え方は同じ。
Trac Plugin
TracでPluginを書くのは思っていたよりも簡単でした。
これをとっかかりにして、いろいろなアイデアを形にしていこうかなと。
今年のアウトプット第一弾はTrac+RTMハックでした。
1/14から始めて、夜なべでつくり、1/18に0.1リリース。思いつき駆動だなー。
しかしこれで明日のShibuya.trac ミーティング1.0、明後日のRemember The Milk 交流会 in 東京で話せるネタができたということで。