Hacker News new | ask | show | jobs
by bad_user 4717 days ago
> 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.

1 comments

>The whole ecosystem is Windows only and tightly coupled with Visual Studio.

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.

> 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.

How about being an absolutely terrible method of dependency management? And yet it's the only serious game in town? Ruby has RubyGems. Python has PyPI. Java has Maven (and its mutually compatible friends). Mono has...NuGet. It's still pretty bad, even when you get it to run. Boy-howdy, do I want my projects cluttered with downloaded dependencies in 2013. :-(

Seriously, even today dependency management is the worst part of dealing with .NET. (There are worse parts of Mono, but most people will never run into most of them. I wouldn't if I wasn't trying to bend it to do things it probably shouldn't be bent to do.)

> Wrong.

Glad to be enlightened.

> Besides the fact that there are alternatives (and that you don't even need it in the first place)

No, there aren't alternatives and yes, you do need it, as manually managing dependencies is so 1999.

> personal competence ---not getting it to run-- is not a valid reason to discard it

What can I say, the hallmark of any good developer is blaming it on the competence of users, right?

I'm not the only one that experienced pain dude: http://lmgtfy.com/?q=running+nuget+on+linux