Mac OS X Porting - Separate apps (OOoRunner -framework)
Contributors
- Mox Soini: Mox
- Oliver Braun (obr)
Introduction
Currently OpenOffice.org on Mac OS X is a single "OpenOffice.org 2.0.app". Thus, running the OOo suite apps, like Writer or Impress, requires starting the aforementioned .app and then selecting the appropriate application from the drop-down menus.
This behaviour is against normal Mac OS X style and is also different than how Windows and Linux do it (i.e. as separate apps).
Since separate applications -approach is already used in OOo Windows and OOo Linux, the basic building blocks are there already. Also, Mac OS X has technology called Frameworks. That is exactly what is needed to facilitate the sharing of common code between the OOo applications.
As for implementation, there are several opensource applications taking advantage of the framework -approach on Mac OS X (e.g. Mozilla's XULRunner), those should be studied and possibly adapted to OOo.
Roadmap for OOoRunner framework in Mac OS X
OOoRunner = UNO Runtime Environment + some infrastructure
Short term: for testing purposes, a (non-shared) framework can be positioned inside each app, by following the example in XULRunner 1.8 deployment.
Long term: The proper separation between the "core" OOo (i.e. the framework) and the applications (Writer, Calc, Impress...), needs to be specified/created. And also an API to facilitate the interaction between core and apps.
NOTE: There are plans to move in to this direction in OpenOffice.org in general, see Extension development slides especially page 15 (ODP -format)
Tasks
- modify OOo Mac packaging to support separate applications, issue 63630
- identify and separate core and apps, by looking at Windows/Linux implementations of OOo
- create the framework and test it with apps. (issue ????)
Implementation
The structure of a framework is as follows:
OOoCore.framework/
OOoCore -> Versions/Current/OOoCore
Resources -> Versions/Current/Resources
Versions/
A/
OOoCore
Resources/
English.lproj/
InfoPlist.strings
Info.plist
Current -> A
Additional standard directories (beside OOoCore and Resources) include: Headers, Documentation and Libraries. For contents of the Info.plist -file, see Framework Programming Guide
At the compile time, the compilation should be separated to (or at least fixing the dependences after building):
- building framework libraries as a framework
- building and linking the app against the framework (including header, flag: -framework OOoCore)
Links
...