| > Why is Mono "basically useless for server-side apps"? I've been running production apps, server-side, with Mono ... The whole ecosystem is Windows only and tightly coupled with Visual Studio. You do not have Maven for example and personally I could never get NuGet to run. Also, before the new generational garbage collector, which was just declared stable, ASP.NET was leaking memory because the old conservative garbage collector had problems with the allocation patterns of ASP.NET. Yes, you could run your fancy app on Linux, but for anything serious you had to restart your servers periodically. Performance sucks too for ASP.NET apps. It's not acceptable for a compiled and statically typed language to have the same performance as Python, or sometimes even worse. Part of the reason for that is the heaviness of ASP.NET and the IIS coupling that is missing in Mono. But then again, why should that be your problem, when better alternatives for Unix are available? Also, ever tried debugging / profiling an app in production? Seriously, you have to be slightly masochistic to use Mono on server-side. Fun fact: .NET's debugging symbols are not a part of ECMA's standards, are not documented and for a long time Mono used its own incompatible format for debugging symbols. > Microsoft did release an open source version of .NET (Rotor) that ran on Mac OS and FreeBSD Rotor was never open-source. "Shared source" is not open-source. In fact people that contributed to Mono were warned to not look at Rotor's source-code. > After all, Sun put money into Java, which didn't seem to help their revenues, right? Blaming Java somehow for Sun's failure is a logical fallacy. There is no proof that .NET helped Microsoft's bottom line (my gut tells me that it did the opposite). Also, I'm pretty sure Java was a major reason for why Oracle bought Sun and for why Google was also thinking of buying Sun. > when MS decided to adopt Java, Sun cut 'em off Microsoft had an explicit agreement with Sun. They broke it by making Visual J++ both source and binary incompatible with Java. This isn't regular "adoption", but rather their usual embrace/extend strategy. Also .NET 1.0 was J++. > The parts of .NET that are platform-specific are for good reason. Cross-platform UIs, for instance (like Java's), seem to universally suck That's a poor example. When thinking of cross-platform, I think more about Qt than I think about Swing. Also, platform-specific behaviour has leaked much further than Windows Forms. For example, Mono's implementation of asynchronous sockets suffered for years because System.Net.Sockets was modelled after Windows' kernel and doesn't map cleanly with poll/epoll/kqueue. |
Wrong.
>You do not have Maven for example and personally I could never get NuGet to run.
Besides the fact that there are alternatives (and that you don't even need it in the first place), personal competence ---not getting it to run-- is not a valid reason to discard it.