Ask HN: Why is Mono still not widely used on Linux?

16 points by wilsonfiifi ↗ HN
It seems as though one of the initial reasons for not embracing .Net on Linux i.e. ".Net is Microsoft and Microsoft is Evil", now apply to Java since Oracle took over. So why is .Net/mono still not being shown much love?

21 comments

[ 2.5 ms ] story [ 51.9 ms ] thread
Perhaps because Ximian is spending most of their time on mobile and their partnership with Microsoft? And because most .Net developers aren't huge fans of Linux perhaps?
You're probably right but I think Ximian shifting their focus to mobile was probably because they needed a way to finance future development of mono after Novell was bought by Attachmate.
> Perhaps because Ximian is spending most of their time on mobile and their partnership with Microsoft?

Xamarin. Ximian is, as they say, an ex-parrot.

Isn't Java still open source and isn't it a first a class citizen on Linux? In other words, you get the same Oracle JIT optimizations on Linux as you do on Windows and the Mac.
I only see 2 use cases: 1. already windows app port to Linux. 2. want to deploy on iOS(apple tablets, maybe phone) and linux otherwise why not use java.
Probably because it isn't an official port, there is no reason to learn .NET if you don't develop exclusively for Microsoft.

If you're developing for multiple platforms chances are you already use some other toolkit with platform specific bits mixed in, mono is only useful if you are a .NET developer and then decide you want to port apps.

(comment deleted)
Enterprises don't do Linux. Enterprises hate sysadmins (i.e. the guys who control everything that managers don't have a control of and no clue about).

Enterprises can afford Windows + support. Enterprises love [Azure] cloud.

Linux + Mono is a bit of a bait-and-switch candy from Ballmer.

As you might imagine of a high-end security consultancy, we work with a lot of big enterprises, and I'm having a hard time thinking of a single one that doesn't use Linux for line of business software development.

Linux is nearly universal in enterprises.

This is an odd perspective to have. I'm fairly certain a large percentage of the Fortune 100 use linux (based on personal observation and experience).
While you are getting downvoted, I have found your point of view to be applicable.. I've definitely encountered managers who have the point of view "we can just use Azure now, why do we need to pay a sysadmin" .. and as well, "Linux isn't professional - Microsoft is professional" is a standard refrain among the ignorant Executive classes, as well.

So there is some truth to your statement, imho.

I've recently had to port a .Net app to Mono so we can deploy it on Linux - in fact, we're doing everything possible to remove any dependency on Azure, because Azure is an atrocious trap for anyone looking to deploy productively. (e.g. can't clone an instance to .VHD without decomissioning and destroying it first..)

Anyway, mono on Linux is distasteful, in my experience - there are too many dependencies and packages and libraries/subassemblies that just are not well described. Its as much about the affront of the language used in the Mono ecosystem as anything else. Unless you have the gumption to invest weeks in understanding the perverted terminology and strange architecture of the mono packages on Linux, you're going to be dissuaded by its complexity - especially if you're used to an open, well-describe taxonomy of the traditional Linux packages' way of doing things.

Mono is widely used in games for Linux, for what it's worth. A lot of independent games have been written in the .NET XNA framework, and Mono has a Monogame component that allows developers to port these games to Linux relatively easily.

Between the Humble Bundles including a lot of Linux ports and the Linux Steam/Steam OS launch from Valve, there's a lot of these ports coming out right now.

I would take the question the other way around.

Why would a .NET developer use linux in the first place?

I'm a .NET developer who uses linux from time to time. Mostly the reasons are licensing costs, linux being easier to develop on in some other languages, and personal growth.

I am orders of magnitude more productive using Visual Studio in Windows, but in the grand scheme of things that's a local optimum. I'd like to learn new things, use other tools, etc.

Cool to know, thanks for the feedback, didn't mean to be rude or call you close minded. :)

You highlight exactly what I meant " am orders of magnitude more productive using Visual Studio in Windows".

There probably isn't much incentive for you to write in mono on Linux, because you could be so much more productive on another platform.

And if you switch to Linux, it's probably so much easier to open a python shell that setting up a MONO environment doesn't make sense in most cases.

I'm another .net developer, who loves linux. I have had daydreams of porting the software at work to mono, so we can have Mac and Linux versions, but it isn't going to happen.

When I use linux, I much prefer to use languages where linux is the "1st class" platform (and not Java or JRE based). Mono is improving all the time, but C# doesn't have the attraction for me outside of work.

You highlight what I was trying to say :).
You could try Qt, it gives you a pretty good experience on Linux, actually slightly better than on Windows IMHO. Also good support for Macs.

It's C++ though :-)

And it's just not, technically, particularly compelling either.

Also, not sure Java was any more or less evil when it was Sun. In either case the question is just one about which demographics the multi-million dollar marketing campaigns behind one technology or another have targeted. Had they decided Linux hackers were going to be their customers then I'm sure that demographic would be drinking the kool aid and wearing the t-shirts instead.

> It seems as though one of the initial reasons for not embracing .Net on Linux i.e. ".Net is Microsoft and Microsoft is Evil", now apply to Java since Oracle took over.

The initial reason for not embracing .NET on Linux is that the entity that created and maintains .NET doesn't support Linux as a first-class platform for .NET.

That remains the case.

Even the entity that maintains Mono, the almost-.NET that runs, among other places, on Linux, isn't really focussed on Linux any more, having moved on to mobile.