Getting involved

Read the Status file

The Status file contains the list of features people are working on at the moment. And an outline what steps are next.

Subscribe to the fop discussion list

You can subscribe to fop-dev@xml.apache.org by sending an email to fop-dev-subscribe@xml.apache.org

Sending bug reports and feature requests to the list is a welcome and important contribution to developing Fop.

Read also the archive of the discussion list fop-dev to get an idea of the issues being discussed.

Look at the developer's code using cvs

Between releases the newest code can be accessed via cvs. To do this you need to install a cvs client on your computer, if it is not already there. An explanation how to connect to the Fop source repository can be found at http://xml.apache.org/cvs.html. An introduction into cvs and the cvs manual can be found in the reference library.

All changes to the code repository are annonced in a special discussion group. You can subscribe to fop-cvs@xml.apache.org by sending an email to fop-cvs-subscribe@xml.apache.org. If you want to contribute to the development of Fop you should subscribe, because it is important that you follow changes being made.

Contributing code and documentation

If you want to contribute code (p.e. a bugfix) or documentation (p.e. an additional example), please do the following:

1) Make sure your code doesn't break the existing one and that Fop still compiles.

2) Create a file which shows the differences to the existing code.

3) Send this file to fop-dev@xml.apache.org.

One of the committers will test your code and commit it to the code repository.

BTW: The Apache project knows different roles for contributors, namely 'users', 'developers', 'committers' and the 'Project Management Committee' (An explanation of these roles can be found here).

Get familiar with the Fop related standards

At the moment Fop is mainly a tools to render XSL:FO files to pdf. Therefore if you want to contribute to Fop you should become familiar with these standards. You can find their internet addresses on our website.

Fop's architecture

A bird's eye view on the way Fop operates can be found in the document FOP Mechanics

If you want to extend the functionality of FOP by adding new formatting objects, you should do the following:

1. FO Object: Write a class which contains the description of your formatting object and put it into the package fop.fo.flow, fop.fo.pagination (if it is a property it goes to fop.fo.properties. The classes in this package are generated via an xslt stylesheet located in codegen/properties.xml)

2. Element Mapping: Add it to the list in fop.fo.StandardElementMapping (if it is a property you need to add it to fop.fo.PropertyListBuilder)

3. Area: Either your need can be fulfilled within one of the existing classes in fop.layout, then just add the code to handle the new fo/property or you must write a new one.

4. Renderer: Choose the renderer you are interested in. If you worked on an existing layout class you must add code to handle the new features to the already existing area specific method in the renderer class. Otherwise you have to add a new method.