This section of the FOP web site contains notes on approaches
to an alternative design for FOP. The individual documents
here are fragmentary, being notes of particular issues,
without an overall framework as yet.
The main aims of this redesign effort are:
- full conformance with the Recommendation
- increased performance
- reduced memory footprint
- no limitation on the size of files
In order to achieve these aims, the primary areas
of design interest are:
Representing properties, for most purposes, as integers.
Distributing FOP processing over a number of threads with
single-point downstream communication and flow control by
means of traditional producer/consumer queues. The threads
so far under consideration are:
- XML parser
- FO tree builder
- layout engine
- Area tree builder
Representing trees with explicit Tree objects, rather than
as implicit relationships among other objects.
Caching integrated into the tree node access methods.
The ALT DESIGN effort is not taking place on the
main line of development, represented by the HEAD
tag on the CVS trunk. The source is available via the
FOP_0-20-0_Alt-Design tag. This code has only a crude,
non-Ant build environment, and is expected only to
compile at this stage. Only the parser stage and the first
stage of FO tree building is present. However, the first
example of producer/consumer binding is working, the Tree
class with inner Tree.Node and inner
Tree.Node.iterators classes are available and
working. Property handling is quite advanced, and is likely
to be almost complete some time in July, 2002.
West is working on the ALT DESIGN sub-project.