This series of articles (The Truisms) is aimed at imparting some of the things we find to hold true no matter the project one undertakes in the space carved out by our interests in Open Source and Free Software engineering. The first article in the series was If you don't know why you're doing it, you shouldn't be doing it


Of all the truisms to date and planned, I would say that this is the only one actively intended to discourage you from writing that program you had the idea for the other day. This is because we have yet to discuss that critical aspect of software -- the people who use it. As many seasoned software authors will tell you, if you ask them, writing software would be so much easier if nobody ever wanted to use it afterwards.

It's often the case that people who write software wake up in the middle of the night (or lunch, or boring meeting about how everyone missed their targets this week), feverishly excited about a piece of software they just imagined which will change the world. Everyone will want to use it, it'll be amazing. It rarely is, and one of the best tests you can apply to your idea is simply: Would I want to use this? Obviously you can't apply this test to software you have to write for a living, but we're not on about that boring stuff here. We're talking about software you want to write for fun, for excitement, for the challenge, for yourself.

One aspect of this particular truism is that when writing software when you're not being paid for the effort is that what you write must be of value to someone. Back in the earliest part of this series we talked about how if you don't know why you're working on something, you shouldn't be doing it, and we gave a number of possible reasons for working on a project. The longer-term a project becomes, the more important it will be that at least one of those reasons is that it is solving a real problem for yourself. Otherwise you will lose interest in doing anything on the project. The someone to whom the project is of value really must include yourself at some level.

The other aspect is simply that in order for people to want to use something, you need to make it nice to use. Unless your target audience is significantly different to yourself, that means you need to find it nice to use. User experience is hard enough to work on at the best of times, but when you can't imagine yourself as the user it's even harder. Open source hackers often don't have the luxury of being able to pay someone else to tell them how something should work and as such the only user whose experience you can fully understand, and thus optimise for, is your own.

A corollary of this is simply that if you lose interest in a project you previously worked on, which is in use by other people (packaged in a distribution fr. ex.) then you really should find someone else to pass the mantle on to, for maintenance and development. I have been in this position several times and now there's a lot of code out there in the world, some of which you may even be using (deliberately or inadvertently) which I no longer assert maintainership over. I'm glad I wrote it, as are many others, but I'm equally glad I no longer work on it because I wouldn't want to use it any more.

Your homework for this week is to go over your current active projects, decide if there are any you no longer use, and if any of those are in use by others, find someone else to take on the mantle of maintainership. I'm not saying give them up entirely, but find someone who is interested in using the software and who you feel can do you proud in continuing to make it better software for all its users. Regardless of whether or not you find any projects which fit into that category, revisiting all your projects and deciding if any of them are now due to be mothballed can be a very cathartic experience, freeing a part of your brain you didn't even realise was consumed with thoughts about stuff you no longer actively use. Also you might find something you forgot which really solves a problem you were planning on writing that amazing program to solve, just the other night when you woke up in a cold sweat.