[Mono-winforms-list] Why no longer using WineLib as base?

Miguel de Icaza miguel@ximian.com
Wed, 24 Nov 2004 12:12:43 -0500


Hello,

> R you planning to join efforts or using some code from the pnet
> implementation?

We can not as we require the code in the Mono class libraries to be MIT
X11. 

They are using the GPL for their class libraries (The README states GPL
+exceptions, but the exception should really be listed on each source
file to make people comfortable).

GPL+exceptions or LGPL makes a lot of people nervous, and is the reason
of much debate today in the Open Source Java circles. 

Mono decided early on to eliminate all this source of fear or potential
problems in the future by using the MIT X11 license.

> Does the pnet implementation of SWF work with mono? Did anyone tried
> to run the pnet implementation with mono?

It is possible to get it running on Mono, but it requires source code
modifications.  

They used to have some special marshal attribute that they mapped to
some internal behavior that is not compliant with the spec.  I forget
why that was there.

> How different is now the mono implementation of SWF in comparation
> with the portable.net implementation?

* Driver model:

	The driver is hidden from the end users in Mono;  In PNet
	the driver is a public interface in System.Drawing assembly,
	which breaks the public contract (ie, its possible to use
	those APIs on Linux and have your app not work on Windows).

* Rendering

	Our System.Drawing is implemented on top of Cairo and our
	implementation is fairly complete in terms of the advanced
	GDI+ functionality, so the rendering is more complete, and
	the most advanced features are supported.

	Plain Cairo today is slower than using plain X11 for your day
	to day drawing.   The good news is that Cairo is being improved
	now, and that it will become hardware accelerated.

* Event dispatching, window creation:

        Internally Mono's implementation makes heavy use of Windows-isms
        to maximize compatibility with the real Windows.Forms.  This
        means that messages are actually translated into WndProc
        messages (WM_*) and we use the CreateParams model in the same
        way Windows.Forms does (WS_* constants).
        
* Licensing

	As discussed before.

* Completeness

        They are both fairly incomplete to run real applications found
        on the wild today, but they will eventually get there.  
        
        PNet has been working on their implementation for longer than we
        have been on our current implementation. 
        
        Mono on the other hand has four full time developers working on
        it in addition to the community contributions. 

Looking at the future, we hope to:

        * Using a couple of Gnome technologies: Pango (for
        internationalized rendering as soon as the Pango/Cairo interface
        ships) and Atk for accessibility.

	* Implement native MacOS X driver and look and feel.

	* Provide a frame buffer driver for thin devices, either running
	on top of MicroWindows, or writing our own tiny manager.

Miguel.