Guest
[Entry]
"The graphical layer is not the same, at all. OS X uses a proprietary graphical framework, linux uses X (X11/Xdotorg)
Almost all native OS X applications use frameworks such as Cocoa, CoreAnimation and so on, which are only available on OS X.
For example, say you have an application which stores a password for the user - on OS X, this would use its Keychain system and relevant APIs. If you were to port this to Linux, there is no direct equivalent, so you would have to re-impliment this entire feature. That is a tiny feature, and would require a large rewrite.
If you write your application using a cross-platform GUI library like GTK, Qt or wxWidgets, and porting will be much easier (or, ""possible"") - but the operating systems are still very different in terms of UI (for example, OS X uses a separated menu bar, whereas Linux tends to have its menu bar for each window)
One of the best cross-platform ports I've seen is Transmission, which implements its main functionality as a library (which contains as little platform-specific code as possible), then creating native GUIs for each platforms, separately. This means each port shares a lot of code, but all have good, native interfaces (rather than a single interface which fits nicely on Linux, but is out of place on OS X, or vice versa)
There is a project called Cocotron which ""aims to implement a cross-platform Objective-C API similar to that described by Apple Inc.'s Cocoa documentation"" which would potentially make porting much easier, but there seems to be very little activity of late (the last blog-post was in December 2008)"
|