[Mono-dev] Mono integration, and when do we ship Mono with Wine?

Vincent Povirk madewokherd at gmail.com
Wed Sep 1 19:24:37 EDT 2010


Dan Kegel recently listed this as a possible 1.4 goal:

> Mono integration similar to the current Gecko integration

He may have meant one or both of the following things:
1. A more-or-less complete mscoree.dll that works based on the mono
embedding api, as well as replacements for all the utilities that ship
with .NET.
2. A wine-mono package similar to the current wine-gecko package to be
installed automatically in new prefixes.

I am making very slow progress with 1. I believe the current major
shortcomings are functions that create COM wrappers for managed
objects (ClrCreateManagedInstance and DllGetClassObject) and functions
that search for and load different .NET versions (I believe these will
be needed so that the managed objects we create will load and function
properly). Mono already provides COM wrappers, so all we have to do is
create the objects and pass COM wrappers to applications.

I'm making this judgment based on the limited pool of mscoree bugs in
the Wine bugzilla. I wish more people would file bugs when Mono
doesn't work.

I figure 2 can't be very technically difficult in and of itself, but
when will we be ready to do that? What are the requirements? Do we
want to go the "offer to download and install on first use" route
first, and if so when will we be ready for that?

Do those functions I mentioned earlier have to actually work first?

The one hard requirement I have and have not met is that a working
mono package can be built by me using only free software and that I
can explain the build process to other people. I can do this for the
core runtime and libraries, but I cannot do this for the gluezilla
dependency.

This gluezilla thing is sort of explained here:
http://www.mono-project.com/WebBrowser

Basically, .NET provides a web browser control, which Mono implements
based on Gecko (or, optionally, WebKit). The official installer of
Mono for Windows, which is what anyone who uses Mono in Wine uses,
ships with Mozilla. It also ships with gluezilla, which is a C++
library that helps the managed code link Gecko.

I don't think it'd be acceptable to leave out WebBrowser support.

I am not currently able to create a Windows build of gluezilla or
gecko using only free software. As I understand it, the official
Windows build relies on Visual Studio. I do not know whether it's
feasible for gluezilla to link to wine gecko, so that we don't have to
install two versions of gecko.

I also know that shipping gluezilla and gecko on Windows is wrong.
Mono's wiki tells me that it's possible in .NET to access the
underlying IE embedding objects through the winforms api, and those
only exist if we're embedding IE. So the correct approach is to embed
IE (in this case, Wine's IE replacement) by writing another WebBrowser
backend. I don't know how hard that is. Maybe it'd make a good Summer
of Code project?

So, does anyone have other requirements, or thoughts on resolving the
WebBrowser requirement?


More information about the Mono-devel-list mailing list