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.
First big changes are planned to be ready with OOo 3.0.
|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|
|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|
|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|
|Leverage Consolidated Package Structure|
|QA: Test every package only once.||started||KR|
|RE: Build every package only once.||open||is|