From Fedora Project Wiki

This page tracks progress towards implementing a fully automated publishing process for the Fedora Documentation Project.


Formal Fedora documentation is authored in DocBook XML and transformed into multi-page HTML, single-page HTML, PDF, and EPUB by our publishing tool, Publican. Publican also maintains the Fedora documentation site ( and automatically generates and updates the navigation menus in each language.

At present, the entire documentation suite hosted at resides in a Git repository to which certain members of the Documentation Project (members of the docs-publishers group) commit changes. The webserver publishes whatever is in that repo.

This is a vast improvement over our previous process, but Publican includes features that make publishing even easier and more robust, since Publican is designed to package documentation in RPM packages to install on a webserver. Chapter 6 of the Publican Users' Guide provides an overview of the mechanism.

Important -- note that since the webserver runs Red Hat Enterprise Linux 6, the documentation packages need to be built for Red Hat Enterprise Linux 6. Publican is also designed to build documentation to install for desktop use, but this is a separate set of considerations and not the aim here.

Steps to automate publishing

Install Publican 2.8 on the webserver

The version of Publican shipped in Red Hat Enterprise Linux 6 is very old (2.1) and lacks many bug fixes and enhancements that have been added since then (current upstream and Fedora is 2.8).

Some of the Publican 2.8 deps in Red Hat Enterprise Linux 6 are too old or not available on all arches; we will need to build these for dist-6E-epel-infra

It's also possible that Publican 2.8 has dependencies that are not in Red Hat Enterprise Linux 6; at all. If so, we will need to add these to EPEL.

To install Publican 2.8 on the webserver, we need to

  • get a new dist-6E-epel-infra build root
  • identify and build any dependencies not in el6 for EPEL
  • identify and build any dependencies too old or not on all arches in el6 for dist-6E-epel-infra.
  • build Publican 2.8 and the Fedora brand package for dist-6E-epel-infra.

Dependencies not in el6

Dependencies to update in el6

  • perl-DateTime-Format-DateParse -- not shipped for PPC64
  • perl-HTML-Tree -- too old
    • perl-XML-TreeBuilder -- too old

Configure an Publican-generated website on the webserver

Publican can automatically generate its own website structure on the server. This consists of:

  • a configuration file at /etc/publican-website.cfg
  • an SQLite database at /var/lib/publican/publican-website.db
  • the /var/www/html/docs directory in which Publican publishes documentation would need to point to /var/www/html/docs on the server.

Staging site

Documentation also has a stage at This host should also have Publican 2 running on it so that we can stage documents there that are not yet ready for even the "drafts" section of the main docs site. The most important use case would be the nightly builds of translated documentation that the Documentation project produces for the Localization project in the last few weeks before a release. Besides this, however, writers sometimes want to share extremely embryonic documentation. Being able to do this through the automated packaging system keeps even these early stages of development inside the main docs workflow.

Set up Koji for documents

We would need a target/tag for dist-6E-docs and perms for docs project members to build in there