The Free and Open Productivity Suite
Released: Apache OpenOffice 4.1.15

binfilter project

(short form of binary filters)


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:

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.

Project Description:

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 possibiulity offered to still work with 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 XML. Thus we will derive isolated, reduced filter modules for the old binary file formats.

Apache Software Foundation

Copyright & License | Privacy | Contact Us | Donate | Thanks

Apache, OpenOffice, and the seagull logo are registered trademarks of The Apache Software Foundation. The Apache feather logo is a trademark of The Apache Software Foundation. Other names appearing on the site may be trademarks of their respective owners.