Differences between revisions 8 and 9
Revision 8 as of 2005-03-25 17:33:26
Size: 8314
Editor: zux221-222-122
Comment: Added proposal 2a and updated a few other things
Revision 9 as of 2005-06-24 15:54:21
Size: 6095
Editor: zux221-143-148
Comment: Scratching the itch again
Deletions are marked like this. Additions are marked like this.
Line 17: Line 17:
 * Faciliating collaboration with "competing" projects like FOray and Defoe, i.e. work together on undisputed parts of an XSL-FO processor.  * Faciliating collaboration with "competing" projects like FOray and Folio, i.e. work together on undisputed parts of an XSL-FO processor.
Line 25: Line 25:
For the joint operations we need a common repository. Since we are supposed to move to Subversion sooner or later we may just as well go for Subversion for the common repository, especially now that we've already got an SVN repo for the XML Graphics site.

Decisions: Batik and FOP will soon migrate to SVN which will make the reorganization easier and preserves the full history.
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.
Line 66: Line 64:
==== Naming the individual parts (just an idea) ==== ==== Naming the individual parts ====
Line 68: Line 66:
''(axgc = Apache XML Graphics Commons)'' ''Apache XML Graphics Commons''
Line 80: Line 78:
'''Proposal 1:''' ''(discarded)''

{{{

http://svn.apache.org/repos/asf/xmlgraphics
  +-- commons
        +-- branches
        +-- tags
        +-- trunk
             +-- axgc-codecs
             +-- axgc-fonts
             +-- axgc-image-adapters
             +-- axgc-pdf
             +-- axgc-ps
             +-- axgc-utils
  +-- batik
        +-- branches
        +-- tags
        +-- trunk
  +-- batik-transcoders
        +-- branches
        +-- tags
        +-- trunk
  +-- fop
        +-- branches
        +-- tags
        +-- trunk
  +-- site

}}}

'''Notes:'''

 * this layout has the effect that we have four major products (batik, batik-transcoders, fop and axgc), where axgc may have additional (sub-)products for each individual components (if necessary).
 * batik and batik-transcoders will always be released (tagged) at the same time but they have different committer sets.
 * axgc builds each component individually (axgc-pdf.jar, axgc-util.jar etc.), as well as a collective (axgc.jar). If the individual components are released or only the collective remains TBD.
 * All releases are always coordinated on the project level (i.e. on level Apache XML Graphics).

'''Proposal 2:''' ''(amended by 2a)''

{{{

http://svn.apache.org/repos/asf/xmlgraphics
  +-- commons
        +-- branches
        +-- tags
        +-- trunk
             +-- axgc-codecs
             +-- axgc-fonts
             +-- axgc-image-adapters
             +-- axgc-pdf
             +-- axgc-ps
             +-- axgc-utils
  +-- batik
        +-- branches
        +-- tags
        +-- trunk
  +-- fop
        +-- branches
        +-- tags
        +-- trunk
  +-- site

}}}

'''Notes:'''

 * In this scenario, the PDF and PS transcoders are transferred to the Batik subproject under their repository.
 * There are some from the FOP team who want to continue maintaining these parts so they need write access, thus they will need to be made Batik committers.
 * this layout has the effect that we have three major products (batik, fop and axgc), where axgc may have additional (sub-)products for each individual components (if necessary).
 * axgc builds each component individually (axgc-pdf.jar, axgc-util.jar etc.), as well as a collective (axgc.jar). If the individual components are released or only the collective remains TBD.
 * All releases are always coordinated on the project level (i.e. on level Apache XML Graphics).
 * This scenario is simpler than proposal 1 (fewer places to look for code), but the FOP team has less control over the code which makes up in important feature of FOP.

'''Proposal 2a:'''

2a amends proposal 2 with the following items:

 * Basic Graphics2D implementations and supporting code (pattern classes) go into Commons (Batik only gets the Transcoders)
 * Name change: JARs are called xmlgraphics-commons(-<part>).jar
'''Updated Proposal 2a:'''
Line 189: Line 108:
'''Notes:'''

 * In this scenario, the PDF and PS transcoders are transferred to the Batik subproject under their repository.
 * Basic Graphics2D implementations and supporting code (pattern classes) go into Commons (Batik only gets the Transcoders)
 * this layout has the effect that we have three major products (batik, fop and xmlgraphics-commons), where axgc may have additional (sub-)products for each individual components (if necessary).
 * axgc builds each component individually (xmlgraphics-commons-pdf.jar, xmlgraphics-commons-utils.jar etc.), as well as a collective (xmlgraphics-commons.jar). If the individual components are released or only the collective remains TBD.
 * All releases are always coordinated on the project level (i.e. on level Apache XML Graphics).
 * This scenario is simpler than proposal 1 (fewer places to look for code), but the FOP team has less control over the code which makes up in important feature of FOP.
