[Mono-list] how to develop a cross platform solution with Mono

Jonathan Pryor jonpryor at vt.edu
Sun Mar 18 20:11:01 EDT 2007


On Fri, 2007-03-16 at 08:35 -0400, Sam Carleton wrote:
> It makes me wonder
> about unified GUI development.  The last thing I want to do is have a
> Gtk# for Linux, once I get there, WinForms for Windows, and CocoaSharp
> for OSX.

*You* may not like having platform-specific UI code, but your *users*
will love it.

There are only two portable UI libraries that work on Win32, Linux, and
OS X: Qt and Java Swing.  (GTK+ is in the works.)  Both permit what you
want, and both annoy the users.  In particular, since Qt and Swing (and
GTK+) all rely on custom drawing, AS SOON AS the OS vendor updates the
look-and-feel of their native widgets, the the apps look "wrong" or
"old."  (Assuming that they were ever "right" to begin with --  I've
heard complaints against Qt that the buttons under OS X don't have the
same amount of padding around words that "real" widgets  have.)  Then
there's drag-and-drop, integration with the OS X "Services" menu, etc.

Portable UI code is good for *you*.  It's NOT good for the user, unless
all of your users are on one platform (in which case you don't need to
care about a portable UI library, do you?).

> So in the end, my thoughts have been leaning towards punting with .Net
> and either using Mozilla's XULRunner and XPCom as the framework, or
> using Qt.  I do like C++ development, but I do fully respect the speed
> and ease of .Net development, so the question remains:

The good news is that XULRunner and XPCom can work with Mono.  The bad
news is that it's really Q@#$% ugly and brittle (last I heard); see the
ASP.NET Editor within MonoDevelop.

> Is there a way I can develop a unified GUI using Mono that will give
> me a rich user interface in both Windows and OSX?

Rich?  Yes.

Rich enough for all of your users expectations?  Never in a million
years.  People have tried for decades, and no one has succeeded.

 - Jon




More information about the Mono-list mailing list