binfilter project
(short form of binary filters)Summary:
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
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.