Line 198: Line 126:
''closed''

 * Move Batik and FOP to Subversion.

''open''
Line 199: Line 133:
 * Move Batik and FOP to Subversion. (Will be done after the imminent Batik release. Vote passed.)

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.

Benefits

  • Clear dependencies
  • More structured codebase
  • Easier for newbies to contribute to certain parts (They are afraid now of the big blob of code)
  • New (and now easily visible) use cases for certain components (examples: JPS services to allow Java applications to print to PDF and PS through Printables, PDF lib can be used independetly of FOP, etc.)
  • Faciliating collaboration with "competing" projects like FOray and Folio, i.e. work together on undisputed parts of an XSL-FO processor.

The plan

(Subject of discussion. Input welcome.)

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

directly:

  • PDF transcoder (org.apache.fop.svg)
  • PostScript transcoder (org.apache.fop.render.ps)

Dependencies:

  • PDF library (org.apache.fop.pdf, by PDF transcoder)
  • PS generation code (org.apache.fop.ps, by PS transcoder)
  • font support (org.apache.fop.fonts, by PDF lib, PDF and PS transcoders)
  • IO helpers (org.apache.fop.util, by PDF and PS transcoders) [1]
  • Image adapters (org.apache.fop.image, by PDF and PS transcoders)
  • Basic FOP exceptions (org.apache.fop.apps)

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

External dependencies:

  • Avalon Framework
  • Jakarta Commons Logging
  • Jakarta Commons IO

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:

  • ParsedURL (org.apache.batik.util, could be used by FOP, too. Benefits: RFC2397 data: URLs, automatic gzip decompression (SVGZ))
  • image codecs (org.apache.batik.ext.awt.image.codec)
  • Base64 encoder and decoder (org.apache.batik.util)
  • ...

Organization and naming

Naming the individual parts

Apache XML Graphics Commons

  • xmlgraphics-commons-pdf (PDF library)
  • xmlgraphics-commons-ps (PostScript generation and manipulation/post-processing code)

  • xmlgraphics-commons-fonts (Font library)
  • xmlgraphics-commons-codecs (Image codecs)
  • xmlgraphics-commons-image-adapter (Image library adapters and analyzers)
  • xmlgraphics-commons-utils (IO classes, Exception classes, ParsedURL)
  • xmlgraphics-commons-java2d (Graphics2D implementation for PDF and PS, base for the Transcoders)

Possible layout in SVN

Updated Proposal 2a:

http://svn.apache.org/repos/asf/xmlgraphics
  +-- commons
        +-- branches
        +-- tags
        +-- trunk
             +-- codecs
             +-- fonts
             +-- image-adapters
             +-- java2d (Graphics2D implementations, Pattern extensions)
                  +-- pdf (PDF implementation)
                  +-- ps (PS implementation)
             +-- pdf
             +-- ps
             +-- utils
  +-- batik
        +-- branches
        +-- tags
        +-- trunk
  +-- fop
        +-- branches
        +-- tags
        +-- trunk
  +-- site

Notes:

  • In this scenario, the PDF and PS transcoders are transferred to the Batik subproject under their repository.
  • Basic Graphics2D implementations and supporting code (pattern classes) go into Commons (Batik only gets the Transcoders)
  • this layout has the effect that we have three major products (batik, fop and xmlgraphics-commons), where axgc may have additional (sub-)products for each individual components (if necessary).
  • axgc builds each component individually (xmlgraphics-commons-pdf.jar, xmlgraphics-commons-utils.jar etc.), as well as a collective (xmlgraphics-commons.jar). If the individual components are released or only the collective remains TBD.
  • All releases are always coordinated on the project level (i.e. on level Apache XML Graphics).
  • This scenario is simpler than proposal 1 (fewer places to look for code), but the FOP team has less control over the code which makes up in important feature of FOP.

Notes on additional use cases for the separated components

  • PDFDocumentGraphics2D and PSDocumentGraphics2D can be used to create streamed print services for JPS which would allow arbitrary Java applications to create PDF and PostScript by simply printing to JPS.

  • The PDF library could be used to create PDF documents from scratch (iText is probably better suited for that).
  • The PDF library could be extended to modify existing documents (same comment as above)
  • The PS library code could be extended to support PostScript post-processing.

work items

closed

  • Move Batik and FOP to Subversion.

open

  • Complete and discuss this plan and vote on it.
  • Clean up dependencies.
  • Create basic exception classes so the dependency on org.apache.fop.apps disappears.
  • Create common repository.
  • Move affected parts (see above) over to their new location.
  • Create build system for all components. (TBD: one for all or one for each?)
  • Documentation for the new parts.

XmlGraphicsCommonComponents (last edited 2012-03-09 10:06:42 by spc3-bagu2-0-0-cust872)