Enjoying Open Source Software

Advantages of FODT format in LibreOffice

LibreOffice, the free office suite, has several components. Writer is the component that is used for text documents, just like Microsoft Word. Writer can handle lots of formats. The OpenDocument Text format (short: odt) is the native format for LibreOffice.

Open document format

It is very important to use open formats for files and documents. Closed source vendors, like Microsoft, use their file formats as a weapon to force users into buying new versions. LibreOffice, like most open source applications. use open formats to encourage collaboration with other applications. Because their open format and the absence of the commercial need to force users into new versions, open format can be used for many years and will still be readable in future decades.

FODT format

A special variant of the odt format is the fodt format.

The fodt format is a single XML document, also known as Flat XML or Uncompressed XML Files. The normally used odt file is a collection of several sub-documents that are zipped together. The resulting file, the odt, of a LibreOffice text document will be smaller then the fodt-version of the same document. However, the fodt has some advantages.

First advantage: use of Version Control System (VCS).

The fodt is a flat file XML document, so the contents of this file is just plain text. This makes it ideal for use with a Version Control System. With the help of a Version Control System it is possible to track every change in the document between commits to the version control system. So a history of the document gets build. Also, this makes it possible to revert to an older version.

Version control, not just for developers

Version control systems are developed to make it possible to have a team work on the same set of documents. However, it is also very useful to have a personal version control system.

Version control systems were originally created for collaborative development of computer applications. Developers were writing source code and the version control system made it possible that more then one developer was working on the same source code files. Changes coming from several different developers can be merged into one new version. There is a complete track history of the development of the source code. Revision control makes it possible to track every change to the person who committed the change. What works for source code, works for other text files too. Version control systems are very useful, and not only for developers.

Private or personal version control system

Even when not working with several people on the same file a version control system has it's value. This is the area where a personal version control system comes to use. Important functions of a private or personal version control system are to bring the ability to revert to older versions and to have a central document management system in place.

For bringing fodt files under a personal version control system, one can use several options, like the following.

  • RCS
  • CVS
  • Git


Revision_Control_System or RCS is a rather old version control system. However, it is still in use, for example Emacs offers default support for RCS as a version control system. Of course one can use any other VCS with Emacs,

It is easy to adopt Vim to automatically save backup versions in RCS.

RCS uses the same storage as the files it has under version control. Normally, in the directory with the documents that are under revision control, there will be a RCS sub-directory. This makes it easy for applications like Emacs and Vim to commit changes to it. The disadvantage is that RCS will not help you in a backup strategy.


Concurrent Versions System or CVS follows the client-server model. The server provides a central repository and the clients commit their changes to this repository.

CVS is heavenly used in open source systems like FreeBSD and OpenBSD, so it is very stable and robust.

When using CVS in your home network, you will have to set up an CVS server. If you are already running a FreeBSD, OpenBSD or Linux server in your network, this will not be much work and also not very complicated.

The storage of the central repository is separated from the user work area. When using CVS on the local workstation the user has to check the change in and out the documents from the central repository. So using a personal CVS immediately helps to protect the document from crashes of your local workstation storage.

When putting all important files under control of the central repository, taking care of the backup of this repository alone is a great policy to protect your work.


Git is a much newer version control system then both RCS and CVS. Git is a distributed version control system. This means several instances of a repository can live on many places.

Working with Git as a personal version control system in your home network is very easy if there is already a FreeBSD, OpenBSD or Linux server running in your network. You only have to install Git on the server and on your workstation. Add a user (often: "git") on your server. For every project let this user create a separate git repository in its home directory. Now on your workstation you can clone this repository (this is how Git calls a checkout) and at regular intervals commit your changes back to this repository. Git uses ssh to collect the files, so you use

git clone <user>@yourserver:repository.git

to clone a repository from the server to your local workstation.

This way you have a central repository with all your important files, which can be the basis for a backup policy (see above at CVS).

Second advantage: Generate fodt files

Because fodt are just flat text files. This makes it possible to use rather simple but non the less very powerful tools like awk to generate fodt files from other plain text files.

Also with scripts like shell scripts or Perl or Python scripts fodt files can be generated.

When generating fodt files, special care have to be taken to convert some special characters to their html entities, like the characters < and >.


⇽ Jails with nullfs mount of base system on FreeBSD 11 Encrypted Git remotes with git-remote-gcrypt ⇾