Ok, so theres this massive need I’ve found for good distributed bug tracking which is actually platform independent. And this brings me around to my gripe of the week. Platform Independence.
Firstly, I classify myself as an indie developer – that means that I use open source and free software tools in my tool chains, and I use developer / free to use sdk’s to develop applications.
So I’m not able to afford any of the larger programs and tools which are used – things like the Visual Studio or the Team system. Things like Bug Management and Tracking, things like support and ticketing. To some extent things like release managment.
And why would I want to? There are plenty of open source, free, and community based tools out there which do of these things. The problem is however is that they often don’t work across all platforms. They often have requirements or don’t “fit together properly”.
Last night I found a quote by Doug Vargas (I dont know who the guys is or I would have linked to it):
“It’s easy to cry ‘bug’ when the truth is that you’ve got a complex system and sometimes it takes a while to get all the components to co-exist peacefully”
So with this in mind, this is where things begin to get a bit more tricky. The first problem is that I don’t work on one project – I don’t have a single project which is “my baby” I dont have a single passion in life which takes my complete and utter concentration, instead I have a few – simple single use tools which I reuse in other projects. I have a collection of libraries and tasks and I treat each one as a new project and I keep them seperate.
So when it comes to using some of these tools – they are really only for one project. For instance, trac – awesome huh? But I dont want to have to configure one for every application that I write. And this is where some of the harder hitting application come in, but there really isn’t much for the small indie people.
Then we find that half these tools only work in linux. Or windows. Or they work in Cygwin and they require some bizaare libraries. Its very easy to write a tool which does what *you* want and then not worry about everyone else – in fact this is probably the only way that the tool gets written.
So I’m starting work on a platform-independant distributed bug tracking app (this is because I want to track bugs inside of the projects) and I’ve decided to write it in C# which means it will be dependant upon Mono or .Net being installed on the target platform.
I’ve worked out that I need a scriptable level inbetween my application and the SCM – because I want to make it independant of the SCM I am at the moment tying it into Git, however I can see how I need to make it indepenant by having a script wrapper around the SCM (which might be Git or might be SVN or something like that) which would provide the answers to a collection of questions that I want to put to it.
Its getting things to coexist peacfully which I think is the big Programming problem.