XPlayer

A blog on my daily efforts to be a better developer, and keep improving every day.

Introducing Tracco: The Trello Effort Tracker Gem

| Comments

Trello meets tracking

Trello is a very good surrogate for a physical team board: it’s simple and effective, and it can really help when you have a distributed team. That said, Trello (still) doesn’t offer a way to track time estimated and actually spent on cards, though many people are asking for that feature on Trello’s development board.

I had such precise need while working with one of our teams, so I came up with the following idea: using Trello’s mention system to send tracking notifications to a predefined board member (I call him the ‘tracking user’), collecting along this way all tracking events such as estimates and efforts.

A tracking example

Then I built a simple tool to persist and aggregate this data, so that it would have been possible to show interesting metrics such as estimate errors. I called this tool Tracco: a gem to help track estimates and efforts from Trello.

Tracco is a gem, and you can use it as is, but it’s intended use is inside an app which displays collected data. To give an idea of what I mean, I developed a bare minimum Rails app to properly present card estimates and efforts: it’s called Trello Effort App. It’s really simple, but I wish it could be improved with the help of other committers :O)

More details

To start using Tracco you should have a Trello account, a Trello board and a board member to use as ‘tracking user’. You’ll also need to know your Trello developer key and generate a proper auth token to have access to the trackinguser’s notifications. To see how to have these two keys, read the following section.

The Trello API is used behind the scenes to read data from the team board. Tracco uses the awesome Trello API Ruby wrapper for this purpose.

An example

Here I show an example of how you could use Tracco. For more info please refer to the official README.

1
2
3
git clone git://github.com/xpepper/tracco.git
cd tracco
bundle install

Then run the initializer

1
tracco --initialize

to create the two configuration files, which you’ll need to edit properly (see “Where do I get an API key and API secret?” section).

To fill the correct values for the mongodb environments (see here to have more details).

Where do I get an API key?

Log in to Trello with your account and visit https://trello.com/1/appKey/generate to get your developer_public_key.

Where do I get an API Access Token Key?

To generate a proper access token key, log in to Trello with the ‘tracking user’ account. Then go to this URL:

https://trello.com/1/connect?key=<YOUR_DEVELOPER_PUBLIC_KEY>&name=Tracco&response_type=token&scope=read&expiration=never

At the end of this process, you’ll receive a valid access_token_key, which is needed by Tracco to have the proper rights to fetch all the tracking notifications sent as comments to the ‘tracking user’.

Collecting data from Trello

1
2
3
4
5
tracco collect today --environment test # will extract today's tracked data and store on the test db

tracco collect today  # will extract today's tracked data and store on the default (that is development) db

tracco collect 2012-11-1 --environment production  # will extract tracked data starting from November the 1st, 2012 and store them into the production db

Console

You can open a irb console with the ruby-trello gem and this gem loaded, so that you can query the db or the Trello API and play with them

1
tracco console

The default env is development. To load a console in the (e.g.) production db env, execute:

1
tracco console -e production

Estimate format convention

To set an estimate on a card, a Trello user should send a notification from that card to the tracker username, e.g.

@trackinguser [15p]
@trackinguser [1.5d]
@trackinguser [12h]

estimates can be given in hours (h), days (d/g) or pomodori (p).

@trackinguser 22.11.2012 [4h]

will add the estimate (4 hours) in date 22.11.2012.

Effort format convention

To set an effort in the current day on a card, a Trello user should send a notification from that card to the tracker username, e.g.

@trackinguser +6p
@trackinguser +4h
@trackinguser +0.5g

efforts can be given in hours (h), days (d/g) or pomodori (p).

Tracking an effort in a specific date

To set an effort in a date different from the notification date, just add a date in the message

@trackinguser 23.10.2012 +6p

There’s even a shortcut for efforts spent yesterday:

@trackinguser yesterday +6p
@trackinguser +6p yesterday

Tracking an effort on more members

By default, the effort is tracked on the member which sends the tracking notification.

To set an effort for more than a Trello user (e.g. pair programming), just add the other user in the message, e.g.

@trackinguser +3p @alessandrodescovi

To set an effort just for other Trello users (excluding the current user), just include the users in round brackets, e.g.

@trackinguser +3p (@alessandrodescovi @michelevincenzi)

Tracking a card as finished (aka DONE)

Sending a tracking notification with the word DONE

@trackinguser DONE

will mark the card as closed.

Moreover, a card moved into a DONE column (the name of the Trello list contains the word “Done”) is automatically marked as done.

Google Docs exporter

To export all your tracked cards on a google docs named ‘my_sheet’ in the ‘tracking’ worksheet, run

1
tracco export_google_docs my_sheet tracking -e production

The default env is development.

If you provide no name for the spreadsheet, a default name will be used. If the spreadsheet name you provide does not exists, it will be created in you google drive account.

So, running simply

1
tracco export_google_docs

will create (or update) a spreadsheet named “trello effort tracking” using the development db env.

Requirements

  • MRI version 1.9.3+
  • mongoDB - macosx users with homebrew will just run ‘brew install mongodb’ to have mongoDB installed on their machine.
  • (optional) rvm is useful (but optional) for development

Roadmap and improvements

I develop Tracco using Trello itself.

Contributing

If you’d like to hack on Tracco, start by forking the repo on GitHub:

https://github.com/xpepper/tracco

Comments