[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.