What's in a Platform?.
James Strachan questioned some of Alan Cooper's opinions in the recent XML & Web Services magazine interview, stating ".NET only runs on Windows". This is actually quite a common misconception, stemming partly from terminology problems. Alan was referring to the CLR, which is (by and large) an implementation of the CLI - an ECMA (currently) and ISO (soon) standard. It is the existence of this standard that provides the portability and multi-language capabilities that Alan Cooper was praising.
Sure the language is a standard, but thats next to useless if the libraries are not open and cross platform.
As for the cross-platform issue, it is helpful to first agree on a definition of "platform". I like to use the FOLDOC definition: "...a specific combination of hardware and operating system and/or compiler". Microsoft itself has several different implementations (the .NET Framework, the Compact Framework, and Rotor) of the CLI specs running on different platforms, i.e. different hardware architectures (Intel x86, StrongARM, XScale, etc.) and different operating systems (Windows XP/2000/>NET, Windows 98, FreeBSD, Windows CE .NET, etc.). More importantly, there are also third-party efforts (Portable.NET, Mono) aiming to bring the CLI to other platforms such as Linux/x86, Linux/PPC, StrongARM, SPARC, etc. Time & the market will be the judge of these efforts, but I believe that Alan called it correctly when he stated that the CLR creates opportunities for code portability and competition.
[Peter Drayton's Radio Weblog]
OK so we're not talking cross platform in the sense that it'll run on windows, Linux and mainframes. We're saying its cross-Microsoft-platform. So its about as cross platform as MFC and the Win32 API.
Sure one day, maybe, there might be a non-supported, independent port of .NET that may or may not work and will be foreever playing catchup to MS. Most probably most of your software will only really work on Windows. Though with Microsofts history with independent ports (remember OS/2, Bristol Technologies, WINE and WABI to name but a few) I don't think anyone would seriously consider things like Mono as having much of long term future as a .NET compliant platform.
.NET is, lets face it, an MS strategy to curb the threat of Java and to try lock software into a platform that MS controls to help preserve its Windows monopoly.