From Apache OpenOffice Wiki
Jump to: navigation, search

Type: Effort Status: in progress Owner: Stephan Bergmann (Kay Ramme)

OpenOffice.org (OOo) and its derivatives are complex products. Many features, templates, configuration files, registry entries, binaries, localizations etc. need to be delivered and deployed in a reliable and platform compliant way, while giving the user broad choice regarding the particular features he wants to actually install.

OOos growing ecosystem brings the current approach to its limits, we are currently facing a set of problems, which the below proposed solution is going to address. OOo based products need to support different platforms (Operating System / Machine Architecture) as well as different deployment systems (e.g. RPM, Debian Packages, Ports, Solaris Packages, MS Windows Installer), localizations and feature sets, as well as they need to be easy to extend and maintain.


The Package Restructuring project aims to improve the overall OOo packaging structure, to

  • ease testing,
  • improve build performance,
  • ease introduction of new, updated or derived products (shopping cart approach),
  • simplify maintenance.


  • Overlap of OOo and OOo based products, such as the URE, OOo[locale], StarOffice, OOo[machine] etc. and resulting issues, such that an OOo de may not be installed after an OOo en-US, because of conflicting packages.
  • Custom brands and localization can only be provided as part of building OOo.
  • High QA efforts, as every deliverable needs to be tested.
  • Every update / patch as an independent product again.
  • Extensions are not maintainable as system packages.


Step by step reduce the overall number of different packages (parts) by reducing redundancies, such as same files, same short cuts etc, by consolidating them into dedicated packages. E.g. different installation sets for different languages are going to share all but the locale specific packages (parts). QA efforts may than be reduced by deriving a products test status from the packages (parts) test status, means if all packages (parts) of a product have been tested, than the product has been tested.


The redundancy of packages (parts) may be measured by comparing packages (parts) content on a file basis. Ideally any two packages are either the same, sharing all their content, or they differ completely, not sharing any single file. Please find more details on the measure page.

Time Frame

First big changes are planned to be ready with OOo 3.0.


Title State CWS Owner Release
Product Inventory open n/a AK/MH? immediate
Find a way to update MS Windows Installer Components in a product independent way open OOo 3.1
Localizations as Uno Packages open
Adapt Product Creation
New scp linker done native99 is OOo 3.0
Enable multipe root directories done native99 is OOo 3.0
Enable multipe registry files ("services.rdb") done native99 is OOo 3.0
Unique global IDs about all product definitions in scp-projects done native99 is OOo 3.0
Remove automatic root assignment (can be easily enabled with new scp linker) done native99 is OOo 3.0
Remove scp undefine feature (can be easily done with new scp linker) done native99 is OOo 3.0
Unique files assignment (can be easily checked with new scp linker) done native99 is OOo 3.0
Generate CABs by module done native100 is OOo 3.0
Shift package lists, so that information is available in scp projects done native100 is OOo 3.0
Introduction of language template modules in scp done native100 is OOo 3.0
Automatic creation of language specific modules in scp done native100 is OOo 3.0
Removing all language specific content from language independent packages done native110 is OOo 3.0
Removing all "multi"-products in scp and instset_native (every file is in language dependent package) done native110 is OOo 3.0
Removing Linux link RPMs (core03u, core04u and core05u) done native110 is OOo 3.0
Integrate URE as own product into OpenOffice.org in progress native121 is OOo 3.0
Prepare language selection in GUI installer with own dialog (no module selection) in progress native121 is OOo 3.0
Creation of Windows Installer GUID generation process to guarantee constant GUIDs for components in progress native121 is OOo 3.0
SCP monitor tools (many automatic scp controls are already available) in_progress is OOo 3.0
Create Perl process to generate core package content from cvs module structure done is OOo 3.0
Reorganization of core packages open is OOo 3.0
Creation of products with URE, base packages and branding style="background:lightgreen;" | done IS/SB OOo 3.0

Define new Package Structure
URE, Office, Brands in progress
Analyze Locale, first steps because of introduction of new language packs done native110 is OOo 2.4
Analyze Brand open OOo 3.0
Restructure scp corresponding to the new packages for library organization, locale and brands. open OOo 3.0
Separate URE
Adapt code base to OOo/etc. installations where the URE parts are installed separately from the rest (i.e., an OOo/etc. installation spans two directory trees). done sb71 sb OOo 2.4
Separate Brand
Enable OOo code base to deal with separately installed brands. done sb83 sb OOo 3.0
Split office products into URE/basis/brand done sb OOo 3.0
Separate Machine (AKA NOARCH)
Identify Machine specific files open 32/64bit deliverables
Separate 3rd Party Stuff (libxml, expat, freetype, ICU, ...)
Revise Product Definition
Model Products from a Program Managers Perspective in progress KR
Java Installer to support arbitrary repository and package managers open
Java Installer to rely on provisions / dependencies only open
Distribute packaging
Leverage Consolidated Package Structure
QA: Test every package only once. started KR
RE: Build every package only once. open is
Personal tools