[Mono-dev] Developing using Mono/Gtk# Vs Mono.WinForms (Windows & Linux)

Jonathan Pryor jonpryor at vt.edu
Mon Feb 23 13:00:55 EST 2009

On Fri, 2009-02-13 at 16:57 +0100, Chris Hills wrote:
> Tom Opgenorth wrote:
> >> What could be better to use Gtk# or Winforms?
> > The rule of thumb would use:  if the majority of users are Windows,
> > use WinForms.  If Linux, use GTK#.  Of course, this is assuming that
> > you're equally skilled in both.
> Bear in mind that if one chooses Gtk# one will have to include it with 
> one's Windows packages, as the vast majority of Windows users do not 
> have it installed already. Winforms is available in both .Net and Mono 
> as standard. The desktop integration of WinForms in Mono could be 
> improved if someone does the work to allow use of native widgets.

I suspect that this isn't possible, because native GTK+ widgets would
require a GLib event loop, etc., and wouldn't be able to raise the SWF
events that would be needed (which is why implementing SWF atop Gtk# was
never a workable solution).

The best that is likely possible is theming, which Mono has support for,
but theming is a far cry from actual "support" (see also Word 6.0/Mac,
one of the most hated Word releases of all time, which wasn't even
"themed" but was hated by ~everyone because it didn't behave properly).

> On a related note, I would like to see a Qt backend for WinForms 
> available as well. I believe the KDE project is still working on Qyoto.

Mono's System.Windows.Forms doesn't have a "backend" that is handled by
other toolkits (such as GTK+ or Qt), so this doesn't make sense.  The
entire SWF implementation is custom drawn with System.Drawing (itself
built upon Cairo on Linux).

In summary, Mono's SWF hasn't used native widgets in years, nor will it
do so any time soon (afaik), and SWF looks like ass on Linux.  Even if
it didn't look like ass (and good theme engines will help), it will
still behave differently from other Linux apps -- just see all the years
of problems with the "feel" part of "look and feel" that Java Swing has
dealt with (and oftentimes still suffers from).

GTK+ on Windows has similar problems, from what I've heard (looking
"alien," not "feeling" correct, etc.).

So there is no perfect, one framework fits all solution.  (Just see all
the people who claim to be able to tell a Qt app at a glance on OS X.)
The best solution, from the user perspective, is to provide a UI for
each platform, not provide one UI for all platforms.  Unfortunately this
increases costs, but users tend to prefer this solution, by far...

 - Jon

More information about the Mono-devel-list mailing list