For some reason, open source solutions aren’t that popular where I live. Historically, the UK has lagged behind the other major developed countries in North America and Europe in open source adoption, for reasons I’m not entirely clear about, but generally that attitude is changing over time, as discussed in a report issued by Atos Origin a couple of years ago (funnily enough, I worked heavily with Atos for several years in a previous job on a project that included many open source components). However, I’ve generally found that locally, there’s a little more resistence to open source adoption (and I’m talking in the context of developing custom applications now, not off-the-shelf software) - that is, except in a few rare pockets.
I try to attend my local developers group meetings whenever I can, but I always find myself feeling like the maverick in the room since the vast majority of the people there are heavily invested in purely Microsoft technologies - to the extent that many would rather wait for Microsoft to implement their own version of a given framework / feature, than risk using an existing open source solution, regardless of the comparative merits. The primary arguments for this approach are as follows - hopefully I’m not misrepresenting them, I’m trying not to put my own spin on them:
- Features that are ‘in the Microsoft box’ are easier to set up and are more consistent with existing components
- It’s more acceptable to deploy to most customers, who are comfortable with Microsoft products, but who would resist deploying other products
- Microsoft isn’t going away any time soon, so they feel more confident that the feature won’t be abandoned or turn out to be the ‘wrong’ decision
- Microsoft haven’t abused their single-supplier position (in terms of if you use the most recent versions of .Net, you have to deploy on Windows / SQL Server) in the past, and aren’t likely to in the future
Now, I can see some of the reasoning behind these arguments; I’m not going to say they’re invalid because they’re clearly derived from the personal experiences of the people concerned, and I respect their opinions - even if I don’t necessarily agree with them. In contrast, my experiences have led me to very different conclusions:
- Assembling ‘best of breed’ components based on individual merits can often give superior results to sticking with what one manufacturer produces, and in practice isn’t as difficult as is made out
- Brand loyalty is not necessarily a sound basis for purchasing decisions
- Good open source projects aren’t going away any time soon either; pick a popular project and it will last as long, if not longer, than any Microsoft product. In fact, Microsoft has a habit of changing tack pretty often when it comes to the recommended set of libraries to use.
- Genuine competition among suppliers is important to maintain a proper balance; never trust that a supplier will not change something when it suits them even if it adversely affects you. The more control you have over the solutions you use, the better.
I have to say that most of the caution and outright resistance that I’ve experienced over the use of open source, in all the circles I move (business software and graphics software), at its heart comes down mainly to fear. Fear of the unknown primarily, and I think that the main issues are:
- Confusion about choice - in culinary terms, Microsoft is a set menu, open source is an all-you-can-eat buffet. The set menu needs very little thought - you just turn up and take what you’re given. It might be good, it might not, but it’s low-effort because someone else has already lined it all up for you; just watch out if you’re a vegan. At the buffet, you’ll get a huge amount of choice, and you can be sure there will be at least something you like and which meets your particular dietary needs. But it requires a bit of active participation from you to decide what’s best for your needs. Personally, I consider choice to be a blessing, but it’s clear that to some, choice is a distraction.
- Fear about Longevity - anyone who’s used proprietary software will at one point or another come a cropper over obsolecense - if you haven’t, you’re one of the lucky few. As such, it’s understandable that people would be apprehensive about ‘backing the wrong horse’. However, what is often not appreciated (IMO) is that open source changes the rules to the degree that it makes it less likely that you will be caught in this trap. The most common causes of obsolecense, in my experience, are company acquisitions, introductions of new software lines from the supplier, and very occasionally (but least often), company failure. In the former 2 cases, the company explicitly chooses to withdraw the software, or stop supporting it. Because of the closed license, they are able to cut this umbilical to basically force you to spend money on a newer version or alternative product that the company wants to sell you, with all the inherent migration costs on top of that. If this has happened to you, when all you wanted to do was keep your existing software which worked perfectly well, you have my sympathies. The difference with open source is that you always have the source, and as such anyone can support the software, at any version, should they choose to. The more popular the piece of software, the more likely this is to happen. Even with Ogre, which isn’t enterprise focussed and nowhere near as big as some projects, I have people backporting bugfixes and new features to old versions we no longer update - because they can.
- Fear about Support - a lot of people think that if you use open source software, you’ll need to be digging about in the code all the time with a spanner, and that you’ll be told ‘go fix it yourself’ when you find a bug. That’s not really the case - of course you can tinker around in the code if you want, and personally I find that incredibly empowering, because if you hit an issue you’re never completely stuck - anyone who has hit an issue in a library that they’ve had to try to work around, and wait for a supplier to fix it, will know what I’m talking about here. But popular open source projects are more often than not incredibly well organised, with great free support, and commercial support available if you need a hard SLA. Again because you’re not dependent on a single source of support, you can get assistance from anyone and everyone, and you might be surprised just how forthcoming this is. It feels uncomfortable to those who just want to lodge a support call with one party (in which case, take out a support contract with one of the companies that support open source officially), but once you get used to the community approach, you can find it can be a lot more powerful than the traditional model.
Having lived and breathed open source for the past 7-8 years, my perspective is so different that I find these fears very difficult to understand now, I guess because I’ve just become used to the environment. I’ve in fact had more problems in the three areas listed above with traditional proprietary software in that time, than I have with open source software, to be honest. As such, I’m completely comfortable recommending and using open source, particularly when it comes to frameworks and libraries. In fact I always look for open source solutions first now, no matter what need I have - and in the development field I’m very rarely disappointed. I hope that one day I can convince more people locally of the merits of thinking outside the Microsoft box 😉
*edit: One of the barriers is that, at least based on what I’ve seen, open source projects that use .Net tend to be less successful and less feature rich than their non-.Net counterparts, so this doesn’t help the perception in .Net users that open source projects often fail (when in fact outside that environment, they flourish far more often). I’m not sure why this is, maybe it’s due to the culture - Microsoft never supports open source projects openly the way others like IBM / Sun do, in fact they’ve historically been quite hostile to it (see Gates’ ridiculous ‘communism’ rant), the best they tend to do is just hire people and fold them in to their internal dev teams - cool for the individual but I do wonder how healthy that is for the project itself - does it mostly die off because the person is now concentrating on internal development? There’s also that .Net is still relatively new compared to others (although the popularity of Ruby would suggest that’s not the main issue), and the closed nature of the base platform which must put some open source developers off.