Editing the Koha Manual

From Koha Wiki

Jump to: navigation, search
Home > Documentation
Koha > Community > Participation

The Koha Manual is managed by the Documentation team and everyone is invited to help out writing and updating it.


=> New writers, start here! <=

Hi! Welcome to the Documentation Team! Here's some information to get you started.

  1. First, you need a GitLab account. Go to the website and register.
  2. Then, you need to go to the Koha manual project and click "Fork". This will make a copy of the project in your account.
  3. Head to Bugzilla's "Documentation To-do" list to find things to write about
  4. Next, you can read how to edit the Koha Manual here #Editing the manual - using the GitLab web interface

This is also a great starting point if you prefer video: Virtual Hackfest 2020 Documentation.

Another video, a bit more complex, done during Kohacon20 hackfest : Editing the manual LIVE!

How do Bugzilla and Gitlab work together?

This is an explanation of the current workflow. Any ideas on how to improve it are welcome.


  • Developers work on new features, enhancements and bugs on Bugzilla (we call them all "bugs" even if they are new features or enhancements)
  • This is the source of every bit of code in Koha
  • Bug reports are a great place to understand what features do. Developers will write test plans or descriptions of what the feature does in bug reports.
  • There is a Documentation "To-do" list on bugzilla. This list includes:
    • Documentation component: includes typos, missing sections or section that could be improved
    • Manual keyword: older bugs that have been marked as needing documentation
    • Needs documenting status: bugs that have been marked as needing documentation (as of june 2022, the status 'Needs documenting' has been added to the bugzilla workflow after 'Pushed to xx')
  • Once a bug has been documented and a merge request sent to Gitlab, enter your name in "Documentation contact" and the link to the merge request in "Documentation submission"


  • GitLab is where the manual lives, it is where all the versions of the manual are housed and where all the changes are made
  • That's where you need to go to do any contributions to the manual

In short

  • Check Bugzilla to find something to write about
  • Go to GitLab to write and add your bit to the manual

To do list

Please file any issues with the manual as a bug report on Bugzilla using the Documentation component.

There is also a saved search for Bugzilla, that looks for bugs with the keyword Manual, the component Documentation or the status Needs documenting

Documentation related bug reports

Please feel free to add new to-do list items for missing chapters/information, things you didn't spot on the manual or suggestions of any kind.

If you want to discuss things about documentation or send us your documentation to include in the manual, you can sign up on the koha-docs mailing list or join us for the next Documentation IRC meeting.

Editing the manual - using the GitLab web interface

The easiest way to contribute to the manual is making your changes using the following workflow with GitLab. You don't have to download or install anything for this to work, it can all be done in the browser!


  1. GitLab account: First of all, you have to create an account on GitLab. You can also sign in with an existing Google, Twitter, GitHub or BitBucket account.
    • The first time you connect to Gitlab, go to https://gitlab.com/koha-community/koha-manual and click "Fork". This will make a copy of the manual in your account. You will always work in your own copy and then make "merge requests". The Documentation manager will then check your work to make sure there are no errors and then merge your work into the real manual. This helps avoid errors.
    • In your project, go to Settings > Repository > Mirroring repositories and set up your mirror as described below
  2. Navigate manual files: Once you are logged in, you can navigate to the Koha manual on GitLab and get yourself a bit familiar with its file structure.
    • You will find all the text in source, for example administration.rst will have all the information about the administration module except for the system preferences that live in systempreferences.rst.
    • You can also use the option to 'Search this project' at the top of the page. For example, you could search for AcqCreateItem to find the spot where this system preference is described in the manual.
  3. Start editing: Once you have located the file you want to change, you can use the Edit button on top of viewed file to start the editing process.
    • Make your changes in the editor. The formatting is done using reStructuredText.
    • Add a short description in the commit message input field below the editor. The first line is going to be the subject line, all other lines below will also be shown when looking at your changes in detail.
  4. Save your changes: Saving your changes will create a merge request to be seen by the documentation team. You can see your open merge requests on your GitLab account.
    • Next time: Commit changes to submit the changes to your fork of the repository.
    • After committing your changes, GitLab will automatically ask you to create a merge request. Here you can edit the description again, but don't change any of the other settings. Click Submit merge request and you are done.

Check out this video for a demonstration on how to edit using GitLab!

