Mac OS X Porting - Separate apps (OOoRunner -framework)

From Apache OpenOffice Wiki
Jump to: navigation, search

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):

  1. building framework libraries as a framework
  2. building and linking the app against the framework (including header, flag: -framework OOoCore)

Links

...

Personal tools