* System.Windows.Forms System.Windows.Forms is currently being implemented using the Win32 API, we will be using WineLib on Unix systems to emulate the Win32 API. This means that those who want to contribute to the effort can develop and test classes today using Windows and P/Invoke calls to Win32 and we will then just run the result on Unix. In terms of integrating visually with the desktop, we are hoping to contribute to the Wine project an mechanism to make it use the Gtk+ themes on X11 and Cocoa on MacOS to render the widgets, and get the native look and feel on each of these platforms. There are no current plans to support embedded devices, but Gtk/FrameBuffer is an option. If you have suggestions or recommendations, please let us let us know * Contributing The Winforms effort is being coordinated in the mono-winforms-list@ximian.com. If you are interested in helping out with this effort, subscribe to it by sending an email message to mono-winforms-list-request@ximian.com. If you want to help, you can start by writing a control and testing it with Windows today (or you can also try to build the existing library on Linux, but this is a bit more complicated). See the file mcs/class/System.Windows.Forms/CheckOutList for details on who is working on which class. Please read the README document in the System.Windows.Forms/WINElib directory for details about how to build the Windows.Forms support for Mono. * System.Drawing Using existing libraries to implement some of the functionality required: We want to use gdk-pixbuf as the image loader for the image classes, and then we need operations to render that into the windowing system (Gtk+, MacOS, etc). But notice how there is very little dependnecies in Gdk-pixbuf on gtk, and libart has none. They are pretty independent from a windowing system (gdk-pixbuf comes with some "helper" routines for rendering data into a pixmap and to load pixmaps into RGB buffers). A few things to keep in mind: * Directory Layout
        System.Drawing  (assembly directory)
                System.Drawing.Blah
                        Common code for "Blah"
                        Stubs for "Blah" to ease ports.

                Gtk
                        System.Drawing.Blah.
                                Gtk ports of "System.Drawing.Blah"
                MacOS
                        System.Drawing.Blah
                                MacOS ports of "System.Drawing.Blah"
                WineLIB
                        System.Drawing.Blah
                                Win32 ports of "System.Drawing.Blah"
Notice that there is a proof of concept Gtk-backend for Windows.Forms, but nobody is working on it, and for the reasons stated before it is not a long term strategy. * Open questions: I believe that the graphics contexts that are used to render can accept either libart-like rendering operations and X11-like rendering operations. This complicates matters, but I am not sure. Someone needs to investigate this. * Historical Although the original plans were to use Gtk on X and Cocoa on MacOS X, it would be very hard to emulate the event model in which some Winforms applications depend, and it would be very hard to implement the Wndproc method.