Mirroring repositories

  • Keep your fork of the Koha manual up-to-date using mirroring (otherwise you will have to fork the repository each time you make a change): Settings > Repository > Mirroring repositories, where:
    • Git repository URL = https://gitlab.com/koha-community/koha-manual.git
    • Mirror direction = pull
    • Authentication method = Password
    • Password (create your password)
    • Overwrite diverged branches = yes (check)
    • Trigger pipelines for mirror updates = no (leave unchecked)
    • Only mirror protected branches = yes (check)

Gitlab repo mirror.png

    • Click "Mirror repository"

Adding screenshots

This requires a little bit more work as you need to edit multiple files, but is not too hard to do:

  1. Upload images: First, you need to upload your screenshots.
    • All images are stored in the directory source/images
    • In your repository, navigate to the directory where you want to add your images. For example, koha-manual/source/images/circ
    • At the end of the path shown on top is a plus ("+") icon. Click on it and select Upload file.
      Gitlab upload file.png
    • You can now upload the image(s), either using drag & drop or the click to upload link to browse your directories and select the file(s) you want to upload.
      Gitlab upload file2.png
    • Finish with changing the commit message to some description, for example: Adding screenshots for feature xxx.
  2. Create aliases for your screenshots: By using aliases we can change a file without having to change the documentation.
    • Go to the images.rst file, found under koha-manual/source.
    • Click on Edit.
    • Go to the bottom of the file and add a line referencing your image. The syntax is the following:
      .. |image1355| image:: images/tools/importpatrons/patronattributes.png
      • .. = this means it's a comment line, it will not appear if you look at the rendered page
      • |image1234| = this is the alias of the image to be used in the manual. Use the next number in the file (for example, if the last number in the file is 1234, use |image1235|).
      • image:: = this is the syntax that calls the file to appear as an image (not a link or a string of text)
      • images/xxx/xxx.png = this is the path to the image and its name
    • Enter your commit message and submit the changes.
  3. Add screenshots to the manual: Now that everything is in place, we can add the images to the manual.
    • Adding the screenshot now is quite simple. Just write the alias you created on a new line. For example: |image2201|.
      Gitlab image alias.png
    • Enter your commit message and submit your changes.

Editing the manual - using a local repository and editor

