[Mono-osx] I want to help developing Mac Mono

Lee V. Andrus landrus2 at by-rite.net
Tue May 19 12:20:57 EDT 2009


Yes, I would like to work on an alternate System.Drawing assembly with  
you.  However, be warned that although I am a highly experienced and  
talented programmer, my exposure to OS X API's has been slight since I  
have not been paid to work on Macintoshes in some time.  But I am  
eager to learn, willing to obtain study aids at my own expense, and  
willing to be flexible.

But how do we begin?  How to start a project and get it recognized by  
the Mono Project?  How do we manage source control?  Should I use  
Xcode or Monodevelop (preview or stable release)?  Yes, I am a detail- 
oriented worrier.

As a matter of general philosophy, I an less offended by build-time  
dependencies on freely-available libraries than a run-time dependent  
on the X11 server.  The former is a smaller inconvenience for  
developers than the latter is for end users.  But a library that  
references System.Drawing could create circular dependencies in this  
project.  I am always looking for shortcuts, especially if I am one of  
two people tackling a task this big.  In the short run at least, I  
believe we may need to be prepared to reference, adapt, or copy  
anything that license restrictions permit.

One thing we need to settle quickly is what API we build on.  I have  
some ideas but few conclusions.  The bridges I mentioned promise to  
clear one hurdle for us.  But they are thin wrappers around the native  
frameworks and are not intended to handle some of the translations you  
mention.  A new release of Monobjc that eliminates dependency on  
System.Drawing and has some other powerful features was just  
announced.  But I find the claims of NObjective particularly  
exciting:  Its build uses a translator that extracts info from  
Objective C Introspection to build bridges (including bidirectional  
exception re-throwing) for all frameworks in a list.  If  
System.Drawing is already using Carbon and NObjective lives up to its  
hype, we could build a bridge for Carbon and adapt some of the  
existing work.  However, I know even less about Carbon than Cocoa and  
Apple seems to be deprecating Carbon.  I am willing to go along with  
the opinion of someone who has more knowledge in this area.


On May 16, 2009, at 9:39 AM, Mac Programmer wrote:

> From: Mac Programmer <MacPgmr at fastermac.net>
> Date: May 16, 2009 9:39:36 AM CDT
> To: landrus2 at by-rite.net
> Subject: re: [Mono-osx] I want to help developing Mac Mono
>
> Hi Lee,
>
> Interesting post.
>
> I believe that Mono's System.Windows.Forms implementation on Mac  
> does use System.Drawing fo do everything. One big problem with that  
> is that System.Drawing is dependent on libgdiplus.0.0.0.dylib, a  
> native library included with Mono. This library is dependent on the  
> following native libraries, which are either included with Mono or  
> come from an X11 installation (a showstopper in my opinion). Here's  
> what otool reveals about libgdiplus.0.0.0.dylib:
>
> otool -L libgdiplus.0.0.0.dylib
> libgdiplus.0.0.0.dylib:
>        /Library/Frameworks/Mono.framework/Versions/2.4/lib/ 
> libgdiplus.0.0.0.dylib (compatibility version 1.0.0, current version  
> 1.0.0)
>        /Library/Frameworks/Mono.framework/Versions/2.4/lib/ 
> libglib-2.0.0.dylib (compatibility version 1801.0.0, current version  
> 1801.4.0)
>        /usr/lib/libiconv.2.dylib (compatibility version 5.0.0,  
> current version 5.0.0)
>        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0,  
> current version 88.1.12)
>        /Library/Frameworks/Mono.framework/Versions/2.4/lib/libintl. 
> 8.0.2.dylib (compatibility version 9.0.0, current version 9.2.0)
>        /usr/X11R6/lib/libXrender.1.dylib (compatibility version  
> 1.2.0, current version 1.2.0)
>        /usr/X11R6/lib/libSM.6.dylib (compatibility version 6.0.0,  
> current version 6.0.0)
>        /usr/X11R6/lib/libICE.6.dylib (compatibility version 6.3.0,  
> current version 6.3.0)
>        /usr/X11R6/lib/libX11.6.dylib (compatibility version 6.2.0,  
> current version 6.2.0)
>        /usr/X11R6/lib/libfontconfig.1.dylib (compatibility version  
> 1.0.0, current version 1.0.0)
>        /Library/Frameworks/Mono.framework/Versions/2.4/lib/libexpat. 
> 1.5.2.dylib (compatibility version 7.0.0, current version 7.2.0)
>        /usr/X11R6/lib/libfreetype.6.dylib (compatibility version  
> 6.3.0, current version 6.3.0)
>        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current  
> version 1.2.3)
>        /Library/Frameworks/Mono.framework/Versions/2.4/lib/libtiff. 
> 3.dylib (compatibility version 12.0.0, current version 12.2.0)
>        /Library/Frameworks/Mono.framework/Versions/2.4/lib/libjpeg. 
> 62.dylib (compatibility version 63.0.0, current version 63.0.0)
>        /Library/Frameworks/Mono.framework/Versions/2.4/lib/libgif. 
> 4.1.6.dylib (compatibility version 6.0.0, current version 6.6.0)
>        /Library/Frameworks/Mono.framework/Versions/2.4/lib/ 
> libpng12.0.dylib (compatibility version 36.0.0, current version  
> 36.0.0)
>        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0,  
> current version 1.0.0)
>
> System.Drawing encompasses everything from colors to fonts to  
> images. Currently Monobjc relies on System.Drawing to do a few  
> implicit conversions, for example between System.Drawing.Color and  
> NSColor. These kinds of conversions are handy but of course tie your  
> app to X11.
>
> NObjective and mcocoa don't appear to have dependencies on  
> System.Drawing, but then they don't appear to have ways of doing  
> these conversions either. Also, I believe Laurent is working on  
> removing the System.Drawing dependency and providing some other way  
> of doing the conversions. You might check with Laurent on the  
> Monobjc user list to see where he is with that.
>
> Having a dependency on System.Drawing in Monobjc also presents a  
> problem for me. I started working on a proof-of-concept Monobjc- 
> based WinForms implementation. I'll need to supply some parts of the  
> System.Drawing namespace too but I can't do this as long as another  
> assembly (Monobjc.Cocoa.dll in this case) references the Mono  
> System.Drawing assembly.
>
> Would you be interested in working on an alternate System.Drawing  
> assembly with me? Initially I would only need some of the basics  
> like Font and Color, but obviously the more there is to it the better.
>
> Also, I don't know what the Mono team's plans are for WinForms on  
> Mac. I think it's pretty hideous and unusable in its current Carbon  
> and X11 based form, although if you've looked at the latest  
> MonoDevelop preview you can see that they've been able to put the  
> MonoDevelop menus on the Mac menu bar (although they're using Carbon  
> functions to do it, not Cocoa), so it is possible to clean up a  
> WinForms app a bit. Note that this does not reduce the dependence on  
> libgdiplus.0.0.0.dylib or X11 any.
>
> Thanks.
>
> -Phil Hess

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-osx/attachments/20090519/57217749/attachment.html 


More information about the Mono-osx mailing list