Why I Love Open Source

Every user of an application has run into small but irritating characteristics of that application. Most of the time, they can be easily ignored. But sometimes they are part of a repetitive task, and then they become problematic. They have a disproportionate effect on both productivity and the user’s overall impression of the application.

Just about every enterprise makes nice noises about how they listen to their customers and how customer service is important to them, but the odds are very low that comments about small irritations will result in code changes. This is partially because most companies don’t actually care as much about customer service as they pretend to, and partially because tracking these small things and then sorting through them, removing duplicates, and distilling them down to something that can be easily understood is a very complex and expensive task. Most of the time the effort involved simply doesn’t justify the results.

This is something that always attracted me to open source. As a developer, the odds are pretty good that I can find a fix for that thing that irritates me. Then I can change the code to fix my version. If the irritation is idiosyncratic — basically if I’m the only one who doesn’t like it the way it is — then that’s where the process ends, and I’m happy.

The first credo of open source is that you try to give back to the community. So even as a non-developer there is an incentive to find the bug tracker or support forum for the project and to suggest a change. Sometimes that works[1], but a lot of the time good comments and patches simply fall through the cracks. After all, if tracking details like this is difficult for a for-profit corporation, it’s not going to be any easier for a project run by volunteers!

What is really satisfying is getting sufficiently involved in a project to be able to have a direct influence on it, as I am with “Joomla!”. It’s great to be able to identify a minor irritation, to fix it, and to get it to a production release. This has been my experience twice in recent weeks. I’ve implemented small changes to the system that make it just a little easier to use[2, 3]. Not only will I enjoy the product more as a result, I’ll have the satisfaction of knowing that thousands of systems administrators out there might think just for a moment, “oh, they fixed that – great!”

It is an interesting experience. These small tweaks and fixes that I get to make aren’t the biggest contribution I make to the project in terms of lines of code or hours of work, but they’re tangible and real. The direct impact on the user is visible and easy to understand. Implementing unit testing and contributing to the building of a “Culture of Quality” in the project are more complex and significant contributions, but they’re also more abstract. The small tweaks are actually kind of fun, and it’s nice to know that here and there, they is me.


  1. If you’re an Eclipse user and noticed that v3.1 puts the entire file path in the window title… that was my suggestion. In the web development world where you can have many files called “index.php” open, this helps you quickly figure out where you are.
  2. Add a new module to a “Joomla!” site from version 1.5.4 onward, and the list of available modules is now sorted alphabetically down the columns, rather than split across rows. We still have an issue to sort out with international characters, but it’s an improvement.
  3. Starting in version 1.5.5, all panes in the parameters block can be collapsed. Before this change, if you had a long list of parameters that ran off the screen, you would need to scroll down to the bottom in order to expand a panel below. Now you can collapse the long block, which lets you see the panels below, and then expand the one you want.