Source Project Organization

How to organize the various GitHub projects that contribute to the D4ST Docker system.

As a general rule, the latest code in projects is on the "develop" branch, with the "master" branch reserved for reflecting formal 1.x+ releases. This should be reflected in the default branch settings for each project in GitHub.

The D4ST Docker system uses the following GitHub projects:


Provides the Docker-specific materials, including the D4ST-specific container definitions, docker-compose files used to manage the running containers, and the d4st bash script.

Defines the following Docker containers:
  • caddy-d4st: Provides a simple Web server container for testing generated outputs.
  • dita-ot: Provides a D4ST-specific DITA OT container as a convenience. Out of the box it is just a standard latest version container.
  • dita-ot-base: Base OT container, used as the base for the D4ST dita-ot container.
  • gitlab-d4st: A D4ST-specific packaging of the GitLab Community Edition. Includes the server-side commit hooks used to integrate with the D4ST Link Manager.
  • link-manager-basex: The BaseX-based D4ST Link Manager. Includes the XQuery code from the dfst-linkmgmt-basex project.
  • oxywebauthor-d4st: A D4ST-specific packaging of the oXygenXML Web Author server. It includes a demo license configuration provided by Syncro Soft specifically for use with the D4ST project.

The documentation is managed on a special "docs" branch that has only the documentation in it. This allows the project documentation to be easily integrated with other projects' documentation, e.g., with the larger DITA for Small Teams project documentation.


Provides the client-side and server-side git hooks used to keep the D4ST Link Manager in sync with git repositories. The server-side files in this project are used by the GitLab container.


Provides the implementation of the D4ST Link Manager application for use with the BaseX XML database. These files are used by the d4st/linkmgr Docker container.


Provides ready-to-use non-trivial DITA content that is packaged into a separate container to make it easy to set up a realistic D4ST working environment. Provides the ditacommunity/demo-content Docker container.

To set up a development environment you should clone each of these projects to same parent directory. In addition, you should clone the d4st-docker project to a separate d4st-docker-docs directory and check out the "docs" branch. The d4st-docker project's develop and feature branches do not include the docs/ directory in order to avoid confusion about where the documentation source is within your development environment.