---
title: Chapter 4. Documentation Directory Structure
prev: books/fdp-primer/working-copy
next: books/fdp-primer/doc-build
---

[[structure]]
= Documentation Directory Structure
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:skip-front-matter:
:xrefstyle: basic
:relfileprefix: ../
:outfilesuffix:
:sectnumoffset: 4

toc::[]

Files and directories in the [.filename]#doc/# tree follow a structure meant to:

. Make it easy to automate converting the document to other formats.
. Promote consistency between the different documentation organizations, to make it easier to switch between working on different documents.
. Make it easy to decide where in the tree new documentation should be placed.

In addition, the documentation tree must accommodate documents in many different languages. It is important that the documentation tree structure does not enforce any particular defaults or cultural preferences.

[[structure-top]]
== The Top Level, doc/

There are three sections under [.filename]#doc/#, documentation and website share the same structure.

[cols="20%,80%", frame="none", options="header"]
|===
| Directory
| Usage

|[.filename]#documentation#
|Contains all the articles and books in AsciiDoc format. Contains subdirectories to further categorize the information by languages

|[.filename]#shared#
|Contains files that are not specific to the various translations of the documentation. Contains subdirectories to further categorize the information by languages and three files to store the authors, releases and mirrors information. This directory is shared between `documentation` and the `website`.

|[.filename]#website#
|Contains the link:https://www.FreeBSD.org[FreeBSD website] in AsciiDoc format. Contains subdirectories to further categorize the information by languages. 
|===

[[structure-locale]]
== The Directories

These directories contain the documentation and the website. The documentation is split into up to some directories this level. Following the link:https://gohugo.io/getting-started/directory-structure/[Hugo directory structure].

[cols="20%,80%", frame="none", options="header"]
|===
| Directory
| Usage


|[.filename]#archetypes#
|Contain templates to create new articles, books and webpages. For more information take a look link:https://gohugo.io/content-management/archetypes/[here].

|[.filename]#config#
|Contain the Hugo configuration files. One main file and one file per language. For more information take a look link:https://gohugo.io/getting-started/configuration/[here].

|[.filename]#content#
|Contain the books, articles and webpages. One directory exists for each available translation of the documentation, for example `en` and `zh_TW`. 

| [.filename]#data#
| Contain custom data for build the website in link:https://en.wikipedia.org/wiki/TOML[TOML] format. This directory is used to store the events, news, press, etc. For more information take a look link:https://gohugo.io/templates/data-templates/[here].

| [.filename]#static#
| Contain static assets. Images, security advisories, the pgpkeys, etc. For more information take a look link:https://gohugo.io/content-management/static-files/[here].

| [.filename]#themes#
| Contain the templates in the form of `.html` files that specify how the website looks. For more information take a look link:https://gohugo.io/templates/[here].

| [.filename]#tools#
| Contain tools used to enhance the documentation build. For example to generate the Table of Contents of the books, etc.

| [.filename]#beastie.png#
| This image don't need an introduction ;)

| [.filename]#LICENSE#
| License of the documentation, shared and website. BSD 2-Clause License.

| [.filename]#Makefile#
| The [.filename]#Makefile# defines the build process of the documentation and the website.
|===

[[structure-document]]
== Document-Specific Information

This section contains specific notes about particular documents managed by the FDP.

[[structure-document-books]]
== The Books: books/

The books are written in AsciiDoc.

The books are organized as an AsciiDoc `book`. The books are divided into ``part``s, each of which contains several ``chapter``s. ``chapter``s are further subdivided into sections (`=`) and subsections (`==`, `===`) and so on.

[[structure-document-books-physical]]
=== Physical Organization

There are a number of files and directories within the books directory, all with the same structure.

[[structure-document-books-physical-index]]
==== _index.adoc

The [.filename]#_index.adoc# defines some AsciiDoc variables that affect how the AsciiDoc source is converted to other formats and list the Table of Contents, Table of Examples, Table of Figures, Table of Tables and the abstract section.

[[structure-document-books-physical-book]]
==== book.adoc

The [.filename]#_index.adoc# defines some AsciiDoc variables that affect how the AsciiDoc source is converted to other formats and list the Table of Contents, Table of Examples, Table of Figures, Table of Tables, the abstract section and all the chapters. This file is used to generate the PDF with `asciidoctor-pdf` and to generate the book in one `html` page.

[[structure-document-books-physical-part]]
==== part*.adoc
The [.filename]#part*.adoc# files stores a brief introduction of one part of the book.

[[structure-document-books-physical-toc]]
==== toc*.adoc
The [.filename]#toc*.adoc# files stores the Table of Contents, Table of Figures, Table of Examples, Table of Tables and different Table of Contents for each part. All of these files are generated by the Python `tools`. *Please don't edit them.*

[[structure-document-books-physical-chapters-order]]
==== chapters-order.adoc
The [.filename]#chapters-order.adoc# file stores the order of the book chapters.

[IMPORTANT]
====
Please be careful with this file. Is used by the Python `tools` to generate the Table of Contents of the books. In case of editing this file, first contact the mailto:doceng@freebsd.org[Documentation Engineering] team.
====

[[structure-document-handbook-physical-chapters]]
==== directory/_index.adoc

Each chapter in the Handbook is stored in a file called [.filename]#_index.adoc# in a separate directory from the other chapters.

For example, this is an example of the header of one chapter:

[.programlisting]
....
---
title: Chapter 8. Configuring the FreeBSD Kernel
part: Part II. Common Tasks
prev: books/handbook/multimedia
next: books/handbook/printing
---

[[kernelconfig]]
= Configuring the FreeBSD Kernel
...
....

When the HTML5 version of the Handbook is produced, this will yield [.filename]#kernelconfig/index.html#.

A brief look will show that there are many directories with individual [.filename]#_index.adoc# files, including [.filename]#basics/_index.adoc#, [.filename]#introduction/_index.adoc#, and [.filename]#printing/_index.xml#.

[IMPORTANT]
====
Do not name chapters or directories after their ordering within the Handbook. This ordering can change as the content within the Handbook is reorganized. Reorganization should be possible without renaming files, unless entire chapters are being promoted or demoted within the hierarchy.
====

DIFFERENT TOCS

[[structure-document-articles]]
== The Articles: articles/

The articles are written in AsciiDoc.

The articles are organized as an AsciiDoc `article`. The articles are divided into sections (`=`) and subsections (`==`, `===`) and so on.

[[structure-document-articles-physical]]
=== Physical Organization

There are a one [.filename]#_index.adoc# file per article.

[[structure-document-articles-physical-index]]
==== _index.adoc

The [.filename]#_index.adoc# file contains all the AsciiDoc variables and the content.

For example, this is an example of one article, the structure is pretty similar to one book chapter:

[.programlisting]
....
---
title: Why you should use a BSD style license for your Open Source Project
authors:
  - author: Bruce Montague
    email: brucem@alumni.cse.ucsc.edu
releaseinfo: "$FreeBSD$" 
trademarks: ["freebsd", "intel", "general"]
---

\= Why you should use a BSD style license for your Open Source Project
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:

'''

toc::[]

[[intro]]
\== Introduction
....
