tags:

views:

554

answers:

5

I'm wondering if mono.net is included in the default installation of Ubuntu, Kubuntu, and Fedora, and other popular distros?

If so, does anyone have a good reason why NOT to use it to develop a new GUI application targeted mainly for linux?

A: 

I'm wondering if mono.net is included in the default installation of Ubuntu, Kubuntu, and Fedora, and other popular distros?

I don't believe Ubuntu comes with it by default, Kubuntu certainly doesn't.

Ubuntu Intrepid, and probably Hardy, comes with Mono by default. Don't know about its status on other distros.

If so, does anyone have a good reason why NOT to use it to develop a new GUI application targeted mainly for linux?

If it's targeted mainly at Linux, why not use a technology that integrates better with the Linux desktop? Python and Java are good choices. Only use .NET if there's a large amount of legacy code you'll be re-using.

John Millikin
I can't think of an easier platform that C# + GTK# for creating a cross platform app, it beats the hell out of Java + Swing, and I really don't want to do C++ and QT, or C + GTK+
FlySwat
Wasn't one of the goals of mono to provide an open source implementation to benefit non-windows platforms. I don't see why mono isn't any better at integrating with Linux than Java or Python, especially Java.
Kev
You can use Java + GTK, or Python + GTK. Both have better bindings for Linux-related libraries and actually *are* cross-platform.
John Millikin
I'd even go so far to say that Mono could be the saving grace for Linux on the desktop if only folk could rid themselves of the usual Mono == MS == Bad crap.
Kev
.NET has delegates, which are 900% easier to use than anonymous inner classes for GUI programs. That feature alone, makes using Mono worth it.Mono also runs better on OS X than Java does (Has OS X even got Java6 yet?)
FlySwat
The OP is writing an application targeted to Linux, so behavior on OS X is irrelevant. Java has been used for years to write Linux desktop applications. I think it's proven itself to be an effective language for Linux GUI development.
John Millikin
Yet, as someone who has used both extensively, I can safely say that Mono not only integrates better (GTK# is excellent), but also features a much richer language (C# has features that Java wishes it had).You probably use a mono powered program every day, and just don't know it.
FlySwat
@John...but there's no harm in the new kid on the block. Mono is reasonably mature now and there's a crowd of devs with the .NET skillset out there who can now target Linux without having to learn Java and it's own framework.
Kev
@Jonathan: That is unlikely, as Mono is not installed (just checked). @Kev: That's been predicted, but so far the only Mono apps that work well on Linux were written for it natively and (in some cases) haven't even been ported to Windows. Just using .NET doesn't mean it will be portable.
John Millikin
@John - OP - "anyone have a good reason why NOT to use it to develop a new GUI application targeted mainly for linux?"...looks like portability isn't that important.
Kev
What I mean is that the predicted crowds of Windows developers who would start writing Linux applications has not appeared. The only Linux apps in Mono were written for Linux, on Linux, by Linux users.
John Millikin
@John-It's still early days. Linux is crying out for more great apps, if Mono can provide the grease to get that to happen then it's a good thing, even if the apps are Linux only. Hell I'm a died in the wool windows guy and mono has been whetting my appetite because I can leverage my .NET skills.
Kev
@John - ...on Linux.
Kev
I've not seen Java integrated well with any desktop environment; Mono certainly seems a better choice than Java if integrating with your desktop is the criteria. (Or even if it's not.)
Mark Baker
+14  A: 

It is included in Fedora, Ubuntu, Mandriva, Debian and OpenSUSE.

The only major OS that does not include it is RHEL, but packages are available for it as a separate download.

Additionally, you can bundle Mono with your application into a single binary if you need to (not recommended, but always possible).

GUI-wise Mono supports the Windows.Forms API on Unix and MacOS, but if you want a more native experience you can use the Gtk# API (this provides a .NET API for the GNOME library stack) or you can use Qyoto if you want to integrate instead with the KDE APIs.

There are many best-of-breed GUI applications for Linux that have been developed with Gtk# and Mono, some of the most popular ones include Gnome-Do (A quick application launcher), the F-Spot photo management software, the Banshee and Muine media players and the MonoDevelop IDE.

miguel.de.icaza
+1  A: 

I'm pretty sure it's default on Ubuntu. If it wasn't, I didn't notice installing it.

The package managers on modern distributions pull down dependencies automatically. There's no great impediment to using any strange platform on these distros.

That said, lots of Ubuntu apps are being written in Mono with GTK#. Most notably off the top of my head are Tomboy Notes and Gnome Do.

Darcy Casselman
+4  A: 

GUI-wise Mono supports the Windows.Forms API on Unix and MacOS, but if you want a more native experience you can use the Gtk# API (this provides a .NET API for the GNOME library stack) or you can use Qyoto if you want to integrate instead with the KDE APIs.

There are many best-of-breed GUI applications for Linux that have been developed with Gtk# and Mono, some of the most popular ones include Gnome-Do (A quick application launcher), the F-Spot photo management software, the Banshee and Muine media players and the MonoDevelop IDE.

miguel.de.icaza
Btw, for those who don't know, miguel.de.icaza is the principle author of Mono (and Gnome) :)
FlySwat
A: 

I think the biggest reason for not using it would be political. That being said, I think mono is an excellent enviroment to develop in when writing programs for Linux and I would recommend it to anyone writing a new application.

Anders Rune Jensen