tags:

views:

1070

answers:

3
+16  Q: 

DotGNU vs Mono

DotGNU and Mono seem to be attacking the same problem - namely implementing the .NET CLR in a free, open-source way with an eye to cross-platform compatibility.

I've been reading quite a bit about both, and I'm having a hard time deciding which implementation to use for an upcoming project. My particular project doesn't need System.Windows.Forms, so the graphical UI part of the libraries won't be too important.

So: has anyone tried comparing the two directly? What are the pitfalls of either with respect to the other? Is one more supported by the FOSS community than the other?

Thanks to all who respond :)

+23  A: 

Well, Mono looks like a much more complete port to me, with a lot more backing.

Judging by the web site, DotGNU seems to be as much about telling people not to use .NET as it is about providing a viable alternative. Many of the links (such as the "latest changes") don't seem to go anywhere useful.

Mono, on the other hand, is very obviously under active development, supports the new DLR, has implemented C# 3.0 and LINQ support, is available to install from packages for multiple platforms, has working documentation etc. The winner seems pretty clear to me.

Jon Skeet
I also got a similar impression looking at the DotGNU site. It looked like the biggest news since 2006 (and one of the few) they had was switching from CVS to git!
crashmstr
Yup. And if they're only going to go by ECMA standards, they'll be stuck with C# 2.0.
Jon Skeet
Microsoft seems to be supporting Mono too.
Joshua
That's not really fair. Portable.NET actually had a lot of work put into it by a very talented programmer (Rhys Weatherley). It's an honest attempt to create an implementation of the ECMA specs; it's simply that there were two projects doing the same thing and Mono won the Mindshare war.
Simon Howard
@Simon: Which bit of my post are you actually disagreeing with? Whether Portable.NET is technically excellent or not, the website still seems to be more about politics than anything else - and I can't see how anyone could argue against my points that Mono is more complete, has more backing, is under more active development etc.
Jon Skeet
"Judging by the web site, DotGNU seems to be as much about telling people not to use .NET as it is about providing a viable alternative." seems to imply that you think DotGNU is just an anti-.NET campaign. And yes, I agree that Mono is more complete in every respect. If I had to choose one of the two to use for a project, I'd pick Mono every time. But DotGNU certainly isn't just a political campaign.
Simon Howard
@Simon: I don't think it's just an anti-.NET campaign - but the impression given is one where the politics matter as much as the technology, and I think for most developers that's just not the case. I think the web site does the technology side a disservice. I'm sure there's real technology in the project, but it's clouded by the politics, and I for one find that deeply offputting.
Jon Skeet
"I'm sure there's real technology in the project, but it's clouded by the politics"It's a GNU project. Not much surprise there :-) And I agree. It's a shame because the Portable.NET compiler actually does some things that Mono doesn't - last time I checked it had a prototype C compiler, for example.
Simon Howard
A: 

people should keep track of the events where u$oft has been involved during this past decade; anyhow... I would use Portable.net from the dotgnu project without a doubt, see this:

http://www.fsf.org/news/2009-07-mscp-mono

and also...... we need to switch to Mach/Hurd..... many have become just like anakins, joining the empire instead of providing balance to the force!

nestor
A: 

Dotgnu does not support generics and anonymous delegates, while mono does.

I had successfully compiled dotgnu from git sources on a number of platforms with and without libjit. I had a much less success compiling mono from their latest sources.

If you compile pnet with libjit (./configure --with-jit) then the performance of dotgnu is slightly better than mono for the nbody benchmark.

So, if you need generics, go for mono. Otherwise go with dotgnu.

PS: There is certain development on dotgnu git-sources -- I update it once in a while and can see the new commits every so often.

Dmitri
Somebody negged me, I suppose for claiming that dotgnu is faster. Well, that what it is on a 64-bit Ubuntu 10.04 with supplied mono and fresh dotgnu 0.8.1 compiled from git-sources. Here is the result running nbody from computer language benchmarks:mukjaj@mukjaj:~/Komod/js$ time mono nbody.exe 10000000-0.169075164-0.169077842real 0m4.572suser 0m4.560ssys 0m0.010smukjaj@mukjaj:~/Komod/js$ time ilrun nbody.exe 10000000-0.169075164-0.169077842real 0m4.546suser 0m4.540ssys 0m0.000s
Dmitri
Yes, and mono version was 2.4.2.3. The difference is not big, but it is there.
Dmitri
Yes, and memory usage was 35M for mono and 31M for dotgnu. So, here dotgnu is again slightly better. But then again, this was for numerically heavy calculations -- that's what I mostly do. For other types of applications your mileage may vary.
Dmitri
And also a question to the person who negged me -- could you please tell me how to compile the latest mono on a 64-bit Ubuntu 10.04? It fails on me: "make check" crashes... And I'd like to have the lates mono.
Dmitri