Change IRC links into Libera.Chat
15 files changed
tree: cf5e4dbd4c6270785d865f0fe04cf600571efc76
  1. archive/
  2. assets/
  3. content/
  4. part2/
  5. templates/
  6. tools/
  7. .asf.yaml
  8. .gitignore

Apache OpenOffice Website -

This is the content and build scripts for

Contributing to the website content

You can fork from, test your changes as described below and raise a pull request.

Use the dev@openoffice.a.o mailing list to contact the OpenOffice PMC which manages this website.

Automated staging

Commits to the main branch are automatically checked out and built using by the OpenOffice-org-Staging-Site-Build Jenkins job. The results are pushed to the content folder of the asf-staging branch which is in turn published automatically to by the ASF's .asf.yaml mechanism.

Manual publishing

Once the staged content is correct then the asf-staging branch's content folder is copied to the asf-site branch using by the OpenOffice-org-Publish-Site Jenkins job. This job will need to be started manually.

Any build failures are reported to commits@openoffice.a.o mailing list.

Quick updates to a single file

Updating a single file should proceed as follows. I'll use the most commonly updated file (the weekly download numbers) as an example:

Prerequisites for building the website locally

The website is built using JBake and Groovy templates. The builds for the website do require internet access.

  • Install JBake from
    • Currently it looks like version 2.6.3 or greater is required.
  • Create an environment variable JBAKE_HOME pointing to your JBake installation, e.g.
    • export JBAKE_HOME=/usr/local/Cellar/jbake/2.6.4
  • Ensure that you have a JVM locally, e.g. OpenJDK

Clone the Git Repository

To get a copy of the repository you can either point to Gitbox or GitHub.

cd ~/Development/openoffice
rm -rf ooo-site.git
git clone ooo-site.git
git fetch
git pull
git checkout main

Building & testing the site locally

To test the site locally, use


This builds the site, serves it locally at http://localhost:8820/ and rebuilds the content fairly quickly if any changes are made. Only the files that are not in part2 are watched.

Note that serving the site through JBake does not properly include the SSI which means that branding, navigation, and footers will be missing. If you wish to set up an HTTPD server on your local you can do that too.

Modify that script andd call with any of the arguments you would pass to jbake.

Markdown and HTML

Most of the pages in the site are written using HTML. Many more recent pages are written using Markdown While it is a form of Markdown, JBake uses Flexmark/Java which implements Pegdown. It does have some syntax differences that are worth reviewing

Groovy Templates

The site templates are written in groovy scripts. Even though the files end with .gsp they are not GSP files and do not have access to tag libraries. You can run custom code in them. See Templates Read Me for details.

Twice Baked

Due to exceeding the maximum number of files needing rendering the site is baked in two phases. Some folders are in the part2 directory.

Pages are in the Content Tree.

.html and .md files in the content tree are processed by templates as directed within

Branding and Navigation

  • The page header comes from files. The brand template is html with markdown metadata insertions.
  • Navigators are * files. The navigator template is markdown with metadata selecting the css class.
  • All,,, and files must be registered in templates/ssi_paths.gsp in order to be included in that subtree of the site.

Assets are in the Assets Tree.

Every file in the assets tree is copied as is during baking.
  • Files larger than 100MB are not allowed and over 50MB are not recommended. Only one file in the CMS site was too large to migrate.
  • Please do not add any .exe binaries.


The site footer is an html asset and is found here: footer.html.