<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Yes, I would like to work on an alternate System.Drawing assembly with you. &nbsp;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. &nbsp;But I am eager to learn, willing to obtain study aids at my own expense, and willing to be&nbsp;flexible.</div><div><br></div><div>But how do we begin? &nbsp;How to start a project and get it recognized by the Mono Project? &nbsp;How do we manage source control? &nbsp;Should I use Xcode or Monodevelop (preview or stable release)? &nbsp;Yes, I am a detail-oriented worrier.</div><div><br></div><div>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. &nbsp;The former is a smaller&nbsp;inconvenience&nbsp;for developers than the latter is for end users. &nbsp;But a library that references System.Drawing could create circular dependencies in this project. &nbsp;I am always looking for shortcuts, especially if I am one of two people&nbsp;tackling&nbsp;a task this big. &nbsp;In the short run at least, I believe we may need to be prepared to reference, adapt,&nbsp;or&nbsp;copy&nbsp;anything that license restrictions permit.</div><div><br></div><div>One thing we need to settle quickly is what API we build on. &nbsp;I have some ideas but few conclusions. &nbsp;The bridges I mentioned promise to clear one hurdle for us. &nbsp;But they are thin wrappers around the native frameworks and are not intended to handle some of the translations you mention.&nbsp;&nbsp;A new release of Monobjc that eliminates dependency on System.Drawing and has some other powerful features was just announced.&nbsp;&nbsp;But I find the claims of NObjective particularly exciting: &nbsp;Its build uses a translator that extracts info from Objective C Introspection to build bridges (including bidirectional exception&nbsp;re-throwing) for all frameworks in a list. &nbsp;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. &nbsp;However, I know even less about Carbon than Cocoa and Apple seems to be deprecating Carbon.&nbsp;&nbsp;I am willing to go along with the&nbsp;opinion&nbsp;of someone who has more&nbsp;knowledge&nbsp;in this area.&nbsp;</div><div><br></div><br><div><div>On May 16, 2009, at 9:39 AM, Mac Programmer wrote:</div><div><br></div><blockquote type="cite"><div><div><font class="Apple-style-span" color="#000000">From:&nbsp;Mac Programmer &lt;<a href="mailto:MacPgmr@fastermac.net">MacPgmr@fastermac.net</a>></font></div><div><font class="Apple-style-span" color="#000000">Date:&nbsp;May 16, 2009 9:39:36 AM CDT</font></div><div><font class="Apple-style-span" color="#000000">To:&nbsp;<a href="mailto:landrus2@by-rite.net">landrus2@by-rite.net</a></font></div><div><font class="Apple-style-span" color="#000000">Subject:&nbsp;re: [Mono-osx] I want to help developing Mac Mono</font></div><div><br></div></div></blockquote><blockquote type="cite"><div>Hi Lee,<br><br>Interesting post.<br><br>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:<br><br>otool -L libgdiplus.0.0.0.dylib<br>libgdiplus.0.0.0.dylib:<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/Library/Frameworks/Mono.framework/Versions/2.4/lib/libgdiplus.0.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/Library/Frameworks/Mono.framework/Versions/2.4/lib/libglib-2.0.0.dylib (compatibility version 1801.0.0, current version 1801.4.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.12)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/Library/Frameworks/Mono.framework/Versions/2.4/lib/libintl.8.0.2.dylib (compatibility version 9.0.0, current version 9.2.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/X11R6/lib/libXrender.1.dylib (compatibility version 1.2.0, current version 1.2.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/X11R6/lib/libSM.6.dylib (compatibility version 6.0.0, current version 6.0.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/X11R6/lib/libICE.6.dylib (compatibility version 6.3.0, current version 6.3.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/X11R6/lib/libX11.6.dylib (compatibility version 6.2.0, current version 6.2.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/X11R6/lib/libfontconfig.1.dylib (compatibility version 1.0.0, current version 1.0.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/Library/Frameworks/Mono.framework/Versions/2.4/lib/libexpat.1.5.2.dylib (compatibility version 7.0.0, current version 7.2.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/X11R6/lib/libfreetype.6.dylib (compatibility version 6.3.0, current version 6.3.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/Library/Frameworks/Mono.framework/Versions/2.4/lib/libtiff.3.dylib (compatibility version 12.0.0, current version 12.2.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/Library/Frameworks/Mono.framework/Versions/2.4/lib/libjpeg.62.dylib (compatibility version 63.0.0, current version 63.0.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/Library/Frameworks/Mono.framework/Versions/2.4/lib/libgif.4.1.6.dylib (compatibility version 6.0.0, current version 6.6.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/Library/Frameworks/Mono.framework/Versions/2.4/lib/libpng12.0.dylib (compatibility version 36.0.0, current version 36.0.0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)<br><br>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.<br><br>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.<br><br>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.<br><br>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.<br><br>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.<br><br>Thanks.<br><br>-Phil Hess<br></div></blockquote></div><div><blockquote type="cite"><br></blockquote></div></body></html>