issue tracker

This is some more brainstorming and notes about a bugtracker that I'd like to have (and hence will have to build, probably).

General desired features

Those are things that I want, not in any particular order of importance.

Technical notes

Since we want it to work in distributed way, issues can't be identified with consecutive integer numbers, like they are in most bugtrackers. Instead, we need to use some kind of a hash, like UUID. Because hashes are generally harder to remember than small integers, maybe it would make sense to allow to refer to bugs by just a fragment of their hash, as long as it is unique – just like Mercurial does with revisions.

To avoid conflicts, it seems wise to put each issue in a separate file, and maybe even each comment for an issue in separate file. Then it would be nice to group them in directories. We end up with directories filled with lots of text files – not unlike maildirs. Maybe it would make sense to reuse some maildir libraries?

The issues themselves need a couple of key-value pairs and a text description. Probably an e-mail format would fit here well.

We need fast searching and querying for that bugs database – something that's not easily done with lots of small text files. That's why it would probably make sense to index all the searchable information in an sqlite3 file, stored outside of the repository and re-generated when needed.

Ease of deployment means that I want it to be a single python file acting as a commandline tool, doubling as a WSGI web application and maybe tripling as a Mercurial plugin.