Scmbug helps you write software in a disciplined way. It ties what changed in the software source code with why it changed.

But it also does more than that: Scmbug helps establish a software change management process. It helps track changes, plan what to work on next, and trace problems back to their root.

The most noticeable change in your workflow is that Scmbug rejects (a) commits missing a bug number in the commit log, and (b) commits against bugs you shouldn't be working on. Rejecting commits is instant. If you are changing software when you are not supposed to you get to know it immediately.

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

It feels somewhat silly to use software that forbids you from writing software. But it feels less silly than not remembering what you were thinking when you first 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.

With 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 to the entrance of Minotaur's labyrinth. You also leave a trace towards the opposite direction. For each bug you file, Scmbug inserts commit logs in the bug comments so you know what changed in the source code to fix it.

The biggest advantage though is that it gets you to act. Since there is no other way to commit source code unless you first file a bug, which is an easier task, you have no other option but to file one. That's enough to jump-start an impromptu planning session that sets the wheels in motion.

The most unsuspecting advantage might be the indirect effect on how you choose what the software should do. Since you can't make changes at will, 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 unpromising path, you are pulled back to the todo list that is your issue-tracker and notice soon enough. And if you are already working on something interesting you often realize your assumptions are incomplete. That leads to filing new bugs about what you just discovered, which helps make progress in your design before you resume programming.

So not only does Scmbug deter you from writing bad programs, it also helps you 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 also generate ideas 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.