It's recommendable to try the GitLab workflow first as it's easier and doesn't require any familiarity with git itself like this workflow. Note: the minimal required version of Sphinx is 1.4 at the moment. If your distro doesn't have that, consider installing python-sphinx with pip.


  1. Fork the project in GitLab: Start by going to GitLab and forking the project. This will create your own personal repository with a copy of the manual.
    Click on the "Fork" button to create a personal copy of the manual to work on
  2. Set up your SSH credentials
  3. Set up koha-manual repository: Clone the koha-manual git repository from GitLab
    • Go to your own GitLab repository, click on "clone" and copy your SSH URI
    Copy your personal SSH URI from your repository
    • Next, open up a terminal window and clone your GitLab repository
    git clone <your SSH URI> koha-manual
    • Go into your newly created repository
    cd koha-manual
    • Next, add a second remote called "community" to pull from and fetch
    git remote add community git@gitlab.com:koha-community/koha-manual.git
    git fetch community
  4. Create a new branch called "community_master" to track that second remote
    git checkout -b community_master community/master


  1. Make sure everything is up-to-date: pull from community/master
    • Go to your local koha-manual folder and checkout on the community_master branch
    git checkout community_master
    • Pull the latest version of the manual from the community repository
    git pull
    • Merge your local "master" with your local "community_community" branch
    git checkout master
    git merge community_master
  2. Create a new branch: before you start changing files, always create a new branch for your changes.
    So for example, if you're going to work on the RenewalLog system preference, create a branch using the following command
    git checkout -b RenewalLog
  3. Start editing: Edit the files with your preferred editor.
    • You can use git grep for searching in the files. Example: git grep RenewalLog
    • Navigate to the file you need to change, all files are in the "source" directory
    cd source
    • Open the file in your text editor (for the example, we'll use vi) and edit the file
    vi systempreferences.rst
    • Basic vi commands
      • i - insert (edit)
      • Esc - get out of editing/inserting mode
      •  :w - write (save)
      •  :q - quit (close the file)
      • / - string search (case sensitive) (for example: /RenewalLog)
  4. Commit your changes: commit your changes to make sure nothing is lost
    • Start by adding the files that were changed to the staging area
    git add --all
    git add *.rst
    git add systempreferences.rst
    • Commit your changes
    commit -m "Adds description for RenewalLog syspref"
  5. Push your branch to your GitLab koha-manual fork
    git push (this will create a branch of the same name in your GitLab repository)
  6. Create merge request
    • Go to your GitLab account
    • Go to Repository > Branches
    Go to Repository > Branches
    • Find the branch you want to push and click on "Merge request"
    Click on "Merge request"
    • Click on "Submit merge request" at the bottom of the page

Build the manual locally

Having a local copy of the manual means you can build the manual (create the HTML files from the .rst files) and see your changes immediately.

  1. In a terminal window, go to your local koha-manual folder
  2. Run the build command
    make html
    This command will create the html files in the build/html/ folder
    Note: This will create the html files from the branch you are currently on
    It may show errors. This is a list of some errors you may encounter
    • WARNING: duplicate label known issue caused by some section headings that are the same in different chapters
    • WARNING: undefined label the reference is not formatted correctly, or references a section that doesn't exist
    • ERROR: Undefined substitution referenced the reference to the image is not in the images.rst file
    • WARNING: image file not readable the image path in the images.rst file is doesn't correspond to anything in the images/ folder
    The errors will tell you in which file and on which line the error is so you can go and correct it. For example
    means the error is in the webservicespreferences.rst file, on line 195.
  3. Go to the build/html/ folder and open the html file for the chapter you were working on

Rebuild (make html) every time you do a change to see the change reflected in the html file.

Check the spelling

Having a local copy of the manual means you can run the spell check after your changes to make sure you didn't inadvertently add any typos.

  1. In a terminal window, go to your local koha-manual folder
  2. Run the spell check command
    make spelling
    This will show all what the script considers spelling errors in the terminal, but the errors are also saved in the build/spelling/ folder
  3. Go to the build/spelling/ folder and open the file for the chapter you were working on
    The error will say the file in which the spelling is incorrect, the exact line, the current word between parentheses, suggested spellings between square brackets, and the sentence. For example:
    `acquisitions.rst:1471: (Cancelling) ["Canceling", "Cancel ling", "Cancel-ling", "Excelling", "Changeling", "Calling", "Angelica"] Cancelling orders`
    means the script found an error in acquisitions.rst, on line 1471. The incorrect word is "Cancelling", and it offers possible spelling options between the brackets. It is followed by the sentence in which this word was found "Cancelling orders".
  4. If the error is valid
    1. In your text editor, open the file and correct the spelling
    2. Save
    3. Run the spell check again
      The error shouldn't come up again
    4. Commit the change
  5. If the error is not valid, it is a real word correctly spelled
    1. In your text editor, open the source/koha_spelling_wordlist.txt file
    2. Add the word to the list
    3. Save
    4. Run the spell check again
      The error shouldn't come up again
    5. Commit the change
  6. If the error is not valid, it is a part of a word or a abbreviation
    • Unfortunately, there is not much we can do for spell checking abbreviations, urls, etc. We don't add them to the word list because they are not real words. They will stay in the errors.

General hints and tips

Formatting with reStructuredText

Sphinx uses reStructuredText for formatting the text:

Also, a bit more specific to our manual: ReStructuredText - Tips and Tricks

Capitalization and spelling


See the Documentation_style_guide

Reporting problems with the manual

If you wish to report typos, error or any other problem with the manual, please file a bug on Bugzilla with the Documentation component.

Please feel free to add new bugs for missing chapters/information, things you didn't spot on the manual or suggestions of any kind.

  1. Go to Bugzilla
  2. Log in or create an account
  3. From the main page, click 'New'
  4. Click 'Koha'
  5. Fill out the report form
    • Component: choose Documentation
    • Version: leave it at 'master' unless you want to specify that it is a problem with a specific version. Note that we currently do not have the resources to correct older manuals
    • Summary: Enter a brief description of the problem
    • Description: Enter a detailed description of the problem, include as many details as possible, with URLs to orient us
  6. If needed, you can add screenshots as attachments by clicking 'Add an attachment'
  7. Click 'Submit Bug'

Translating the manual

See Translating the Koha Manual

Older manuals

The older manuals up to Koha 17.05 were generated using DocBook.

To edit the older manuals an XML/DocBook editor like oXygen is recommended. Every chapter and section must have an ID tag associated with it to enable permanent linking and searching.

Patches to the manual can still be emailed to the koha-docs mailing list, but as Koha moves on, it makes sense to favour updating the new Sphinx based manuals instead.

See also

Personal tools