Robert Scoble has posted a well thought through list of 12 reasons why entrepreneurs aren’t using Microsoft’s stuff for web development. As a web developer who started out developing on Microsoft platforms, but have switched to free and open source platforms since, I’d say pretty much every item on the list rings true for me.
On the issue of licensing, however, I don’t think the problem is as simple as cost alone. Of course, free (as in beer) is always preferable on paper to spending out a heap of cash to get yourself up and running, but when it really comes down to it those costs aren’t usually so high that they become insurmountable. I think the problem is twofold.
Firstly, the licenses are extremely complex. This is hinted at early in the comments to Robert’s post, but there’s no single fee that you can just pay and then get down to work. You need to license each server and then license those servers to talk to each other (!) and then license other people to talk to those servers, and it’s all just a flippin’ headache.
The second problem is a symptom of the first. Because licenses are charged out at different rates, there is necessarily the need for artificial limitation on what any particular license allows you to do. In order to charge more of some features, Microsoft has to turn those features off in the cheaper versions. This results in having to make a choice at the outset as to what you’re going to use, and then pretty much denies you the flexibility to change further down the line. Take my problems in June with Web Edition as an example. This is pretty much counter to the way a startup operates. You need to be able to quickly change your plans and be 100% flexible as you go. Microsoft licensing makes this a real pain.
The other real issue with developing web applications on a Microsoft platform is that there’s nothing to develop with. Microsoft used to have ASP, which was a run-of-the-mill but easy and reliable method of quickly scripting bread and butter web applications with no special tools and no fuss. Nothing special, but it worked, it was easy to learn and it was cheap. It also had a strong following with loads of third-party training resources, communities and support structures. Microsoft decided one day to kill all that off and replace it with ASP.NET and the .NET framework.
I’m pretty sure that ASP.NET is fairly decent and works as described, but the problem is that it’s a very big, complex and powerful lump that is just way too over engineered for normal day-to-day web development. Imagine rounding up all the PHP developers in the world and saying sorry chaps, the game’s up, you’ve got to use Java from now on.
ASP.NET is basically a high level enterprise beast in the same market space as Java. I’m sure that’s what Microsoft were going for, but what they failed to realise is that most folk don’t want or need a Java-level solution for their basic web apps. They took away an easy scripting language and offered a monster in its place. Getting the most out of it requires expensive development tools and expensive hardware to run those tools on.
Left with the choice of needing to retrain to develop in ASP.NET or take a side step to the more nimble and thoroughly more modern PHP, guess what everyone did. The market shifted from being very ASP-centric to merrily jumping on the PHP bandwagon.
That’s great for PHP, but it still leaves Microsoft with no light-weight scripting language for developing web applications. No PHP competitor. You can still use ASP of course, but it’s unsupported, hasn’t been updated in years, is limited in its ability to support OO, and really isn’t suited to modern development styles. But it’s pretty solid. Like a geological feature.
So that’s why I hesitate to chose to develop for Microsoft platforms these days. Lack of clarity and flexibility in the licensing structures, and no light-weight scripting language to turn web apps around quickly and easily.