Screw 2.0, I'm Going Straight to 3.0
Recently the discussion came up about using .NET 2.0 in some future products. I work on server products, and we've been using 2.0 there for a while. However, there is a bit of concern around deploying the 2.0 framework with our desktop apps. Our software is shipped ESD style and a lot of customers like to download the trial app before making the purchase. If they try to install the app, but can't because they need to be an administrator to install the .NET framework 2.0, we probably just lost out on the sale. I would venture to guess that a significant chunk of our customers fall into the non-administrator group, so this is a big problem.
So, we don't want to use .NET 2.0 unless the deployment is widespread enough... and as there seem to be no numbers available from anyone on what 1.1 or 2.0 adoption are, it's a big risk to require the 2.0 framework. So, if it's not safe enough to require 2.0 for a product release a year or two out from now, does it make sense to ever require the 2.0 framework?
The 2.0 framework doesn't really give you a massive amount of really new really cool features. There is one-click, which we probably wouldn't use anyway, generics (which are useful as a time saver, but don't really do much that you can't do without them), and some other little features... but the best part about the 2.0 framework is probably the IDE/dev experience, not what customers get out of it. However, 3.0 is a different story. WPF/WCF/WWF... all majorly cool and totally new. If you write your application UI on 2.0, you are probably going to want to rewrite it for 3.0 so that you can take advantage of WPF, and rewrites aren't the most fun or efficient way to spend your time. IMO, making the jump from 2.0 to 3.0 is almost as significant as the jump from MFC/VB6 to .NET 1.0.
Now, forget for a second that the .NET framework doesn't offer any "must have" features for our customers... will 3.0 adoption quickly outstripe 2.0 adoption anyway? The simple fact is that Vista is going to ship with 3.0. Anyone building Vista apps is probably going to want to use WPF. There are already a lot of apps in the pipes that will require WPF: Microsoft Max (http://www.microsoft.com/max), the entire Expression line (http://www.microsoft.com/expression), the NYT news reader (http://www.readwriteweb.com/archives/times_reader_screenshots.php), the BBC video app (http://blog.mix06.com/virtualmix/archive/2006/03/17/BBC_demo.aspx), XPS (http://www.microsoft.com/whdc/xps/viewxps.mspx), etc.
These are just a few of the early adopters, but it's safe to bet that once all the little ISVs around the globe start seeing what WPF is capable of, they are going to crap their pants and run off and try to build the next killer Vista app. As such, not only will you have Vista installs pushing the .NET framework 3.0 adoption rate much faster than any previous .NET framework release, but you'll also have a lot more people building apps that are designed for the 3.0 framework than the 2.0 framework. My guess, within a year or so, we will see more people with the 3.0 framework installed on their machines than have the 2.0 framework installed today. I might be overly optimistic here, but within 2-3 years, I wouldn't be suprised to see more 3.0 installs than we have 1.1 installs today.
So, why write for the 2.0 framework when 3.0 gives me a lot more bang for my buck and its adoption will quickly surpass 2.0 adoption anyway?