Hacker News new | comments | show | ask | jobs | submit login

If you're using C# or similar, the only reasonable choice is to always use Mono.

Just use the cross platform and open source runtime, as you would for any other language, and pretend that .Net doesn't exist.

Serious question, I'll come back through my comment log to look at replies I promise: what tools exist for C# on Mono? I've used VS. I use Eclipse. I refuse to leave an IDE. I've never liked debugging from the command line. Any help here would be appreciated since I really like C#'s sense of balance and embracing newer ideas from the functional side of the house.


Ximian has a plugin (http://mono-tools.com/) that lets you remote deploy/debug mono applications from Visual studio - it was free after a survey not sure if it still is or if it will be updated to vs 2012.

There are other tools sharpdevelop (for window) and monodevelop (all platforms) - but they are somewhat lacking. Sharp develop seems to slow down dramatically on large projects or WPF projects. Monodevelop seems to lag sharp develop in features and maturity.

GUI toolkits for dotnet are hit-and-miss. GTK# has the most traction and is cross platform - the documentation was lacking last time I looked. But, if you have a GTK background it may be a non-issue. Wx and QT bindings exist but I believe development has slowed down/stalled. Of course, there are OS X, android and iOS bindings that ximian sells. Unless you have a large existing c# code base it probably doesn't make sense to use them for greenfield development.

Server-side is where I think mono actually does shine a bit. Although you need to move out of the standard NetFX stack (i.e. WCF) to other open source libraries (i.e., ServiceStack). ASP.NET and MVC do run on mono - there are tutorials to deploy against apache or nginx.

As you can imagine there is some lag between mono and microsoft dotnet framework (see http://www.mono-project.com/Compatibility). The gist of it mono tries and succeeds keeping up with the framework but there are large holes with respect to .NET 3.0 (WWF, WCF, WPF). There was a silverlight plugin (moonlight) but much like silverlight new development has stopped.

I should add: the value proposition for mono is a bit bizarre.

On the server, typically mono is chosen because mono on linux is much cheaper than azure, or windows hosting (AWS, etc) therefore you trading slightly more development and setup effort for cheaper run-time costs.

For the phone/tablet market, you are doing the opposite trading money (monotouch licenses) to save development time and learning a new platform.

On the desktop, I think the value proposition is much less well defined. It depends alot of the mix of clients you are supporting.

Xamarin has a full application suite to complement it. I'd say since 2010 it has been perfectly mature. The C# runtime on Linux is slower than the Oracle JVM though, but about as fast as the OSS JVM from the statistics I last saw.

You can use MonoDevelop to develop C# projects on Mono:


I'll take a look at that now.

Visual Studio + ReSharper is a dream come true. As someone who learns by doing rather than studying, ReSharper's refactorings and inline code reformatting suggestions was an invaluable source of idiomatic C# knowledge (second only to great code reviews from one of my C#-clueful coworkers). And Visual Studio's debugger lets you move the program counter backwards, which is just awesome for interactive REPL-esque development.

(No, I'm not a JetBrains employee -- just an avid fan of every product of theirs that I've used.)

There's no need to ditch Visual Studio at all. For instance, if you use VS with TestDriven.Net, you can run your tests on mono straight from VS. I believe there's also a way to debug mono from VS, but can't recall how and don't have VS available right here.

Or just use java and benefit from mature libraries and frameworks, tooling and package management that isn't a piece of shit. Your insurance is the openjdk then rather than a thinly veiled promise not to sue from Microsoft.

Stop spreading FUD.

That "thinly veiled promise not to sue" is backed by the full force of a legally binding promise recognized by the combined weight of the US and Euro legal systems. Microsoft is, by centuries of established law and court decisions, precluded from suing someone from using C# through Mono or any other API or framework.

Moreover, using Java is now riskier than using C#, as Oracle has changed the licensing terms for the language, the API, and the development tools to allocate to itself greater legal control over the Java IPs than Sun did (or which Microsoft reserves as to C#).

EDIT: Just so we're clear, to all the non-lawyers and non-legally savvy HNers: The promise not to sue is itself what is binding, as a consequence of more than two centuries of US and Euro law (see, e.g., the concept of promissory estoppel). The point of the promise was to clarify the permissive license to use Microsoft's IP as it relates to C#.

>> Microsoft is, by centuries of established law and court decisions, precluded from suing someone from using C# through Mono or any other API or framework.

Then why did they feel compelled to "promise" not to sue:


If you're correct then all they needed to do is point to your statement that no court will allow them to sue.

That precise promise is why they are precluded from suing.

>That "thinly veiled promise not to sue" is backed by the full force of a legally binding promise recognized by the combined weight of the US and Euro legal systems.

Have you got a source for that? AIUI under UK law the concept of promissory estoppel only exists in the context of an agreement in which the other party has received consideration. Not having paid MS anything, I don't see how that can apply here.

In the US, my understanding is that consideration is necessary for contract formation, but by contrast promissory estoppel applies only when there is no consideration. A quick perusal of Wikipedia's coverage of the topic [1] makes it look like the UK's treatment is roughly similar.

[1] http://en.wikipedia.org/wiki/Estoppel_(English_law)#Promisso...

No its not actually. The scope of the legal agreement is undefined and may or may not encompass bits of the framework which mono implements or may implement in the future. So don't count on it, which is what our rather expensive lawyer told us.

OpenJDK is GPL.

Some portions of the framework are not covered by the promise but Miguel mentioned something about Xamarin still having some kind of protection the project had when it was at Novell. Does anybody have any information that can prove/disprove this?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact