Why I’m Not Using .NET

Now that I've been posting things on Twitter, I notice I have a few followers. And the followers I have are mostly .NET developers. I was a bug .NET proponent a few years ago, but I haven't actually written any C# code in a long time now, and I thought I'd talk about why.

There are two separate places I could be using .NET: For my own personal projects, and for work.

Concerning work, it's easy to explain why I'm not using .NET, and it's not what you think. It basically comes down to deployment.

Windows XP, still the largest market, doesn't come with a .NET Framework installed. No matter what the penetration statistics are, this means we need to ship the framework, add it to our setup, and support users having trouble with that part of setup. Many users of the product I work on try it out using a free trial download, and the framework adds significant size to the download (or if we download it on demand, trips up the people who downloaded it to install offline).

I went through the same thing at my last company, where I managed to convince them that the framework download was worth it. In that case we were creating a brand new app, and the benefits of using .NET over starting out in C++ were clearer. At Adobe, we'd be using .NET features in a large, existing C++ application, so the benefits are less obvious.

For my own personal projects, the short answer is that I bought a Mac.

I love developing with the .NET Framework, but I don't like Windows Vista. I had high hopes for Vista, and the final product just didn't deliver.

My main beef with Windows is that it degrades over time. Everyone knows this, so many people just plan to re-pave their system at some regular interval. But that's a stupid way to have to use a computer. My Vista install at work went from clean to annoyingly slow in about 6 months. Same thing happened at home.

Meanwhile, my old Mac Powerbook is running well after all the time and usage it's seen.

It was a tough choice moving my main home system from a PC to Mac, but honestly, I do spend more time now "using" the computer and less time maintaining it. The only thing missing is Visual Studio.

What's filled that gap for me is Flex Builder. Now that Adobe AIR exists, I can write an application in Flex on either platform, and run the application on either platform. It's the perfect setup for someone with a foot in both worlds. It sometimes makes interop with native platform stuff difficult, but that's already a pain with .NET and my .NET stuff would only work on Windows (I'm discounting Mono here because last I looked the Windows Forms support on the Mac wasn't great, and deployment was even more difficult than the .NET framework).

So there you have it. I hope it doesn't cost me all my followers. :)