Ten years of .NET - Did Microsoft deliver?
Platform shift repeats
Microsoft closes The Noughties by trying to keep up with competitors and to remain a top destination for developers by embracing cloud computing and open source. It opened the decade with another massive platform shift, though: the introduction of .NET.
.NET was announced at the first TechEd of decade in Amsterdam in the year 2000 with more detail provided at the Professional Developer's Conference in Orlando, Florida.
In the ensuing decade, did .NET deliver what Microsoft promised?
The .NET story makes more sense if you consider what Microsoft was up against at the time. The central place of Windows was being undermined not only by the internet, but also by Sun Microsystems' Java language and runtime. Java was easy to code, thanks to its modern design and automatic memory management, came with its own cross-platform runtime, and was being adopted with enthusiasm by the likes of IBM and Oracle.
Microsoft had tried to add Windows-specific features such as COM integration to Java, but the response was a billion-dollar lawsuit from Sun for breaking cross-platform compatibility. COM is a native Windows component model for application integration.
Microsoft's developer tools were also looking tired. Visual Basic was quirky, underpowered, easy for beginners but difficult for experts. Visual C++ and the Windows class library, Microsoft Foundation Classes, were difficult for everyone. Web development with COM and Active Server Pages was messy and fragile.
The company's answer was bold. "We're going to deliver a whole new platform called the Microsoft .NET Platform," said general manager Michael Risse at TechEd 2000. It was comprised of three parts. First, there was a new "common language runtime", which supported existing languages including Visual Basic and C++ as well as a new language called C#, designed by Anders Hejlsberg of Borland Delphi fame, and which embraced many of the same concepts found in Java.
Then, there were to be building block services, "a set of services in the sky", accessible over the Internet via XML web services. Microsoft Passport was an early example.
Finally, all of Microsoft's existing server products were to be re-tooled as .NET servers, with XML as the unifying protocol. Risse talked about next-generation applications as "the universal canvas, an aggregation of different single web services that are brought together as appropriate." His .NET announcement was followed by a demonstration of BizTalk, the server product which Risse hoped would be orchestrating many of those services.
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.