45
votes

I'm trying to decide if I need to reassess my defect-tracking process for my home-grown projects. For the last several years, I really just track defects using TODO tags in the code, and keeping track of them in a specific view (I use Eclipse, which has a decent tagging system).

Unfortunately, I'm starting to wonder if this system is unsustainable. The defects I find are typically associated with a snippet of code I'm working on; bugs which are not immediately understood tend to be forgotten, or ignored. I wrote an application for my wife which has had a severe defect for almost 9 months, and I keep forgetting to fix it.

What mechanism do you use to track defects in your personal projects? Do you have a specific system, or a process for prioritizing and managing them?

3
  • Check out todo.ly
    – Job
    Commented Dec 25, 2010 at 3:45
  • 1
    This might be over the line as a question that the faq considers off topic. "Which technology is better?"
    – jzd
    Commented Feb 4, 2011 at 2:42
  • Trello is a great tool for this kind of thing, and it's free.
    – gahooa
    Commented Nov 7, 2012 at 20:52

20 Answers 20

25
votes

Fogbugz (free individual license) if its a longish project or a simple to do list (using Google tasks)

3
  • 7
    Nice. I didn't realize FogBugz has a free version (called Student and Startup Edition, for those who are looking for it).
    – Eric King
    Commented Oct 25, 2010 at 4:58
  • At a simple glance, looks very interesting
    – bedwyr
    Commented Nov 1, 2010 at 2:46
  • After using FogBugz, I fail to see how anyone prefers something different. In order to not have to keep track of multiple fogbugz accounts, I just created a single personal fogbugz for myself: earlz.fogbugz.com
    – Earlz
    Commented May 12, 2011 at 5:30
17
votes

I usually use a web based revision control system(Github, Bitbucket, Redmine, Google Code, ...) to store my source code and track bugs. If you think there's a bug in a specific code, you can create an issue with the revision number/changelist/changeset and specify which file and the range of lines you suspect.

8
votes

I used to use a spreadsheet/text file per project (ToDo comments in the code don't scale well for the reasons you list; they're local to the code, and if there's an issue that's not, it tends to slip through the cracks).

Recently I've set up a Redmine server on my home network. It's a bit heavyweight for a "team" of one, but I'm working on quite a few projects on my own time, and tend to just use the Issue Tracker + Repository options with maybe the odd wiki page in more complex places.

A friend of mine swears by Pivotal Tracker for the same purposes, but my current employer uses Redmine internally, so I figured this would give me some practice. It's not bad.

For open source projects, I just use GitHub's issue tracking.

1
  • To-do comments in the code work better if they're Doxygen/similar annotations, so long as you build the docs regularly. You get the collected list of todos (and bugs) in the generated docs. Lacks the flexible reporting options of a dedicated bug-tracker, obviously, and you're not going to look up old (supposedly) resolved bugs in your repository when the annotations are deleted from the current version, but it can work fairly well for small simple projects.
    – user8709
    Commented May 12, 2011 at 5:30
7
votes

I've actually installed the Free MANTIS bugtracker system on my hosted web server (that I use for a blog and other things), and put all my defects in that.

In other words I run my stuff as though it were professional and paid for.

I find it helps keep a better mindset (closing off defects, etc) as well as being consistent (ish) with other practices commonly used in industry.

Use TODO notes in code, etc, as well - but only for notes top self like: "one day I gotta make this more efficient, the bubble sort hurts performance". Or for more immediate notes about where you got up to when you were hauled off for dinner :)

1
  • I used MANTIS and it is awesome!
    – Job
    Commented Dec 25, 2010 at 3:46
5
votes

I use ToDo List program, an open source code from codeproject

http://www.codeproject.com/KB/applications/todolist2.aspx

Very nice and with many features.

5
votes

We use JIRA at my workplace and I'm a big fan of it. Lots of products and people involved and it manages it all just fine.

