Specification for binary filter migration/removal

Binfilter

Document - ID	Specification Owner	Last Change	Status
	Armin Weiss	14.01.04	Draft
Conforms to	
Applies to	All Applications
Task ID(s)	110098, 110680, 110743, 110897, 111880, 112766, 114820, 114821, 114822, 114823, 114824, 114860
Category	Feature

Abstract

This OOo project covers the Filter Stripping approach to enable us to remove the outdated binary filters contained in OOo. Main reason is that the old filters are blocking future development. Since in later OOo versions there needs to be a possibility offered to still work with the binary file formats from OOo 1.0 and OOo 1.1, this project will develop a solution for that. The solution will provide 'stripped' (reduced) versions of the core modules which keep the binary filter functionality and will be able to import/export from there to flat XML (single stream for piping). Thus we will derive one isolated, reduced filter module for the old binary file formats.

i-Team Members (The specification owner is part of the i-Team)

	Name	E-mail Address
User Experience	<Name + Initials>	
Development	Armin Weiss (AW)	Armin.weiss@sun.com
Quality Assurance	Oliver Krämer	Oliver.Craemer@sun.com
Documentation		

Approved for Implementation

	Approved by	Date
User Experience	<Name>	<Date>
Development	Armin Weiss (AW)	Armin.weiss@sun.com
Quality Assurance	Oliver Krämer	Oliver.Craemer@sun.com
Documentation		
String Review		

Document Change History

Rev. Level	Change	Initials	Date
1.0	First draft	AW	14.01.04

Contents

Glossary	1

1	Motivation	1

2	User Scenarios	1

3	Goals	1

4	Requirements and Dependencies	1

4.1	Requirements	1

4.2	Technical Dependencies	1

5	Competitive Analyses	1

6	Detailed Specification	1

6.1	G11n	2

6.2	Error Conditions	2

7	Future Tasks	2

8	Notes	2

9	References	2

Glossary

Term	Description
<Term 1>	

Motivation

Before implementing the OpenOffice XML formats the main file format was the binary format for all applications. In OOo 1.0 and OOo 1.1 we have both file formats included and did change the default format to XML. The binary formats exist as long as the applications exist. They were developed straightforward and run through various bug fixing/extension cycles. When starting implementing that filters it was straightforward to directly stream in and out the object model data. This was done mostly in implementing streaming operators at/for that classes defining the object model.
Today, after that fixing/extension cycles, that format has several problems:
Due to extensions/changes (which is possible in small amounts in the binary files but always needs to stay readable for older versions, including previously made errors) the format is no longer straightforward. In many parts huge transitions to older object model data are done at saving and transition to newer data structures at loading.
The biggest problem is the streaming approach itself. This prevents us from doing necessary bigger changes at the application cores. It is possible to add new data to the binary format in a compatible manner, but at least at writing the corresponding older document model data needs to be created and written compatible for older versions. This also leads to having much data twice in the files. It is not possible to change the structure between the data chunks (which are the core classes normally) at all.
To get rid of that not well structured approach, the XML formats were developed and introduced as a first step. Now, in a second step, we want to break that document model core blockage by removing the old binary formats from the cores. Thus, a OOo 1.1 should be the last version containing XML and the binary filters. This will allow us to do a lot of more than necessary changes in the application cores for future versions.
This opens the problem that for later versions we still want to offer the user the possibility to read/write our 'old' binary file formats. There are different possibilities to do that which will now be shown.

Thus, the targets of this project are:

Remove the binary filters from the document model cores

Find and supply a possibility for the users of OOo after 1.1 to work with the 'old' binary file formats. This is called Filter Migration

The first point is obvoiusly not a big problem, but the 2nd one is. This new project thus deals with solvong the second point.
After the evaluation of different possibilities of Filter Migration it seems to be the safest and simplest to take a copy of the modules containing the binary filters and 'strip' everything that is not needed. Thus, the remaining modules will still contain the old data model cores, parts of the API implementations and the XML implementations. It is simplest to use XML as exchange format since we have a way to read/write XML with the current application cores and XML is well defined and will stay compatible to later OOo versions.

User Scenarios

None, should be completely transparent for the user.

Goals

Transparent migration to the binfilter for the User

Removal of the old binary filters from the office application(s)

Requirements and Dependencies

Requirements

None

Technical Dependencies

None

Competitive Analyses

None

Detailed Specification

Various papers which were written/changed/envolved during the developent

- no strings required -

String list – No Strings used

Item	English	German	Comments

Tab Order

None

Key Board Shortcuts

None

G11n

None

Error Conditions

No changes, same error conditions as for the internal binary filters

Future Tasks

Further stripping to minimize the size requirements

Removal of the yet included binary filters from the office applicatrion(s)

Speed optimizations

Feature to install on demand (?)

Notes

None

References

References are internal and not available on OOo. These may be copied to OOo on demand.

<Required - Specification Title>

Page 3

<Required - Path to specification>

2004-01-14T17:44:01