Scmbug helps you write software. It ties what changed in the software source code with why it changed, and that helps you stay disciplined.

In short, Scmbug rejects commits missing a bug number in the commit log, and commits against bugs you shouldn't be working on. But there's something bigger happening here: Scmbug helps establish a software change management process. It helps track the changes you make, plan what to work on next, and trace problems back to their root.

Rejecting commits is instant. If you are changing software when you are not supposed to you get to know it immediately.

It feels silly to use software that forbids you from writing software. But it feels less silly than not remembering what you were thinking when you wrote the software. You make many decisions you soon forget when you are programming and at some point you can't tell how to backtrack or what to do next.

When you use Scmbug you can always find your way back. You leave a trace back to why you wrote every line like Theseus left a thread back out of Minotaur's labyrinth. You also leave a trace towards the opposite direction. For each bug you describe, Scmbug inserts commit logs in the bug comments so you know what changed in the source code to fix it.

The biggest advantage however might be the indirect effect on what you choose to write. You can't make changes at will anymore, so you have to justify why you are writing something. You are forced to stop and think. You stop to look for a bug number for the change, and soon can't help but think: why am I doing this?

Scmbug gets you in the habit of stopping to rethink as soon as you think of making a change. If you are tempted to go down an unimportant path, you are dragged back to the todo list that is your issue-tracker and notice soon enough. If instead you are working on something important, you soon realize your assumptions are incomplete. You start entering new bugs in your issue-tracker to describe what you haven't considered, which helps make progress in your design before you continue programming.

So not only does Scmbug help avoid writing bad programs, it also helps think through writing the good ones.

Of course Scmbug can only help with thoughts circling in your mind. It would be miraculous if it could generate ideas for you but unfortunately it doesn't. There are other ways to do that.

There are two parts to Scmbug. Integration glue is added as hooks in your source code version control system like CVS, SVN and Git that lets it control commits. The glue talks to a server daemon to integrate with an issue-tracking system like Bugzilla, MantisBT, and RequestTracker.

The latest version 0.26.22 is available here, there is a user manual [HTML single] [HTML multiple] [PDF], and an issue-tracker.

Neither DynAMOS nor UpStare would exist without Scmbug.