Is Microsoft’s platform prohibitively expensive for large scale web deployment? Would licensing costs have killed Twitter/Facebook early?
I would argue that the cost of the Microsoft stack is a lot more than just the license fees.
Firstly, by running on Windows you’re cutting yourself off from a huge amount of high quality open source software. Many crucial open source infrastructure components lack a Windows port (the Varnish cache server is a good example), and many others have Windows versions that aren’t well optimised or actively maintained. Other exciting inventions (such as Redis and Node.js) end up around for several years before they are ported to Windows.
Secondly, you’re committing yourself to sunk costs fallacies. “We’ve paid the license fee for this, so we should definitely use it rather than switch to something else or we’ll have wasted the money”. If you’re building with the open source stack there’s no psychological penalty in replacing a component that isn’t working well enough with an equivalent. It still costs you in terms of time, but at least the money you’ve already spent doesn’t bias your judgement. A concrete example: I’ve seen many open source stack companies switch from Apache to nginx for serving static files—it usually only takes a few hours (nginx has a very straight-forward configuration syntax) and can provide significant performance improvements.
Thirdly, building on the Microsoft stack restricts your available talent pool somewhat. Don’t get me wrong: there are some fantastic developers out there building on Windows, but in my personal experience (clearly skewed by my preferred development environment) the best developers I know, both in person and online, mainly build on the open source stack.
License fees have to be managed, which itself takes time and hence costs money. If you hit a viral inflection point and your traffic explodes up overnight, having to obtain licenses for all of those new servers you end up launching is an extra unwelcome headache at exactly the wrong moment.
The existence of a license fee also makes it harder to just try software out. With commercial products you have to download and register for trial versions, or contact a salesperson to get a demo. You can try out an open source product, in full, just by downloading it without having to talk to anyone.
And finally: the killer argument for building on open source is that if something breaks, you can fix it yourself (or find someone who can fix it for you). You don’t have to rely on expensive support contracts with the original vendor, followed by weeks of back-and-forth with their first, second and third levels of support before an actual developer hears about your problem. Instead, you can dive in to the source code, hire an independent consultant (which at least means you can shop around), or jump on an IRC channel or mailing list and ask the project maintainers to take a look.
Microsoft advocates will frequently talk about “total cost of ownership”, and point out that just because software is free doesn’t mean it won’t cost you money to adopt. I guess I’m making a counter-argument here—the costs of commercially licensed software are a lot more than just the cost of the license.