People often groan when they hear of someone making another game of Tetris, Window Manager, or audio program. After all, people ask, “Do we really need another? Why can’t you just contribute to fixing annoying bug X in gTetris/KDE/xmms?” I’ve always been on the side of the argument that said – “So what! They’re doing it for free. Not only that, but they’re not getting paid for this. It’s their hobby. So you can’t tell them what to make. If they don’t WANT to help Amarok, then leave them alone. Don’t download their program and they will eventually lose interest.” I’ve never been one for telling people what they should do in their spare time. (Not in any serious sense, anyway)
But I never stopped to think about what motivated people to create this program of which there are already hundreds. I just always assumed it was an ego thing – so it would be a program THEY created. Alternatively, I also recognized there is SOME scope for a few different players. For example, what if you hate Mono? Then you won’t want Banshee. So it’s nice to have Rhythmbox. Or maybe you run KDE and don’t want to have to load the GTK libraries so it’s nice to have Amarok. And if you want to jam out, but don’t want to have such a high memory footprint you can run xmms. Or, if you’re one of the spartans who shuns the GUI there’s mpg123. But after that why create another?
Recently an alternative reason for creating the umpteenth thing came to me. Perhaps people are just doing it to scratch a programming itch. Ever since I learned my first modern programming language (ie not BASIC), I’ve wanted to write a program. After all, my head is fully of knowledge of these great programming languages and I want to create something. It’s like having the impulse to write when you first learn what words are for. I was taught Java at university and I’ve taught myself Perl, Python, C, C++, C# and PHP. As I work through the book, tutorial or HW I create all of these toy programs. They do silly things like calculate the area of a square or keep track of the stats of cats (to demonstrate OOP). When I’m done I want to create something useful! I want to make something that I can share with people and they’ll say, “Well, that’s rather neat. I never knew a computer could solve that problem for me.” But what hasn’t already been created?
Sure, I’ve written myself a few bash scripts, python programs, and Perl scripts, but those were for very narrow problems I needed solved. So far only Pydvdauthor has been general enough to share with others on freshmeat. Some people here and there have downloaded it. But even this program has 3 or 4 other programs in the same category. I only created mine because I didn’t need to futz about with DVD Menus. I just wanted the videos to have chapters.
Take another example – GnomeDO is really just a fancy alt-F2. Avant Window Navigator is just a cool looking version of the task bar – which we’ve had for ages. So there really isn’t anything NEW to be made. It’s just people scratching an itch. And people take all that already exists and perhaps they combine it in a new way. Do we need another music program? No. But what if you took it an combined it with a web browser a la Songbird. Well, technically Amarok was already doing this via KParts. But Songbird adds some other features here and there. And maybe they could have added them to Amarok or Banshee or xmms. But these guys were already the ones behind Winamp. They could have turned Winamp into Songbird – but they wanted to try something different and flex some different coding muscles.