As you may have noticed or are already aware of, I committed code to port AbiWord over Cocoa. I'll explain the choices.
Q: What is Cocoa ? A: Cocoa is the Objective-C API that is available in MacOS X. It inherits from the 10 yr experience of OpenStep from NeXT Software (actually it is an evolution of OpenStep). Q: Why Cocoa while you had worked on Carbon ? A: The choice of Carbon was solely because Carbon is C API while Cocoa is Objective-C API. AbiWord being written in C++, it was an easier path to go with a C API. Now that MacOS X 10.1 has Objective-C++ support, that allow mixing Objective-C and C++ within the same source file, Cocoa use was made easy from the AbiWord source code. Given how steep is Carbon learning curve and how complex are some of its API and given how easy is Cocoa development, the choice was natural. Q: What about MacOS 9 compatibilty ? A: In the past, I planned 90% source compatibility with MacOS 9 (with CarbonLib) by using Carbon. I no longer care about that. But the Carbon code will remain in the tree in case someone want to take over it. I just don't feel like it. In short, there won't be MacOS 9 compatibility with Cocoa port. Q: How will this integrate within the AbiWord source tree ? A: All the Cocoa code will reside in the cocoa platform subdirs. This ports also makes a step forward by seperating Back-End to Front-End. It'll use UNIX Back-End and Cocoa Front-End. The Back-End is in src/af/util. Everything else is Front-End but src/text. All the Cocoa code is Objective-C++ (.mm files) and will remain as such. Carbon code was in mac platform subdirectories. Note that the required changes to the build system won't be committed before 0.9.6 gets release. Q: What are other requirements ? A: InterfaceBuilder will be used for most GUI stuff, and we'll probably need to port glib as it is part of the Back-End. Otherwise nothing special. Q: What is the timeframe ? A: There is currently none. I just expect to gain some time by having done that switch despite the fact the I must start over. Q: Can I help ? A: Sure. Hub
