I saw a great post this afternoon by Rob Walling of Software By Rob, where he talks about Competing With Open Source. His main point was the fact that while there are some great open source projects, most open source software suffers from usability, support and documentation issues (amongst other things) and this is where commercial software can have the upper edge. While I could see the point he was trying make, I found that over the last few years I have developed pretty much the opposite view. Of course, it all depends on the segment of the software market that you’re looking at (enterprise, mass market etc.), but lets start with the big ones.
Enterprise Software Development
If you’ve done enterprise software development for any length of time you would have heard of or used some of the biggies (note I have predominantly been doing Java development):
All commercial, all owned by big companies, all established players in the market place with years of development effort put into them. So, let us examine these against some of the more pertinent points:
- Easy of installation – I don’t know about you, but I would say all three that I mentioned above get a massive fail for this one (if you disagree please, I’d love to hear you explain how all those are easy to install)
- Great documentation – Sure there is a LOT of documentation for all of them, the value of it however is marginal. Most of the information is probably there, finding what you need is a whole other story. Another big fail.
- Usability – yeah all right, they are usable (sort of), but they have nothing over their open source counterparts in this department. Maybe not a fail, but certainly far from brilliant.
- Support – well, it is certainly there somewhere. You know it exists, getting your hands on some of this support is a whole other matter. Even if you do manage to get through the layers of bureaucracy and get a hold of someone who knows what they are talking about, it gets you precisely nowhere if you found a bug with the software. It’s not as if IBM will be rushing out a new Websphere release just to fix your little issue any time soon and even if they did, let’s see you easily upgrade.
Notice that I only named 3 big commercial products, that’s not by accident. Undoubtedly there are hundreds of others used in enterprise software development, but the number pales in comparison to the sheer amount of open source libraries and products that are in general circulation. Lets see how many I can list off the top of my head in 5 seconds:
- Linux
- Open Office
- Java
- Eclipse (IDE)
- NetBeans (IDE)
- Ruby
- Rails
- Mongrel
- Spring
- Hibernate
- Apache (web server)
- Ant
- Maven
- Ivy
- Hudson (CI)
- GWT
- Struts
- Anything Apache Commons
- Bugzilla
- Quartz
- Tomcat
- XPlanner
- Groovy
- Scala
- Acegi (Security)
- JUnit
Pretty impressive, and that was the very tip of the iceberg. And the interesting thing about most of those that I listed is the fact that they have decent documentation (for the most part), are reasonably easy to use, are reasonably easy to install (if you know what you’re doing, at least a little) and have great support not only from the developers but from the community. Which is the truly awesome thing about open source products, even the smallest ones will often have a community form around them, a community that is usually vociferous, helpful and that includes developers who actually wrote the product. This is something that even the biggest commercial products usually lack – a helpful community. And consider that with open source software if you do find a bug, you sometimes actually have a chance of getting the products fixed and a new version released pretty much just for you. Granted, this will never happen with the bigger open source products but at least you have a chance and at the end of the day, you can always just patch it yourself and build your own copy (and submit your fix to the developers) because the source code is right there (difficult yes, but at least possible). And to get back to documentation, if you really think about it, open source software is the best documented software of all because you always have the god’s own truth to have a look at – the code. If you don’t understand the doco for an open source product, you can read the code as a last resort; for a commercial product – good luck!
Software For The Masses
Of course we have so far been happily ensconced in developer land, but what about the average Joe Bloggs out there, what’s the landscape like for him/her (Joanne Bloggs :)) when it comes to open source vs. commercial. The field is a little more even here, Joe is not going to read the code, he pretty much wants his software to just work and you know what more and more often these days open source software just does. Sure, commercial products probably have the majority of the market at the moment when it comes to mass-market software, but I would guess that their market share is shrinking. Open source developers have learned that they need to build for the consumer and not for other developers and they’re slowly starting to do so. And the abundance of open source tools and frameworks is making this easier and easier for them.
The only commercial software I have on my machine is … well the operating system (I am a gamer so Windows is a must), and even there my machine is dual boot :). Aside from that, everything else I need to do with my machine is done by free or open source software:
- Firefox
- VLC media player
- 7-Zip
- Open Office
- WinSCP
- Putty
- Windows Live Writer (I am using this right now :))
- Notepad++
- Ruby
- ImgBurn
- Foxit Reader
- and many others
All of these were easy to install (they just worked), intuitive to use and have decent documentation as far as I know (never had to look at any). And as far as support goes, well once again we have the community which is more passionate and helpful around all of the apps that I listed than around most commercial products.
But, I am a developer, I hear you say, I know how to use and tweak all this stuff, surely Joe Bloggs would find things much tougher. Well, to that I have this to say, the only commercial software my parents have on their machine is … once again the operating system, and only because I didn’t want to confuse them too much (they are not developers :)). They’ve been using it fine and I haven’t heard any complaints about lack of documentation, support or usability, the machine does everything they want it to do, what else do you need?
This day and age commercial software is going to find it harder and harder to compete as the world is getting more connected and more savvy. Sure they can make the documentation great (which historically has not been the case), but so can open source software, and the 80⁄20 rule applies where it all becomes moot after a certain point. Commercial can be more useable, but once again 80⁄20 rule and you really need to innovate hard to stand out. Easy of installation is getting tougher and tougher to compete on as open source tools get more savvy about this one. Finally support is left, and honestly, no commercial software company has the same type of flexibility to offer support as a great open source product with a strong community. The only thing that you end up competing on is price and ‘nothing’, is going to beat ‘something’ every time.
Image by BL1961