2
  • +1 Jira is by far the best issue tracking system I've run into. Easy to start using, gradually employ more advanced features when needed. Friendly enough even for non-technical users to report and follow up issues.
    – Maglob
    Commented Feb 4, 2011 at 6:38
  • Another praise. Jira is strongly "exothermic" tool, which gives more than you put into, which triggers a positive feedback cycle :)
    – Maglob
    Commented Feb 4, 2011 at 6:53
4
votes

I came looking for an answer for this a while ago and have since worked out a very neat and simple system, which meets these key goals for me:

Goals in order of importance:

  1. Make it possible to enter a new task/bug as effortlessly as possible, so that I can jot it down as soon as I spot it or dream it up, and go back to coding before I lose my place.
  2. Make it easy to see and manage the issues without a lot of searching, clicking, drilling down.
  3. Make it easy to tie in with version control so I can later find out what changes were made to resolve an issue, or what task or bug drove a specific change in the code.
  4. Make it relatively easy to set up: minimal installation and configuration and minimal price.

(3 and 4 are less important, and I would have been okay with a system that didn't provide them, but this one does).

Step 1: Get a project in Bitbucket

I use bitbucket for issue tracking and for git version control (for an iOS project in XCode for example). I looked at FogBUGz (which I've read about for years on JoelOnSoftware) and GitHub and others, but bitbucket seems to have the best free features set for small teams.

Step 2: Use Bitbucket Issue Tracking in the project

Next I set up issue tracking in the same bitbucket project. So my project now has a git repository and issue tracking.

Step 3: Make issue tracking easy!

For this I'm using Bitbucket Cards which is a nice, simple kanban-like front end to the Bitbucket issues. You just have to log into your Bitbucket account and set up the columns you want. I have four columns: Backlog, Next, Bugs, and Resolved. (I'm thinking of merging Bugs with Backlog, but never mind that for now)

Bitbucket Cards example (This image is from the Bitbucket Cards blog, not from my project, hence the columns are different than the ones I use)

Bitbucket Cards lets you set up a very simple filter for each list where you choose the status(es) and kind(s) of issues that go in a card column. So, open status issues of the kind bug go in the Bug column.

Column definition (This one is from my project: that's how I select what goes in the Bug column)

What's really cool is that when you drag and drop a card from one column into another, it will automatically change the status of the issue the card represents to match that in the definition of the destination column.

Another nice thing about Bitbucket Cards is that it doesn't time out easily. This is crucial since the aim of this whole set up is to make it easy - so this system works for me instead of me working for it. I open a bookmark my card page and it stays open on a Chrome tab all day.

This takes care of my 2nd goal.

Step 4: Tie it in with version control.

Bitbucket issues tie in neatly with version control (as to most of the competitors) so when I'm finished working on an issue I commit it git with a message like "Added the thingo to the whatsit. Fixes #245". If I commit this, then push it, then reload my Bitbucket Cards page, I'll see that the issue has moved to the Resolved column. Cool.

There's my 3rd goal done.

Step 5: Make it easier to CREATE issues.

You probably think that this whole set up is already way to complicated to set up, and why would I want to add another web app to the process. Well, remember my primary goal above: I want to make it so easy to add a task that I don't lose my train of thought before I get to the text area to type it in, nor do I want to lose my place in the code by the time I get done.

Now, Bitbucket Cards does let me create tasks fairly easily, but it's just a bit to clicky/scrolly to fully meet goal #1. You have to click Create an Issue; then a modal editor pops up; after entering your issue title you have to scroll down to specify the kind (bug/task) and the priority; then click create.

Instead I chose to use a second Bitbucket app called taskrd.

You can set up taskrd, by giving it your Bitbucket login, and set it on a bookmark and tab, and keep it open all day, just like Bitbucket cards. Taskrd has a much simpler workflow for adding a new task, just type it in, optionally set the kind and priority, and hit the Add button.

tasrkd interface (this image is from the Taskrd blog)

Now it's arguable that it's not worth the effort of setting up Taskrd over using Bitbucket Cards or even Bitbuckets own issue-entry system. After all, with Taskrd I have to click a tab on my browser, and click Reload on my page with Bitbucket Cards for it to refresh and get the new issue I added in the Taskrd app. But in fact, I find that I'm generally in mode or the other: Either I'm using Bitbucket Cards to organize what I'm doing next, or to look through the bug list, or I'm busy coding and entering tasks/bugs as they occur to me - all in rapid fire mode. For this 2nd mode of work, the Taskrd is great: I just keep it open on a separate monitor, and quickly enter issues as I work.

So that covers goal #1.

My last goal was easy/cheap set up. Well cheap it is: all of this is free. Bitbucket has free private repositories for up to five users and the other apps were free. Setup seems non-trivial based on the above, but really the most complicated part was setting up git to push to the bitbucket repository which will be the same anywhere. I didn't have to install anything, and connecting both of the apps to my bitbucket repository was pretty easy. Setting up the cards columns how I liked them took a bit of playing around but wasn't really hard.

Reading this back, I might come off as a bit of a shill for Bitbucket - but I really don't mean to. It's just that I've been using this process for weeks - after years of trying different configurations to track what I'm doing - and I'm really digging it, so thought I'd take the time to lay it out for others.

3
votes

If you're familiar with using TODO tags in Eclipse, a simple step up would be to use Mylyn. At it's most basic, it's a simple todo list. But, it also associates context with tasks - click on a task to activate it, do some stuff, and then next time you activate it, Eclipse will open up the relevant classes, and show you the relevant methods. Even more powerfully, if you eventually move to some other bug tracking system, Mylyn can pull tasks from those systems and present them in your IDE.

Most Eclipse downloads these days have Mylyn bundled in as standard. Just search out the Task List view and start adding tasks.

2
  • +1 I've seen Mylyn, but I'm afraid it won't help me much more than tasks in Eclipse. Bugs I find which aren't directly visible in the code tend to get lost in the shuffle, so it's less likely I'd add a bug to Eclipse when it's not open :)
    – bedwyr
    Commented Oct 28, 2010 at 2:30
  • I use TODO tags then use find / grep -o to make myself todo list.
    – sal
    Commented Nov 7, 2010 at 18:53
3
votes

I use the $10 starter license for Jira. It's cheap and I already know it well from work.

2
votes

Like others here I use either a text file or the bug tracker built into whatever dvcs hosting service.

Lots of it depends on what sort of "personal project" it is. Is it something that is ever going to see the light of day or is it just an experiment? Is this project in use by the public?

For example, one of my personal projects became moderately popular and setting up a Get Satisfaction site for it worked really well. Not really "bug tracking" but it worked great for bug/feature requests.

2
votes

Kinda surprised no one has said this yet, but there are distributed bug tracking solutions which act as part of your distributed source control i.e. the bugs database lives with your code in your revision control. Well known implementations include "Bugs Everywhere", Fossil and Ditz.

See https://stackoverflow.com/questions/773818/distributed-projectmanagement-bug-tracking and https://stackoverflow.com/questions/1851221/distributed-bug-tracker-to-go-with-dvc?rq=1 for a discussion.

1
vote

For my personal projects I use Omnifocus.

Update:25/10/2010 If i find a bug that I can't or don't want to fix immediately I quickly add it to the Omnifocus inbox. Then later, when I'm doing a review I will gather all the info that I think I will need to fix the bug and then add it to the project. It's position in the task list indicates it's relative importance.

I treat bugs the same way as requirements/features in most respects.

4
  • 2
    Thx for the response: do you mind elaborating on how you use it specifically for defect tracking?
    – bedwyr
    Commented Oct 23, 2010 at 22:20
  • Thanks for the update! It's interesting to see a general todo-tool being used for defect management.
    – bedwyr
    Commented Oct 28, 2010 at 2:29
  • Note: For Apple products only
    – Mark C
    Commented Feb 2, 2011 at 5:21
  • Omnifocus is an Apple product but I use it for my non Apple development.
    – Henry
    Commented Feb 2, 2011 at 21:52
1
vote

For personal projects, TODO-comments and a text file with TODOs and bugs etc. is usually enough for me.

1
vote

I use my own TheKBase (since I'm on OSX, I use it on .Net in a virtual machine or Mono, depending on my mood). For one concurrent user only, but: It allow for multiple hierarchies, so it goes from task manager to information manager missing no steps in between. Plus it's open source on Github and free (that's obvious, I guess).

For the curious, instructions are here.

1
vote

I use ToDoList for my personal projects; it's lightweight, free, and has plenty of features. Not sure how well it scales for team projects, but it's great for me working by myself. I'm not sure how I survived using Visual Studio's built-in task list for so long, it's crap.

1
  • On my small personal projects, the ReSharper TODO list works for me.
    – Nobody
    Commented Feb 4, 2011 at 12:47
1
vote

We use a combination of JIRA and Google Docs and Spreadsheets. I looked into other tools as our JIRA installation is older than dirt and not as easy to use as the newer, fancier, drag and drop interfaces.

I looked into Manymoon, Zoho Projects, Insightly, Redmine, and Assembla. We're going to experiment with the Assembla free Stand Up tool. It's a very simple 3 field reporting interface that asks each team member 3 questions: What did you do last week? What will you do this week? What barriers are in your way?

In the end, I think I'm going to stick with JIRA, Google Docs, and the Assembla Stand Up tool, as the combination gives me everything I need.

1
vote

I like Trac the most, because it's lightweight, easy to use and easy to configure. And the integrated wiki and the elegant repository browser are a big plus.

At work we use JIRA, which is also quite nice, but not so easy to administer. And I really miss a wiki (integration with Confluence is not so great) and a good repository browser (we just have ViewVC).

1
  • Trac is a nightmare to setup and configure.
    – user7519
    Commented Apr 28, 2011 at 17:04
1
vote

I've been using Trac for the past few years. I've used Bugzilla and JIRA as well. My personal and private consulting projects involve Trac simply because I'm used to it and to get a project going in my personal dev setup takes so little effort because the effort is over with. I've got trac connected with all I need including SVN or Git and Hudson(or rather Jenkins now).

On some client projects there is generally no choice but what they use, which often enough is nothing or some in house crap unfortunately. I'm surprised when they have a bug tracker lately. Personally though, I'm looking forward to a better offering from the OSS community than Trac. It gets things done but these days seems like such a patchwork.

1
  • Trac is a nightmare to setup and administer.
    – user7519
    Commented Apr 28, 2011 at 16:32
0
votes

I don't see the point in using formal bug tracking for small one-man projects. Usually I just keep a (very short) mental list and fix the bugs as I become aware of them. Of course this doesn't scale for large/multi-person projects, but the point is that it doesn't need to.

4
  • 3
    That's partly the problem: a mental list tends to be insufficient. Many of my defects are logged mentally, and then lost over time as new features and enhancements are put in place.
    – bedwyr
    Commented Oct 25, 2010 at 18:21
  • @bedwyr if you stick to the rule of fixing all known defects before implementing new features, this is a non issue. Commented Mar 1, 2011 at 15:06
  • @Kevin, defects can be found in prior releases while you're working on the latest iteration of a project. Would you immediately halt development on a high-priority feature to fix a low-priority, corner-case defect in a previous version? If not, how do you track them? In my case, a mental list is insufficient.
    – bedwyr
    Commented Mar 1, 2011 at 22:57
  • @bedwyr Good point, I guess it's a matter of preference. I actually would fix that defect immediately, since we're talking about a small one-man project. If I were in a big corporate setting, different story. Commented Mar 3, 2011 at 21:48
0
votes

If you use ReSharper, it has a TODO tracker, which shows you a list of all TODOs, NOTEs and BUGs in your solution. It also highlights them in your code in any colour you choose. I find this really useful on my own projects.

Not the answer you're looking for? Browse other questions tagged or ask your own question.