views:

230

answers:

8

I provide a library that currently has .NET 2.0 as a pre-requisite.
I'd like to go to .NET 3.5, to take advantage of LINQ, and Action delegates, and so on, but I don't want to strand too many people. Now that 4.0 is nearing release, is it time to move up to 3.5?

The library works on the desktop and CF versions of the Framework.

Does anyone know - What are the adoption numbers of the various versions of the framework?

+5  A: 

While going with 3.5 is a good option in most cases, you can take advantages of LINQ using C# 3.0 compiler and .NET 2.0 with LINQBridge.

Note that while .NET 4.0 is going to be released in a near future, .NET 3.5 is preinstalled on Windows 7, which makes it more available considering wide speculated deployments of Windows 7.

And if you stay with .NET 2.0, you can take advantage of the Windows Vista install base which contains .NET 3.0 out of the box.

Mehrdad Afshari
+1  A: 

The number of developers and environments that can't make use of 3.5 is rapidly diminishing. I have heard various estimates from 10% to 40% of environments that can't support 3.5 yet. Probably your best bet, though, is to ask your customers (or at least a good sample of them) and see if they can support 3.5 in their environment. I would say that if less than 20% say they can't move to 3.5 (or can't in the near future), then just go ahead with 3.5 and say that the next version of your library will require 3.5 and that there will be no further development on the 2.0 version except in cases where a severe security flaw or other critical bug might be found.

BBlake
+3  A: 

Well, it's certainly going to go up with Windows 7.

There is an SO question on .NET framework penetration among home users. While anecdotal, Matt Bridges's response is probably realistic.

It depends on your target market.

  • Home users: probably too early
  • General corporate users: some risk; possibly do a survey
  • Your corporation: ask IT
  • Developers or hobbyists: go for it
  • Open Source for your own enjoyment: do it

Remember that .NET 3.5 is not supported on Windows 2000. This delayed adoption in our company for some time (we finally did make the switch). This is mainly of concern in a corporate environment.

TrueWill
A: 

You could also consider creating an expansion library. While this obviously depends on the way your components and libraries are architected, but this approach would allow you to keep your currently library 2.0-compatible while providing an expansion library that adds 3.5-specific features to the core components. This could also aid in debugging, since you don't run the risk (or much of one) of creating breaking changes.

Adam Robinson
A: 

The best way to know is doing a client servey if you can. Of course, when you have a lot of home users, serveys are not easy to accomplish.

Personnaly, I base my backward compatibility on the 80% rule. If 80% or more users (client stations) are ready for the newer version, I abandon the oldest version.

An other method is to abandon support when (in your case) Microsoft abandons support of the .NET version in question. That way, your clients are sensed to migrate to a newer version of .NET anyway.

Filip P.
A: 

The only people that can't utilize .NET 3.5 are people running Windows 2000 and Windows 9x. Hopefully there should be almost nobody left of the latter, and Windows 2000 will be fully End of lifed in July of 2010 (no more security updates).

While EoL won't stop people from using Windows 2000, it should hopefully reduce the number who have not upgraded.

Mystere Man
+2  A: 

It depends on your customers.

  • If your customers are slow to adopt new technology (a modern OS, modern hardware that can run a modern OS, and recent .NET), then requiring a new .NET will alienate a significant portion of your customers.

  • If they're the type who goes to Windows Update every week to make sure they have all the latest updates, they'll have the latest .NET from there.

It depends on you.

  • I have better things to do in my life than support ancient platforms. Are you willing to sacrifice your life energy this way?

  • I am more productive with the best development tools. That means I can make better software (fewer bugs, better features, quicker releases), which my customers benefit from. Are you willing to sacrifice that value in your software?

  • I am willing to lose customers that won't upgrade their platform. That means I am willing to lose revenue because of my decision. Are you willing to sacrifice that portion of your customer base?

Remember that you aren't just changing who your customers are, but you are also establishing a reputation that will affect your customer base in the future. If you alienate a curmudgeon, he will spread negativity to his friends. Similarly, if you delight an early adopter, she will spread the love. Both are powerful effects.

Jay Bazuzi
+1  A: 

There is very little good reason to not use .NET 3.5. It uses the exact same CLR as .NET 2.0, so "upgrading" to .NET 3.5 does not affect existing .NET 2.0 applications. This is unlike the situation of .NET 1.1 to .NET 2.0, which screwed up existing .NET 1.1 applications.

As far as existing .NET 2.0 applications are concerned, .NET 3.5 is nothing more than .NET 2.0 SP2.


P.S. The first good reason I heard of for not upgrading to .NET 3.5 was a corporate policy to be able to support Mono.

John Saunders
You sure Mono doesn't support .NET 3.5?
luiscubal
No. I'm sure this was the reason given recently on SO by someone as the reason not to upgrade.
John Saunders