A while ago I quit the commercial IT world to work as a freelance web developer. There were many aspect to this decision, but one of the big ones was frustration with the software that I had to use.

I’ve been meaning to blog about this for ages, then tonight, Elliott Richmond tweeted a link to a post he’d written about Open Source vs Proprietary software, and I took it as an excuse to get my thoughts down. Those thoughts are collected here in a slightly edited copy of my comment on Elliott’s post.

Elliott’s post is more about the topic in the context of website publishing and content management systems. my views are probably more about commercial software in general.

I’m not sure if this belongs on my personal or work blogs. Lets start with it on the personal and see how it goes:

I left a well paid job in the It department of a telecoms company to take the less-well-paid and less-secure (possibly) freelance developer route.

One of the main things that frustrated me about the big-corporate world was their insistence on using COTS (Commercial Off-The-Shelf) software from big vendors. I was mostly using a product set from a very large, multi-national software supplier. Very much closed-source. And it was a nightmare.

  1. It was expensive: initial licensing costs, ongoing support and maintenance costs, were both huge 6-figure sums.
  2. It was badly supported. Sometimes even getting the support team to acknowledge an issue was difficult. When they did, actually getting to deal with someone like a developer who understood what the product was doing was nigh-on impossible.
  3. It was badly written. Even basic defensive coding techniques were not employed. Things would break with no error, no log file message. I remember one particular Windows-based tool that crashed if you ran it as a different user to the one you installed it as. Shocking. No error message. No log. No test for the error and gracefully exit.
  4. Development/release cycles were long. Aside from the fact that bug reports and enhancement requests were rarely actioned/implemented, when they were, they were part of a three-month or six-month release cycle. No quick fixes!
  5. Development was mostly by acquisition. The product life cycle seemed to be: produce product roadmap, see useful features in competitors product, acquire competitor, declare competitors tool/technology as ‘the next big thing’, scrap old product, goto 10 (if you know what I mean). Features promised on the roadmap (which we inevitably promised on to our clients) never appeared as the future was constantly being re-written.
  6. Products tried to be all things to all men – ended up doing nothing well.

As a third-line support engineer trying to provide high-quality, high-value services to large corporate customers with huge wallets, it was incredibly frustrating having my hands tied by these constraints imposed upon me, despite paying exorbitant amounts for the pleasure. Telling a client ‘yes, I know it’s broken, it might be fixed sometime, it might never be fixed’ was simply not acceptable.

With OpenSource I see a bug, I investigate a bug, I fix a bug (note: I already have the fix at this point!), I submit a patch, usually released within weeks. Heck, even support is better. I use a premium forms plugin. I had a problem with something I was doing. It was investigated and fixed – with an updated, patched version of the plugin, within 48 hours. This in a product I paid a three-figure sum for.

I think the key difference isn’t openness, documentation, flexibility, or cost. It’s that people who write OpenSource software give a damn. They care. The make things out of love for their trade.

This is not true of all Open Source software: some people write stuff, release stuff, and then never update it. And I’m sure my experience of COTS isn’t universal.

In contrats, COTS suppliers are in a race to the bottom: lower support and development costs, and increased profit. Support and development are just processes that employees follow as they resolve as many tickets as possible within SLA and cross tasks off a todo list. They’re just pawns in a game designed not to produce good software, but to put cash in shareholder’s pockets.

Rant over. For me open-source wins.