top | item 7561300

Mono and Roslyn

154 points| ot | 12 years ago |tirania.org | reply

55 comments

order
[+] jnardiello|12 years ago|reply
Recently we have started using Mono for a huge project. We have a pure unix-based stack and everyone cringed at the idea of running a .net application on Unix but decided to give it a try.

HUGE mistake. After a couple months of development we have (today) abandoned the project and decided to take a different direction.

Mono isn't just reliable for production, as simple as that. It will inevitably have unstable and unpredictable behaviours, period. That said, it might still be good alternative for desktop local apps. Just make sure you save your work enough times during your workflow ;)

[+] MichaelGG|12 years ago|reply
I've been running telecom applications on Mono since 2008, doing up to a billion transactions a week across dozens of servers. After sorting out some minor deployment issues (mainly reading docs or making sure we understood which switches do what)... it just works. We've not had any unstable or unpredictable behavior. Once we've tested and gotten it working, it has stayed working.

Only thing we've had problems with I think was the LLVM backend; IIRC some of our F# code didn't work on it. But that was before Mono 3.0 and I am not sure if we checked it since.

One set of applications is typical business message processing. Read XML files, deal with SQL Server, Postgres, RabbitMQ. Another one was using the Mono runtime embedded in FreeSWITCH to do stuff to an active SIP call. FreeSWITCH's Mono integration isn't totally unused and I've yet to hear of any stability related bugs.

[+] ihnorton|12 years ago|reply
Building a huge project on any unknown stack seems ... iffy.

Apropos this rant that I recently (re-)read: http://lua-users.org/lists/lua-l/2011-10/msg00825.html

Some other guy read about LuaJIT somewhere, so they give it a try, but obviously don't get a speedup and (of course) blame LuaJIT. They write angry letters to me, I try to politely explain to them that their design leaves something to be desired, they blame the messenger.

Then they go and write a post-mortem in a game-centric blog about how bad Lua is, that nobody should ever use scripting for anything and that their next stellar project will use C# with lots of enterprise-ready frameworks. And that they're hiring, because they got nobody with a friggin clue about C#, but management dined with someone from Redmond and they know best, of course.

[+] edwinnathaniel|12 years ago|reply
I know there are several desktop apps built using Mono for Linux but I suppose people have their opinions with respect to Mono.

My biggest grip with Mono is the lack of automation tools (SCM in this case) and that alone is a show stopper for me. Maven and Eclipse/IntelliJ spoiled me too much that I'd rather not touch Make/Ant/CMake/MSBuild. MSBuild is Microsoft only (despite there may have been some support in Mono, as you have read the article, it's still Microsoft exclusive tool).

I'd love to use Mono to develop cross-platform desktop application. I really really really do. In fact, I decided to give it a try one time despite its shortcoming that I mentioned above. In the end, I felt that there's simply too much work for me to build any side project using Mono.

This may not be the case for serious commercial desktop app because they can invest more resources to deal with the automation tools. But for side project? Mono would definitely not on top of my list.

[+] knocte|12 years ago|reply
Saying that mono failed for your project and that you're not going to touch it again is like saying that opensource failed for your project and you're not touching it again.

Mono is a project which has a lot of different pieces of technology underneath. Please tell us the part that didn't work for you, because you cannot attribute low quality to the whole project just by testing a small part. (i.e.: was your project a web app or a desktop app? how did you host it? did your team have any Unix expertise or were just a bunch of Windows devs expecting to become Linuxers overnight?)

And most importantly, what version of Mono did you use? (Most people that complain end up saying that they just used the mono that their 4 year old distro supplied, which is a version even older than 4 years.)

[+] Skinney|12 years ago|reply
Sorry to hear that. I was running a mono-based server app for myself for some time. Never ran into any issues but my own. Ran Mono 2.10 on Ubuntu Server.
[+] socialist_coder|12 years ago|reply
This was my experience as well. Serving c# web apps on linux just sucks.

I was using NancyFX, not ServiceStack. I wish I would have tried ServiceStack as well since I think they are probably better.

[+] snarfy|12 years ago|reply
It works well enough for the servicestack people.
[+] dawkins|12 years ago|reply
I'm sorry to hear that. I have been successfully running a web app on ubuntu/mono for four years now and I'm really happy about the stability and performance. It doesn't use any of the asp.net stack though.
[+] rottyguy|12 years ago|reply
can you elaborate more on the reliability please?
[+] gabriel|12 years ago|reply
I know there are subtle differences in the .net memory model compared to mono. I've fallen victim to this sort of thing before and depending on what you are doing and how aware/disciplined a team is, this could very much be a pain point.
[+] kanwisher|12 years ago|reply
I have a relatively large project in production that is using a ton of legacy c# code using mono for months ;/ with little issues. Could you maybe explain more about what you saw?
[+] romanovcode|12 years ago|reply
Completely agree. I also recently did a medium-sized project with Mono (website) because I thought that it will be cheaper since service such as digital-ocean is very cheap.

Turns out it would be cheaper to just host on Windows Azure because the work of fixing/tweaking things just so it will run properly took way more time (money) than was planned.

[+] patja|12 years ago|reply
I'm curious if you found some reference sites that had been successful running C# web apps on Mono, and if so what are they?
[+] DrJokepu|12 years ago|reply
Sadly, we had very similar experiences.
[+] spo81rty|12 years ago|reply
Would it make more sense not to abandon all that work but instead just run the project on Windows??
[+] socialist_coder|12 years ago|reply
I hope Unity3d improves their C# environment soon (maybe Roslyn will make it easier for them?). The Monodevelop that comes with Unity 4.3 (latest) is pretty buggy.
[+] cwyers|12 years ago|reply
MonoDevelop shouldn't be affected by this at all in the short term (although eventually MonoDevelop may get new features from this). The actual Mono runtime that comes with Unity isn't getting upgraded because of licensing issues, which as far as I can tell, is because you can't ship LGPL code on certain systems (I think the App Store license is incompatible with the LGPL, for starters).
[+] _random_|12 years ago|reply
Keeps getting better. Let's hope there will be a single unified cross-platform .NET-Mono-Framework in future with native capabilities.
[+] rbanffy|12 years ago|reply
"There are also a couple of patches to deal with paths (Windows vs Unix paths)"

Is it still a problem?! Seriously?

[+] elwell|12 years ago|reply
For those of you wondering what Mono is:

  Cross platform, open source .NET development framework
  [Linux, Windows, Mac]-compatible .NET
http://www.mono-project.com