Hits and misses
If the goal of .NET was to see off Java, it was at least partially successful. Java did not die, but enterprise Java became mired in complexity, making .NET an easy sell as a more productive alternative. C# has steadily grown in popularity, and is now the first choice for most Windows development. ASP.NET has been a popular business web framework. The common language runtime has proved robust and flexible.
Job trend figures here show steadily increasing demand for C#, which is now mentioned in around 32 per cent of UK IT programming vacancies, ahead of Java at 26 per cent.
Nevertheless, not everything has worked out as planned. The "building block services" idea fell flat on its face the following year, at PDC in 2001 where Microsoft pushed its HailStorm idea the company was unable to sell the idea of itself as a universal service provider. Two years later, at the PDC 2003 where it announced the "Three Pillars of Longhorn" Microsoft attempted to deliver a version of Windows with a .NET user interface , and that too failed and had to be hurriedly replaced with what became Windows Vista.
Other things have taken longer than anyone expected. Although C# was successful, existing Visual Basic developers found it hard to migrate their projects to what was in effect a different language with the same name. The Windows Forms part of the .NET Framework was no more than adequate, a resource hog on machines of the day, and deployment of the .NET runtime sometimes failed.
It took Microsoft a further eight years to come up with the idea of a client profile, for a slimmer install. The idea of .NET controls as a safer alternative to ActiveX in the browser never took hold, partly because the runtime was not sufficiently pervasive, and partly because the technology to do this in a sensible manner was not really put in place until Silverlight 2 arrived in 2008.
What if Microsoft used it?
A long-standing gripe is that Microsoft itself has been slow to adopt .NET. "It will be the framework that Microsoft itself uses going forward" Microsoft's Tony Goodhew told TechEd in 2000. The company, though, has continued to use native code and C++ as the primary development platform for its crown jewels, Windows and Office. COM has never gone away, and .NET developers who want to use new Windows 7 APIs, for example, have to use an interop library to do so.
Put another way, Microsoft gradually repositioned .NET as a platform for business applications rather than as the foundation of everything it built.
In 2000 Microsoft proudly announced that C# and the Common Language Infrastructure would be standardised by ECMA, thumbing its nose at Sun, which had decided to maintain Java within its own Java Community Process rather than handing it over to a public standards body.
Although this enabled some interesting projects such as the open source Mono, the Framework class library and ASP.NET remained outside the standards process and the idea of portable .NET applications never took off. Microsoft is unlikely to see this as a failure - but perhaps it should.