Why Microsoft Will Never Make .NET Truly Portable
Michelle Meyers writes "Just days before Microsoft claimed to be making parts of the .NET CLR "available" to other platforms, NeoSmart Technologies had published an article bemoaning and blasting Microsoft's abuse of it's developers by pretending .NET was a true cross-platform framework when they're doing everything in their power to stop it from being just that. Of interest is NeoSmart's analysis of how Microsoft has no problem making certain portions of .NET available to Mac users — just so long as its distributed under an "open source" license that forbids any and all use of the code except for educational purposes — yet are terrified of the very thought of .NET being available to *nix users, even if that's to the benefit of .NET developers everywhere. Even more interesting is one of the comments on that article linking to legal documents in which Microsoft employees discuss the (im)possibility of creating a cross-platform code and UI framework, years before the .NET project even started!"
Is there anyone, anywhere who thinks Microsoft will ever do anything that's really free, and therefore portable, cross platform and all that other stuff they would like to say about .NET? The more they hype it, the more obvious the shortfall.
Friends don't help friends install M$ junk.
Er, I'm no fan of .NET, but the Help Desk webcomic isn't exactly the best source for objective and serious assessments of Microsoft products. Several programming languages have been built for .NET and programs that are built with these will generally require the .NET runtime to run. Although this is irrelevant to the well-definedness of the concept, most people tend to acknowledge that these languages, perhaps C# in particular, are far better than Microsoft's earlier offerings along these lines, although they may of course not be everyone's cup of tea for various reasons including but not limited to their being tied to a closed system and their being generally non-cross-platform.
.NET is. You'll notice that the comic you linked to was from 2004.
You may not like the framework, but there is no longer any confusion about what
I develop in both the Java and .NET frameworks. I like the Java language a lot more than C#. Unfortunately, users like Windows.Forms a lot more than Swing.
Karma: Raspberry Kiwi
So why bother with .NET?
Simplicity. I hate MS to my very core, but I can whip up apps in C#.NET faster than I can in Java. 99% of the time I don't care about portability. I just care about getting things done on time. Of course, then there's the other times when I have to use MFC for various reasons, and that pretty much cancels out any gains I got from using C#.NET...
So, in other words, TFA chewed Microsoft out for not making .NET cross-platform, just days before Microsoft announces a cross-platform version of .NET. How exactly is this "stuff that matters"?
Even if Java wasn't about to be GPLd, was it really worth all the effort, plus daring the world's most notorious IP barratrers' fairly obvious patent/IP trap, so you can get...
Operator overloading? Unsafe code in a VM? Not to say there aren't a few nice things. But too few. Mono is a dangerous waste of time.
That C#/.NET hype is so damn tired. It's a dead-end platform, unless MS opens it up, or chooses to add some truly novel features to it in the future.
Tired of Political Trolls? Opt Out!
It probably is an enormous amount of time and energy to port it -- ask the Mono folks. The benefit is code portability across platforms. That's why Tk/Tcl has been ported to multiple platforms, that's why wxWidgets has been ported to multiple platforms, heck, it's even why Java Swing has been ported to multiple platforms. And they're (mainly) just the GUI side of things; .NET offers a lot of other stuff too. Of course, it's the "lot of other stuff" that causes the bloat. Remember, it's not just an API, it's a virtual machine, which in theory looks the same on every platform. "In theory" because there's the little issue of what Microsoft will allow to be ported, and even MS have the sense to realise that complete platform transparency is pretty much impossible so there are some platform specific elements to the API.
Quidnam Latine loqui modo coepi?
As a .NET developer, I wish to God MS would just make the little error box that tells you the thing you're trying to run can't run without version X of the .NET framework have a button that says, "Click here to download and install it" instead of just failing. So every .NET program you make has to have its own bootstrapper in native code to make sure they have it or include a 22 meg installer for it in your own installer (assuming you're using an MSI [Which I'm not very good with, so maybe there's a way to download and run a second install from inside an MSI. If someone could tell me how to do that, if it's possible, I'd be grateful]).
Annoying.
...was just a ploy to take some of the wind out of Java's sails.
.NET as a 'better Java', and in some ways, it actually was better. But in the way that really mattered to most Java developers, it was much worse. Its cross-platform nature was the main appeal of Java. Yes, the language may have been viewed as an improvement, and the 'managed code' approach to security is nice. But 'write once, run anywhere' was the main selling point of Java.
.NET probably would have been made truly cross-platform. Then it could have competed honestly with Java.
Absolutely right. Microsoft was originally pushing
So how did Microsoft 'compete'? First, by deliberately sabotaging the cross-platform nature of Java, and Second by implying that their Java clone was cross-platform as well.
And the saddest part is that if Microsoft had been broken up by the Justice Dept when it should have been,
Posted from my Android phone. Oh, I can change this? There, that's better...
Quidnam Latine loqui modo coepi?
It might appear that Microsoft competed by implying that DotNet was cross-platform, but I'm not so sure that it had much effect. From my own perspective, it seems that Microsoft's competed much more frequently by convincing people that they don't need to be cross-platform, because all their customers who matter either use Windows, or are on the other end of a web server. (No argument about the earlier sabotaging of the Java spec, though. That really was bad.)
Do you know of any Java shops that switched to DotNet because they honestly thought it would be cross-platform? I know of dev shops that have switched because DotNet was more suited to what they were doing, and also ones that switched because they had managers who just liked Microsoft, but I certainly don't know of anyone who switched with expectations of it being cross-platform. Anyone I've know who's used DotNet has quite consciously made a decision based on an assumption that they're unlikely to have a cross-platform product once they've done it.
Personally I think that Microsoft's main goal with DotNet has been to hold on to the Microsoft developers that they already had, as well as providing a decent managed platform for people who just want to develop Windows apps. Not everyone cares about cross-platform code, even if it's to their eventual peril.
Before DotNet came out, the only real options for coding in Windows were a mish-mash of ugly scripting languages such as VBScript, badly designed Microsoft languages (VBA), the unmanaged and less secure platforms such as C++, and platforms that weren't controlled by Microsoft -- such as Java.
If Microsoft hadn't introduced DotNet, all of those developers who were loyal to Microsoft would eventually have had to migrate to better platforms that were not only not controlled by Microsoft, but which were controlled by competitors such as Sun. This would have given companies like Sun a lot more control over Microsoft.
It's true that the marketroids at Microsoft skewed and mis-represented DotNet as they always do, but strategically I think DotNet was really a catch-up maneuver to make sure that Microsoft could keep what it already had.
Hmm, your question implies that if you learn .NET and code for it, you are thereby prohibited from learning and coding for other platforms. Not mutually exclusive.
.NET have a higher net present value [NPV] than the investment required to learn the LAMP stack or some other non-Microsoft platform?" we can perhaps list some factors to help us decide.
.NET developers. 5 years out, probably not so much opportunity except for maintenance/extension of existing systems. There will still be some new development but it will be ghettoized. VAXen AS400 MVS CICS Windows...
.NET than you do.
.NET or to get better at LAMP or whatever, get better at LAMP or whatever. Microsoft is the past.
If we rephrase the question to "does the considerable investment (time, skull sweat, and treasure) required to learn
1) time horizon: there is no question in my mind that Microsoft has reached its peak. In future more and more systems will be built with non-Microsoft technologies. Right now there is plenty of work for
2) personal competition: there are smart people everywhere. If you're in the USA particularly, you are competing against coders all over the world who are at least as good as you are, but willing to work for much, much less than you are. In at least one way Windows has been good for US coders because it costs a lot to build and maintain a Windows development shop, assuming you're buying the licenses and so on. The high cost of Windows has been a barrier to entry for people who can't afford $140.00 for a workstation OS, $500.00 for a basic server OS, $600.00 for a glorified email server, and $160.00 - $5,000.00 for a development environment depending on version. Not to mention $125.00 - $400.00 for a "productivity suite."
Don't think M$ is unaware of this, which is why they're starting to give away their stuff in "emerging economies." The first shot is free... but that means that your competitors will have much cheaper access to
3) personal goals: if you're in software development for the money rather than because you love writing code, and you're an individual contributor (as opposed to owner/management), you may want to consider another line of work. The days of the average coder making 6 figures (USD) are over, and even the extraordinary coder who works in somebody else's shop will probably not get rich doing it. Not by coding pure and simple anyway: you will have to offer more than the ability to code if you want truly to prosper.
Since I am a coder for Microsoft platforms (not an employee) and have been since COM was called OLE, I know Microsoft-the-company pretty well. They are a commercial enterprise engaged in capitalist competition and are clear about that. Indeed I am suspicious of people blathering about "the good of the community" and all that sort of thing.
Nevertheless, my intuitive answer to the reformulated question is: "No. Investment in Microsoft technologies does not have a higher NPV than investment in competing platforms." If you are young, love computing, are good at writing code, and are considering whether to learn