Recently read a post about "why" MS will never make .NET cross platform. While the post didn't have much in the way of "why", it was chock full of "oh, come on, pleeeze!"
I can't fault the guy on that. Any time MS spends making .NET cross platform makes me a more valuable programmer. Why wouldn't I want Microsoft to throw heaps of cash into it?
You can always expect that the comments section of any post about cross-platforming .NET will be chock full of FUD and people who can't tell the difference between a S and $. Well, except for my blarg; nobody ever posts here. Reading the blarg's comments is like reading comments from a political or religious discussion. Lots of unbridled idealism mixed with damnation and hellfire. You know, like what causes people to kidnap and behead teenage schoolgirls in less civilized places in the world. Reading through the comments you can find quite a number of these "douchebags" (or as I like to refer to them as--Internet Tough Guys™).
The author seemed to put too much emphasis on MS driving people to its products as why they are not putting more effort into making the .NET platform cross-platform. I don't think that is legit. The reasons why .NET will never be ported to Linux (and to a much lesser extent to the Mac platform) are threefold:
First, the market just isn't there. According to Market Share, there are less people running all flavors of Linux than Windows 98. Now, this is just desktop users, not servers, and the numbers are gathered from web access of around 40k different websites (I don't think /. is one of them, btw). Still, as a rough number, the number of linux desktops is less than 1% of the total collected in the survey. If MS is looking to port .NET to platforms that small, then they might as well port the damn thing to the PSP, which has about 1/3rd of Linux' share.
Second, exactly which fork do you code to? One of the great things about OSS is the ease of taking a code base in a fresh new direction when it might have grown stagnant and become obscelete. Find enough like minded people and fork yourself a brave new world. The result is that there are a shitload of "flavors" of the Linux operating system currently in development. I started counting them at DistroWatch but got bored after I hit 30. They are all different in some way, which means that supporting every one of them would be impossible. MS would have to pick the greatest common denominator (or a few of them) and code to it. And how would updates get distributed? The Linux world doesn't have a single package management system; according to Wikipedia, there are at least eight systems, the best known being RedHat's RPM. Having used RPM, I can tell you it sucks ass. I am, of course, a lazy shit and didn't want to spend five hours in man trying to figure out all the ins and outs of it. So not only would MS have to code a port to Linux (and try its best to be cross-flavor compatible), but they would also have to create an update service specifically for the Linux port. Cha ching!
Third, and last, who the hell would use it? Linux is the home of OSS fanboys and Unix Beards. They hate MS with a passion and would never lock themselves into a Microsoft product. They're not exactly crazy to do so, either. Seeing how small the Linux market share is, MS has no financial gain from spending time and effort on the platform. Who's to say that, after five years of lackluster performance, MS won't drop support for a Linux port of .NET? MS is a privately held company, responsible to its shareholders. If a particular product isn't holding up its end, it would be irresponsible for MS to keep shoveling cash into it. And to top it all off, MS doesn't exactly have a good track record for its cross-platform products. Without developers with a desire to use the platform, the thing is flat out dead in the water.
Face facts--the only way a port makes sense is if it is developed by and for the OSS community itself. The project must have intrinsic value; it must not solely exist as a "port" of a microsoft product. If MS were to disappear tomorrow (God might actually listen to the nerds at /.), the project must be able to continue and serve a need in the Linux community. It has to offer more to the Linux developer than just the ability to run programs originally written for Microsoft. Only the OSS community can do this and be successful. Much respect to my Mono brothas.