Last week I got involved in an interesting conversation around Microsoft’s .NET strategy.  An investor in a local Ottawa company asked “Will .NET succeed?”.  I’m sure this is a question that a lot of companies are asking themselves right now, as they make future development plans.  In my opinion, the short answer is yes, but then what should you do about it?

It helps to start with an understanding of what .NET is.  Despite all of Microsoft’s marketing hype, .NET is really an amalgam of four technologies, not just one new thing:

  1. It’s a new set of programming languages and the “Common Language Runtime” (CLR). The C# programming language was developed to be as easy to program as Java, and the CLR was designed to allow developers to use any language, and program to a common base.  The genesis of this development was twofold: Microsoft was getting beaten to a pulp in the market place by proponents of Java, and Microsoft had a problem migrating older code bases, and the coders that maintained them, to new development models.  The key insight that lead to C# was that programmers were choosing Java because it was easier to work with than C++, and not necessarily because of Sun’s marketing promise of “write once, run anywhere”, which turned out to be not quite true.
  2. It’s a unification of the Win32 API.  By the late 90’s, Win32 was becoming harder and harder to work with.  The proliferation of API’s was enormous, programming models differed between Visual C++ and Visual Basic, and DLL management was becoming harder and harder for Windows applications.  The thick client was becoming unmanageable.  .NET fixes this.  This article from “Directions on Microsoft” gives further detail.
  3. It’s a set of XML interfaces for web services.  One of the key insights of .NET is that the programming model needs to extend beyond just a single PC.  To date, the WWW has been a human to machine interaction, with people browsing the data that exists on servers in the Internet cloud.  Tomorrow, the machines will be able to talk with each other, allowing applications to span multiple machines, and the lingua franca will be XML.
  4. It’s a set of tools designed to make building applications, and using web services as easy as possible for the developer.  Using Visual Studio.NET, developers can rapidly build XML-based web services for the Windows platform.

.NET will succeed because, despite all the hype, this is simply the next generation of the Windows product cycle, and this is a model that Microsoft knows well.  The stakes are high (the future of the Windows platform, no less), and the number of developers – millions – staggering.  Nevertheless, there is no “discovery” of new processes or tactics here.  They’ve done this twice before shifting developers from MS-DOS to Windows 3.x, and from the Windows 3.x platform to Win32.  It’s simply execution.  Here are the factors that are important:

    • Patience. Microsoft knows that in order to shift their developer base to these technologies, they have a five to seven year effort.  The products themselves have been in development since 1998, with the genesis of C# in an internal effort code-named “Project 42”.  The strategy and vision were first announced at an event called Forum 2000 in the fall of 2000.  Since that time there have been numerous new products out incorporating .NET functionality, and professional developers conferences focused on .NET.  The cycle is underway.
    • Products. Windows became successful, in part, because Microsoft was committed to having the best applications in the business on Windows.  Word and Excel were both written to be showcase Windows applications.  Today, every product group at Microsoft has a .NET strategy for their product.
    • Evangelism. To shift the run-rate from Windows 9x to Windows 2000 / XP, Microsoft employed over 1,000 technology evangelists to court the individual hardware and software developers to the new platform.  If the developer base doesn’t adopt the platform, customers never will.  With .NET, the same strategy is playing itself out again.  At Microsoft Canada, for instance, there are 60 open headcount for .NET evangelism for just the Canadian market, which is a tiny market globally.  Worldwide there are probably 20 times those numbers.
    • People. It’s a truism that inside Microsoft you can often predict the success of a given project by looking at those championing it.  Of all the people working on .NET today, Charles Fitzgerald should give Microsoft’s competitors the biggest headaches.  Charles was responsible for tying Sun’s Java strategy in knots while Microsoft got it’s ducks in a row in the late 90’s, and was successful enough that Sun felt the only way they could compete was with a lawsuit.  Charles is only one of the “A-team” working on .NET.  Microsoft has put their best and brightest on this effort.

The success of .NET is just a matter of time.  As Matt Rosoff of Directions on Microsoft says “.Net is in the ‘appealing to developer’ stage, but it has not gone to the mass market yet”. It’s about year three in the cycle, in other words.  The geeks know about it, and some mass of them are starting to build products with it, but the users are going to have to wait a little longer.

Since .NET is actually four technologies, what should you do about it?

If you are a Windows application developer, then migrating to .NET as quickly as possible makes sense.  Microsoft’s tools are excellent, and the migration allows you to take advantage of their latest offering.  It gives you access to the marketing benefits tied to the momentum that Microosft is building around .NET.  It also gives you a powerful set of tools to start incorporating web services into your products.  There is no reason to delay.

But what if you’re not a Windows developer?  Microsoft has publicly stated that some of the .NET technologies will be cross platform and some not.

  • The XML interfaces for web services must be cross platform in order to succeed, and Microsoft recognizes this and is participating in an industry group called Web Services Interoperability (WS-I.ORG), with IBM and others.
  • C# may be released cross-platform, but Microsoft has made no commitments.  To date Microsoft has released a proof-of-concept Linux implementation for academic use only.  C# could easily be cross platform, but the decision to commercialize C# on other platforms than Windows will likely depend on how much of a threat they believe Java to be.
  • The Windows systems components, and Visual Studio.NET will not be released cross platform.  These products are intimately tied to the Windows OS.  They are key to Microsoft maintaining it’s competitive advantage over non-Windows platforms in the market place.

This leads to three scenarios:

  • If your product is not on a Windows platform, then implement the XML interfaces being specified by WS-I.ORG in order to remain interoperable with web services. These have broad, cross industry acceptance.
  • If your product is a Windows-based server product, then avoid the use of C# for client-side scripting if you must interoperate with non-Windows clients. This is the comm
    on scenario for Internet server products. Use Java instead.
  • If your product is a Windows-based server product for use in homogeneous networks, such as are found in many enterprises, then simply implement using the full suite of Microsoft tools.

Clear as mud? Write me at if it doesn’t make sense.