Choosing an issue tracker can be a little tricky - a quick look at wikipedia's comparison page shows there are an overwhelming number of options. I have previously used Mantis and Trac, but decided to do some research to see if there was any interesting new technology or clear leaders in the field.
The latest generation of issue trackers are not free - JIRA, Lighthouse, Roundup, Sifter to name a few well respected, but ultimately expensive solutions. I'm only interested in open source solutions. After a bit of research, two names jumped out as the clear leaders here: Trac and Redmine.
I tried the Redmine demo. Without having my own installation and day-to-day experience, it is difficult to definitively judge an issue tracker. My initial impression was that it seemed ok, but nothing spectacular. The interface is generally seen as intuitive and it has most the features you would expect of an issue tracker. Redmine can also be customised using plugins.
Trac is also used on a variety of projects, including Django and nginx. From previous experience I knew Trac was good, but not perfect. It can be cumbersome to configure - generally you need to use the terminal for everything (adding users, adding projects, installing plugins) instead of the web interface. I had hoped there would be a similar, more modern solution available.
Trac is written in python - as a Django developer this is a definite plus. Like Redmine, it can be easily extended with plugins, including TracBacklog for agile development and TracThemeEngine for skinning. Trac can also be integrated with git - you can modify your tickets with your git commit messages.
I found an interesting answer on Stack Overflow from somebody with 7 years experience with Trac and 3 years with Redmine. The verdict was to choose Trac. Obviously a lot can come down to personal preference, but I put a fair amount of weight in this opinion given the years of experience with each issue tracker.
Other issue trackers worth a quick mention:
Weighing everything up based on my needs I decided to use Trac. In my next post I will be detailing how to set up a customised Trac installation running on Gunicorn and nginx.