XML Graphics common components

The problem

The FOP codebase contains two Batik transcoders for PDF and PostScript which can be used independently of FOP and are distributed with Batik. The Batik team should be empowered to help maintain these transcoders, for example, after changes in Batik itself. Since Batik and FOP are both implementing an XML standard that creates graphical output there is some overlap between the two efforts. Last but not least, a Batik release didn't involve a FOP release until now which is something that must change.

The idea

The idea now is to create a common area where the parts of common interest between the two subprojects are jointly developed and maintained. XML Graphics Commons will deliver a set of well-defined libraries of which some might provide some supporting tools (such as the TTFReader and the PFMReader, but which will eventually vanish when they are not needed anymore). Other potentially reusable software like utilities for build support, ant tasks, plugins for IDEs, test frameworks and data files might also qualify for finding a home in XML Graphics Commons.


The plan

Common repository

For the joint operations we need a common repository. Since we now have migrated both subprojects to Subversion we are in a good starting position for this.

Parts affected in FOP



_\[1\] Some of these classes could be candidates to go into Jakarta Commons IO._

External dependencies:

\[2\] There's enough opposition here that warrants a reevaluation. We'll try to do without this.

\[3\] During the move it should be tried to remove this dependency, i.e. no logging at all in the basic shared components.

Parts affected in Batik

The transcoders depend on several packages inside Batik. Obviously, we can't create a clean hierarchy without dependencies on Batik, at least for the PDF and PS transcoders. But we should do that for the parts where this is possible (PDF lib, fonts, images etc.).

Possible components coming from Batik:

Organization and naming

Naming the individual parts

Apache XML Graphics Commons

Layout in SVN

  +-- commons
        +-- branches
        +-- tags
        +-- trunk
             +-- src
                  +-- java (all shared components under this directory)
                       +-- org.apache.xmlgraphics
                            +-- codecs
                            +-- fonts
                            +-- image-adapters
                            +-- java2d (Graphics2D implementations, gradient/(pattern) extensions)
                                 +-- pdf (PDF implementation)
                                 +-- ps (PS implementation)
                                 +-- svg (SVG implementation)
                            +-- pdf
                            +-- ps
                            +-- rtf
                            +-- utils
                  +-- java-1.4 (all JDK 1.4 dependant code under this directory)
  +-- batik
        +-- branches
        +-- tags
        +-- trunk
  +-- fop
        +-- branches
        +-- tags
        +-- trunk
  +-- site


Notes on additional use cases for the separated components

work items