Taking charge of your own destiny
Scoble has posted 12 reasons that Web 2.0 entrepreneurs are steering clear of the Microsoft platform. It’s an interesting list (the comments are full of treats too) but for me it misses the key reason that open source development tools are so compelling: they put you in charge of your own destiny.
Allow me to elaborate.
As developers, our lives revolve around abstractions. The key activity when programming is designing and using abstractions—we weave them together to create new ones, with our target being an abstraction that lets our users achieve their goals.
The problem with abstractions is that they leak. The taller the stack of abstractions (browsers on templates on Django on mod_python on Apache on Linux on hardware on a network) the more components there are that can go wrong. When they do go wrong, we need to work out why and find a solution.
If your development stack includes closed source components, there’s a limit on how far you can dig. Run in to a bug is the underlying platform (or an undocumented feature or just something you don’t understand) and you are left at the mercy of your vendor. You only control the top part of your system.
Contrast this with open source. If some part of your stack breaks, you have a bunch of possibilities:
- Go to the project’s bug tracker and seek a solution there.
- Work out the cause of the problem and fix it yourself.
- Hire someone else to fix it for you.
Proprietary software vendors may offer paid support options, or even give you access to their bug tracker (if you pay them enough). But if they let you down there’s nowhere else to turn. With open source there’s always something else for you to try.
There are a great deal of other advantages to developing on top of open source, but to my mind the ability to completely understand and control the abstractions that form your building blocks is the most important of them all. Unfortunately for Microsoft, it’s also the one that is hardest for them to duplicate.