Using Trello as issue tracker
A few days ago the Plastic SCM crew (me included!) went to the dotNet Spain Conference 2016 in Madrid. It was an awesome experience. We had the chance to see the latest .NET technologies in motion and learn a lot from great Microsoft experts. We even got mentioned by Satya Nadella himself!
The next day the HackForGood hackathon took place in Valladolid (among many other places). Carlos and I were present as mentors, and we were impressed by the enthusiasm and the innovative ideas of the participants. While we were around talking with the developers, we took notice that all of them used some task system to organize their work. Most of them used Trello because it's simple and fast, it doesn't require setup and as a cloud application, it's accessible anytime, anywhere.
Seeing this, I realized that Plastic SCM could easily be extended to display tasks data from Trello, just as it already does for many other issue tracking systems. It could be a great option for small teams or individuals working in prototypes, side projects or just coding as a hobby! So, encouraged by the DIY spirit lived at the dotNet Conference I decided to implement that extension myself.
Linking the Trello extension to Plastic SCM
First of all, take a look at the code. It can be found at https://github.com/PlasticSCM/trelloextension and the repository contains everything you need to compile the library using Visual Studio 2015. The build process produces a bin directory under the repository root which contains the output trelloextension.dll
library and its required dependencies.
Now we need to tell Plastic SCM where to expect the Trello extension. Edit the custom extensions file at C:\Program Files\PlasticSCM5\client\customextensions.conf
(Windows), /opt/plasticscm5/client/customextensions.conf
(Linux) or /Applications/macplastic.app/Contents/MonoBundle/customextensions.conf
(Mac OS X).
Add a line like this:
Trello=/path/to/your/trelloextension.dll
In my case it looks like this:
Trello=C:\Users\Miguel\wkspaces\trelloextension\bin\trelloextension.dll
Restart Plastic SCM (if you had it running) and open the Preferences window, Issue trackers tab. Trello should appear in the issue trackers dropdown list:
Selecting the Trello item will show the Trello configuration parameters:
Configuring the Trello extension
The Trello API requires an authentication token to validate access to your boards and cards. To find out yours, just copy the URL inside the Login URL text field and open it in your web browser. You'll be prompted with a Trello login screen; once you successfully log in a plain text page will appear where your API token is displayed. Copy that token and paste it inside the API token text field. Click apply. You're done!
But hold on! You'll probably want to link your work to a specific Trello board, where all your project tasks will be stored as cards. Scroll down a little bit and you'll find a text called "Board URL". As you might guess, you'll just need to copy the actual HTTP URL of your target board and paste it into the text field. Only cards in that board will be used as source tasks.
We recommend you to select the Bind issues to Plastic branches to plunge into Task-Driven Development. We strongly believe that this development process will improve your performance and reduce team friction. There's a handy guide we've written to help you get acquainted with the basics in case you're not familiar with the process yet.
I'll continue my walkthrough using a sample board I just made up. Don't pay attention to the task titles, they're just examples!
In my case, the Board URL is https://trello.com/b/WeBi6WG8/awesome-project:
Creating branches
Let's get to work! I've replicated the /main branch of our demo repository, quakecode@demo.plasticscm.com:38087 (by the way, don't forget our evaluation guide!). Let's say I'm a responsible developer and I want to start writing unit tests right away. I've already spent some time deciding my tasks and their organization, so I'll let Plastic SCM take advantage of that to create branches in a few clicks:
There's a particularity to Trello: tasks (cards) can only be either open or archived. That means that our little Mark as open in issue tracker button won't alter the status of the task. Our user will be linked to that task as a member, though. It might be useful when we wish to start an unclaimed task, as it will automatically display our avatar inside the card.
At this point I've been working hard on the unit tests but I've been requested to refactor the UI urgently. I'm not a member of that task, so it doesn't show up on my pending tasks list. I need to check the Display pending tasks from all users to make it so:
Notice that I've requested the task to be marked as open in Trello. This makes my user to be displayed as member of the card:
See? My avatar now appears in the Refactor UI layout task :-) This is how my Branch Explorer looks like now:
Automatic work log
Another fantastic feature of these extensions is to have Plastic SCM automatically log my changesets in the appropriate Trello tasks. When I was working in the unit tests I created a few files, deleted some obsolete ones and adapted the existing code to use the files I just created. This is how Plastic SCM displays the changeset:
And this is the comment automatically added by Plastic SCM in the Trello card:
Nice! Any other team member could have a look at my progress at the same time they're reviewing the board.
Wrapping up
Organizing and planning are key concepts to any project. Developers should have the necessary tools at their disposal, and using them shouldn't mean spending time in bureaucracy or boring management tasks. A lightweight option such as Trello could be useful for small teams that want to go straight to the point without getting lost in the process.
Of course, this extension is just a basic operative version with lots of stuff to be improved (take a look at the list), but it may come in handy for your first steps in task-driven development!
I have a Trello card to to write this extension that is over an year old already. Thanks for getting this started. I'll contribute to it!
ReplyDeleteThat's great! Don't hesitate to contact me if you need more detailed information :-)
Delete