
Mono 3.2.7 is out - ot
http://news.mono-project.com/2014/02/25/mono-3-2-7-is-out/?utm_source=twitterfeed&utm_medium=twitter
======
CoffeeDregs
The lack of benchmarks comparing Mono to the CLR (C# VM) is very frustrating.
Apparently, the lack of benchmarks is due to Microsoft's license forbidding
the publication of benchmarks without Microsoft's permission (common practice
among commercial vendors?).

Fortunately, we have the Benchmarks Game and that shows Mono performing well
[on synthetic benchmarks...] when compared to a variety of languages.

vs Java:
[http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...](http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=csharp&lang2=java&data=u64q)

vs Go:
[http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...](http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=csharp&lang2=go&data=u64q)

vs Python:
[http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...](http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=csharp&lang2=python3&data=u64q)

~~~
nswanberg
Thanks. It took a little while to find, but if anyone is interested in
comparing Mono to the CLR for themselves (and likely do some work to adapt the
system to Windows), here's where to start:
[http://benchmarksgame.alioth.debian.org/play.php#languagex](http://benchmarksgame.alioth.debian.org/play.php#languagex)

~~~
igouy
The measurements scripts provided on the benchmarks game website are written
in Python 2.5+ and worked fine on MS Vista using:

\- Python 2.5+

\- Python Win32 Extensions (for win32 process monitoring)

\- GNU Make for Windows

\- GNU DiffUtils for Windows

Download bencher.zip from:

[https://alioth.debian.org/frs/?group_id=100815&release_id=18...](https://alioth.debian.org/frs/?group_id=100815&release_id=1876)

------
romanovcode
MVC5 still not working tho. Good thing we have Nancy.

Edit: Seems like many do not know about Nancy, check it out, some even say
it's better than MVC. The good side is that it's 100% compatible with Mono
because they run tests against it too so you can host your C# websites on
Linux.

Github: [https://github.com/NancyFx/Nancy](https://github.com/NancyFx/Nancy)

~~~
skrowl
First time I've heard of Nancy. Anyone got a URL since it's name is so
terrible that you can't google it?

~~~
Yuioup
I had the same problem. I googled "Mono Nancy" and eventually found this:

[https://github.com/NancyFx/Nancy](https://github.com/NancyFx/Nancy)

EDIT: It seems to be a .NET clone of node.js

~~~
skrowl
.NET clone of node.js would be nice, because I like the idea of node.js but
not enough to ditch all my .NET stuff (especially entity framework).

~~~
nbevans
Entity Framework is really not a good excuse. .NET has lots of great things
going for it. Entity Framework is firmly on the "enterprise .NET" list of such
items though.

.NET has always been able to do what Node does anyway. It has had HttpListener
since v1.0...

~~~
mattmanser
Think you'll be getting a shock in a couple of years if you think the EF is
enterprise. It's changed massively and coding without it is becoming a little
like coding javqscript without jQuery.

You can do it, but why bother writing all those crud operations yourself??

Even with complicated SQL you can hand roll it and then tell the EF which
class you're.returning and it'll handle all the boring
`rs.GetInt(rs.GetOrdinal("ID"))` crap.

------
edwinnathaniel
I tried Mono a few months ago because I was thinking of writing cross-platform
(ish) desktop GUI application.

My dev platform is Ubuntu so I downloaded MonoDevelop and load the GtkSharp
example (or maybe it was just the skeleton project template). Hit compile,
bunch of errors showed up. Apparently I don't have the GTK libraries. Googled
a bit, it looks like I had to download gtk-dev, compile, and do a bunch of
things before I can run a "Hello, World" GTK sharp app.

I wade through the net and the tutorials and documentations are either for
older versions or just weren't there (for example, integrating with NuGet).

It's a bit sad because I'm sure there are tons of engineering effort went into
Mono but it just doesn't feel polished enough.

It's open source but lately I felt that it's more of a teaser for Xamarin than
anything else.

~~~
curveship
That sounds like the kind of growing pains experienced when you set up any new
largish development environment. If we're up and running with ecosystem X, we
forget how much work it took to get there, because it was amortized over time.
When we start out with a new ecosystem Y, we spend a lot of time in the steep
part of the learning curve before reaching Hello World. Java is, IMHO, the
worst for this.

Just curious, I've never installed Mono, but my first thought would have been
to look for a PPA. Are there none out there? Let someone else figure out the
dependencies and configs for you.

~~~
alkonaut
An IDE should aim to pass a simple UX test which is: after installing the IDE
with no prerequisites and no further configuration (no I don't want to create
an env var, specify where I keep my compiler or ...), a hello world program
should be possible to run straight away.

~~~
coldtea
Having the libraries and language installed is not the IDE's job. The IDE is a
glorified editor with more stuff.

Eclupse and Idea need Java to be installed for example. And I'd guess VS needs
.NET to be installed.

~~~
klibertp
> The IDE is a glorified editor with more stuff.

If only more people thought like this then I wouldn't be looked at funny when
calling my Emacs an IDE. Instead I have some 90% of PyCharm functionality (+
Org Mode), but I constantly hear that it doesn't count because "I had to
configure all these plugins" and so on...

And last time I checked VS installed everything it needed to run by itself -
it didn't even ask if I want it IIRC. Dunno about Eclipse.

~~~
edwinnathaniel
Eclipse and IntelliJ don't come with the compiler, probably due to licensing.

Also keep in mind that VS only works in Windows, not as cross platform as
these two. Installing for Single-Family-OS (Windows...) vs different OSes =>
different complexity.

~~~
alkonaut
Which is why I think that IDE makers that don't make their language are at a
disadvantage (that they should try to work around), and language makers that
don't provide an IDE don't take full advantage of their situation. A
language/platform without a good dev experience is just not complete. The dev
experience is a huge part of what a lang/platform does, and should influence
design decisions at every level, i.e. "do we have all the debugging/hot-
deploy/profiling entry points in place", or "could this grammar be better for
providing autocomplete in invalid synax"?

As for java IDE's: it can't be rocket science to detect & use existing java
installations in a good way, or even download & install them in the background
(even with licensing issues).

~~~
alkonaut
> what's the recent version of Java that should be installed?

The latest one? The most common one? The one the IDE requires?

Surely you don't want to use an older one? Even if you deploy to an older
target, if you can't do that from a newer one something is wrong. Worse case
the IDE could just ask during installation.

If the IDE setup isn't made by monkeys, suerely it wouldn't rely on a hard-
coded download url. They would serve it themselves or ask a web service on
their end for the URL to the java installer. Sorry if I sound like a grumpy
old man, but it's exactly this sort of thinkning that makes OSS platforms and
IDE's so clumsy to work with.

The error is usually the idea of "this tool just tries to do X and doesn't
care about Y", or sometimes phrased as "the tool does one thing, and does it
well". While that is a noble idea, it should never be used as an excuse for a
crappy UX.

------
baldfat
I am still so frustrated that Mono got lambasted for being a M$ trap. It was
the biggest FUD I have ever read. Hope to see mono return to use in Linux
community again.

~~~
rbanffy
Why?

The nix world never suffered from lack of decent languages, compilers,
development tools, ecosystems and runtimes. The only benefit Mono gives nix
users is to write software that's easy to run on Windows and that barely
registers on most priority lists. It's been, IIRC, 6 years since I last wrote
a "real" desktop app. I did it in C#, but Mono couldn't run it because it
relied on Windows-only GUI components. Happily, it was never intended to be
deployed on non-Windows environments and everyone was happy.

If I needed to write a desktop application (that's so 90's) that runs
identically on both Windows and Linux, I'll just write it in Java.

~~~
pjmlp
Haven't you heard it? The mobile is the new desktop.

~~~
rbanffy
I wonder how much of the mobile market cross-platform toolkits have. I've used
Titanium, but only for exceedingly simple apps. Anything else is done with the
native tools. I know there are apps that require complex device-side logic
but, most of the time (at least for me), almost all of the logic runs on a
server and all that's left is user interface management.

------
skrowl
STILL no Ubuntu packages. The official repos are back in 2.x.x land.

~~~
romanovcode
Well compiling it from sources is not _THAT_ hard.

    
    
        git clone git://github.com/mono/mono.git
        cd mono
        ./autogen.sh
        make
        sudo make install

~~~
e12e
That might be, but how do you then make a source-package of your program that
compiles and installs successfully on the target distributions that don't have
an up-to-date mono toolchain? Because while a _developer_ might follow
upstream, _users_ shouldn't have to...

~~~
e12e
It's actually quite a bit worse than that. For instance, I successfully built
and installed mono locally now, but am unable to run simple gtk-applications.

    
    
        git clone git://github.com/mono/mono.git mono.git
        cd mono.git
        ./autogen.sh --prefix=${HOME}/opt
        make get-monolite-latest # Need mono to compile mono
        make EXTERNAL_MCS="${PWD}/mcs/class/lib/monolite/gmcs.exe"
        make install
        export PKG_CONFIG_PATH=${HOME}/opt
    
    

I can now successfully compile and run a command-line hello world, but a
simple gtk-test (and winforms test) fail when attempting to run the examples.
This probably has someting to do with linking and assemblies, but
experimenting with PKG_CONFIG_PATH, GAC_PATH and MONO_PATH makes no apparent
difference...

    
    
       cat <<eof > hello.cs
       using System;
       public class HelloWorld {
        static public void Main () { Console.WriteLine ("Hello Mono World!"); } }
       eof
       mcs hello.cs
       mono hello.exe
    
       > Hello Mono World!
    
    
       cat<<eof > hello-gtk.cs
       using Gtk; using System;
    
       class HelloWorld {
        static void Main () {
            Application.Init(); 
            Window w = new Window("Hello Mono World!");
            w.Show(); 
            Application.Run(); }}
       eof
       mcs hello-gtk.cs -pkg:gtk-sharp-2.0
       mono hello-gtk.exe
    
       > Unhandled Exception:
        System.IO.FileNotFoundException: Could not load file or
        assembly 'gtk-sharp, (...)

------
pjmlp
Great work! Now if Unity would just update their runtime....

~~~
TillE
That situation is now verging on the comical. Is it really so hard to cut a
new deal with Xamarin? Even if they can only offer the new Mono version for
paid users in Unity Pro, they need to do _something_.

If Unity go another major version still using Mono 2.6, they seriously risk
losing ground among developers making CPU/memory-intensive games. Or even
those concerned about optimizing for mobile platforms.

~~~
_random_
"If Unity go another major version still using Mono 2.6, they seriously risk
losing ground among developers making CPU/memory-intensive games. Or even
those concerned about optimizing for mobile platforms." \- that would be
great! I feel they desperately need some competition.

------
pjmlp
There is already a 3.2.8 out, it seems.

[http://www.castlesoft.com.au/new-in-
mono-328](http://www.castlesoft.com.au/new-in-mono-328)

~~~
romanovcode
When you compile from source it tells you it's 4.0.0

~~~
pritambaral
Is that Mono 4.0.0 or .NET 4.0?

~~~
romanovcode
Mono. I think it's a bug or something.

    
    
        Mono JIT compiler version 4.0.0 (master/c198a39 Pk feb 21 22:02:35 EET 2014)
        Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
            TLS:           __thread
            SIGSEGV:       altstack
            Notifications: epoll
            Architecture:  x86
            Disabled:      none
            Misc:          softdebug 
            LLVM:          supported, not enabled.
            GC:            sgen

~~~
skrowl
I JUST (today) build from source on github and got this:

    
    
         mono -V
        Mono JIT compiler version 3.4.0 (master/8f2d3ea Wed Feb 26 11:59:41 EST 2014)
        Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
            TLS:           __thread
            SIGSEGV:       altstack
            Notifications: epoll
            Architecture:  amd64
            Disabled:      none
            Misc:          softdebug
            LLVM:          supported, not enabled.
            GC:            sgen

------
melling
"Performance under some benchmarks was improved by more than 20%."

How is Mono's JIT performance compared to Microsoft's? Are they nearing
parity?

~~~
RyanZAG
There doesn't seem to be many reliable benchmarks available. I'm not sure why.
Here is an in depth benchmark showing Mono lagging very heavily behind
Microsoft, but I have no idea if the gap has widened or shrunk since then.

[http://www.codeproject.com/Articles/212856/Head-to-head-
benc...](http://www.codeproject.com/Articles/212856/Head-to-head-benchmark-
Csharp-vs-NET)

~~~
profquail
That article is 2.5 years old; Mono has gotten _significantly_ better since
Xamarin spun off from Novell, and much progress has been made in the last 18
months or so. It would be interesting to re-run those benchmarks with the
latest version of Mono though.

~~~
RyanZAG
AFAIK Microsoft's .NET runtime has also made significant improvements in the
last 2.5 years, so as I said, it's just a thumb-suck as to whether the gap has
changed. Maybe this will get someone interested in doing some comprehensive
benchmarking...

~~~
TIHan
[https://github.com/fsharp/fsharp/issues/162#issuecomment-280...](https://github.com/fsharp/fsharp/issues/162#issuecomment-28072227)

I did a few benchmarks here.

In recent experiences, .NET runtime is faster in most situations, but
sometimes Mono can be faster than .NET. It all depends on what you are doing.
In extreme cases, .NET is usually ahead. You also have to account for the JIT
time. It's after the JIT that should matter.

------
patja
What are some big poster-child success stories for running MVC on Mono in
production?

~~~
JL2010
Rdio is probably one of the bigger success stories for Xamarin/Mono You can
see a list here: [https://xamarin.com/apps](https://xamarin.com/apps)

~~~
coderguy123
rdio is using the xamarin tools for ios and android.

mvc + mono website on linux success story - i haven't seen one.

~~~
brokenparser
I'm trying to do that for a small community site but I find the documentation
a bit lacking. I know I have to create a directory somewhere and write a
web.config in XML but I'm still figuring out the rest. I may end up copying
someones Github project and tearing it apart to see how things work in
practice, or perhaps my RTFM skills are somewhat lacking lately. But if you'd
ask me I'd say the widespread presumption all developers are running Visual
Studio.NET with Nuget is part of why you haven't seen those success stories.

On the bright side, I've heard good things coming out of ServiceStack.
Apparently it shines in the backend web service department and works well with
Mono. It's based on ASP.NET and since the requirements for my little project
are fairly minimal, I think it's a bit overkill there. But it's still worth
checking out for more demanding projects, IMHO.

