I think that you're going to be pleasantly suprised in the near future.
.NET really is what Java wanted to be. Java is still 'write once, break anywhere'. .NET isn't at the point where it will 'break anywhere', but Mono is bringing it closer!
Ok - silliness aside, we've seen quite a few major shifts in the MS attitude towards being more open and supporting various open source initiatives. e.g. DNN, Mono, etc.
The problem is that people fundamentally don't understand Microsoft and their attitude. MS has traditionally been hostile to OS/FOSS/whatever, and is still against GPL licensing. There's a very good reason for it though. Microsoft was built on the backs of third party developers that created software for their platform. Offering for Windows flourished where other platforms were more or less barren.
But why would others develop for Windows? Money. Pure & simple. They can make a living doing it. Or at least beer money in any event. Microsoft's best interests are served by helping it's third party developers make money. The GPL sinks this, and so it's understandable that MS wouldn't cozy up to it. BSD licensing on the other hand makes sense. It enables a profit model. MS now has quite a few licenses that steer in this direction, e.g. MSPL, etc.
The markets and technologies are getting to the point now that it makes sense for MS to open up more than in the past. .NET is clearly the way of the future in how it works.
The CLS is open for anyone to come up with an implementation (CLI/CLR/.NET). Only Novell has stepped up to the plate in a serious manner. Well, there is Portable.NET
, but how far along are they? Mono seems to be the only serious contender.
MS is in no fear of having .NET being usurped for the moment. Looking at the various tools available:
Eclipse with BlackSun
, etc.Mono DevelopXDevelop
And comparing them to Visual Studio? There's no comparison. VS is light years ahead of all of them.
While a small developer may choose an alternative to VS due to cost, for a company that needs to be productive, VS is the only option available. The alternatives might be ok for compiling or whatever, but productivity in VS is just leagues above anything at the moment.
Businesses are and will be the main focus for a long time. .NET was never marketed to small developers when it came out - MS only targetted enterprises and government. .NET is now feasible for small developers and becoming more and more attractive all the time.
I think Mono is going to be the major force there in pushing .NET (or the CLS) forward for cross-platform development. There really isn't much else. RealBASIC. ANSI C. Java. A few others. But nothing is really coming close to the very rich set of tools that you get with .NET.
Time will tell of course, but with 2 billion dollars of initial investment from MS in the CLS, and all they are pouring into .NET, there's no way MS will ever let .NET fail. Right now they need to address the cross-platform issue and the open source issue in order to remain relevant and expand. It's only good business for them to embrace what's going on right now. And this time, it's not the MS 'embrace and extend' going on, it's MS embracing, and others on the outside 'extending'.
If MS isn't careful then .net is going to get surpassed by a similar project which isn't so wedded to one platform (windows).
Another way to look at it is that there is absolutely nothing out there other than the CLS that remotely addresses the issue. Java? Well... Not quite. It's very fragmented. What flavour of Java?
So who's going to drop $2 billion to come up with something relevant? I don't see anyone other than Novell stepping up to the plate there.
This is a good thing for Novell because Netware has really lost its relevance. Novell needs something to keep it in the game in the future. They're moving towards Linux now, but they'll need more than 'just another Linux distro' to do it.
Anyways, let's hope for the best. Better and faster development tools are always a good thing.