blob: 1ef4a7905c1820fa8a2e595422f1b9dd58a05ed4 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type"
content="text/html; charset=ISO-8859-1">
<title>binfilter</title>
</head>
<body>
<h1>binfilter project<br>
</h1>
(short form of binary filters)<br>
<h2>Summary:</h2>
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.<br>
<p>
Today, after that fixing/extension cycles, that format has several
problems:<br>
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.<br>
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.<br>
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.<br>
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.</p>
<p>Thus, the targets of this project are:</p>
<ul>
<li>Remove the binary filters from the document model cores</li>
</ul>
<ul>
<li>
<p> 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</p>
</li>
</ul>
The first point is obvoiusly not a big problem, but the 2nd one is.
This new project thus deals with solvong the second point.<br>
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.<br>
<br>
<h2>Project Description:</h2>
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.<br>
</body>
</html>