when a programmer writes flame war bait…
In the world of software, disparaging a certain tech stack could quickly become a slight only one notch less offensive than insulting someone’s mother. Hey, if you spent many years working with the same technologies day in, day out, and a random stranger came along to mock everything you’re doing as useless and irrelevant with a snide smirk, you’d be offended too. The only thing that makes for more flame war fuel on tech blogs than trying to rule which programming stack is better is attacking an entire realm of ecosystems, most popularly Microsoft’s .NET and the open source community’s top technologies. And a founder of StackExchange and expert tech blogger Jeff Atwood managed to do exactly that when discussing his new commenting system startup. I generally like Atwood’s technical commentary because he brings a lot of depth into the debates he starts, but when he gets it wrong, he gets it spectacularly wrong. To borrow from Minchin, in for a penny, in for a pound I suppose, and the results can be downright shocking.
With the disclosure out of the way, let’s get back to Atwood and his first major complaint about the .NET ecosystem: licensing. True, Microsoft does like to have many editions of the same big, important product with numerous licensing schemes. But they’re not that hard to figure out. Put together a list of the features you’ll need and get a team headcount. Then use the version that supports all the features you want (no sense for paying for features you’ll never use), and get a licensing scheme that covers everybody on your team. If this is Atwood’s idea of hyper-complex, tax code level accounting horror, one wonders how he buys a computer or a car. Customizing a private cloud is just as involved of an endeavor even with an open source stack. No, you won’t have this with open source tools, but the day or two you’ll save in requirements planning will be used to configure the tools you download to work they way you need and load the additional set of tools you’ll need to manage the tools you just downloaded. That’s the trade-off.
You see, open source software is great but it does come with a hidden cost. It may be solid it might be free, but more often than not, it will rely on other open source projects or components which may or may not work as advertised and may or may not be updated on time. And as many programmers will tell you, the more dependencies in your project, the more the odds that one of them might break and bring the whole thing down. For a smaller project, you might save a whole lot of money. On a big project, the risk may be too great. But hey, at least open source is free to download and use unlike those Microsoft tools, right? And according to Atwood, an open source project in .NET is just too hard and expensive to be ran by someone in another country, a lone, gifted programmer in Central Asia or South America, right? Actually no. You can get all the tools with virtually all the functionality you need right now, free. Microsoft gives them away as Express editions and you can mix them into a full, open source home development environment. If you’re a student with a .edu e-mail, you can download professional editions for free as well.
So if Visual Studio Express editions are free, you can store and manage your code in the cloud for free, SQL Server Express is free, and the only thing you might have to pay for is IIS (which comes with Windows 7 Pro for a small price hike when you buy your computer), how is the LAMP stack (Linux running Apache with MySQL and PHP/ Python) the great equalizer for developers across the world? Because Apache is free and instead of IIS they’d have to use Visual Studio’s built-in Cassini development server for web apps? There’s no cost barrier to .NET. If you’re so inclined you can even get it on Linux using Mono and a free IDE. Microsoft makes money from a developer using the .NET stack when the developer is working for a mid-size business or a huge enterprise. Otherwise, you can be up and running with it in an afternoon for the low, low price of absolutely nothing at all but your bandwidth costs, for which your IPS would already bill you even if you used that time to watch cat videos on YouTube instead of coding.
Hold on though, Atwood has one more complaint. Open source tools are all about sharing and that means you have more options, even if half of them are useless. His words, not mine. In the world of .NET on the other hand, sharing code and major patches to core libraries just isn’t such the warm and communal experience he wants it to be. Right. Because .NET was designed to be extended for new functionality or for on the fly patches to existing behaviors and there are more than enough such extension libraries on GitHub and you’ll also find plenty of choices if you want some open source goodness in your C# code, be it through Git or NuGet. And what about all the broken, obsolete, and useless patches and scripts Atwood uses as a strength of all open source tools? Is he really saying that the number of choices is good enough in and of itself? I don’t want to sift through 56 patches and libraries to find the one I want. I just want to find the one that’ll fit my needs. If half my choices are useless, aren’t I better off with half the choices? And would any developer be in the wrong if he doesn’t want to nuke core libraries under these conditions if an extension is a much safer way to go and can be done away with without any consequences?
Now, none of this is meant to convince you to raise the Microsoft flag and throw away the LAMP stack you know and love. If that’s work works for you, awesome, keep at it. But please don’t fall for the Microsoft-is-Beelzebub meme and assume that your tools are the only tools that can do the job, or that Atwood’s recitation of the .NET-is-evil talking points are valid just because he’s a former .NET developer because as you can see, he’s wrong on most points. Despite what you’d hear, .NET can be open source friendly and is moving that way, and if you’re starting out, you’re not stuck with Java or Python/Ruby/PHP as your only free choices. You too can try .NET to get a good idea how massive, complex enterprise tools are often built, just like I’m happy to create a VM with Linux and play around with PyCharm to get a feeling of how quickly you can get things running with Python. Microsoft will not send Vinny with a lead pipe to your house to kneecap you for using Express development tools and then posting your code to GitHub. In fact, it wants you to do exactly that. Just like the custodians of Ruby and Python want you to do the same…