Lumodoc, the LumoSQL Documentation Project

This is the project that maintains the documentation for LumoSQL. LumoSQL enhances the SQLite database library without forking it.

Lumodoc is a Science Communication project, discussing the computer science, mathematics and human factors to do with LumoSQL. The software engineering project LumoSQL has created a new kind of database.

LumoSQL and any other project wanting to link to the LumoSQL docs need to point at the "doc" directory within the Lumodoc project using this URL: That is intended to be the finished product, the output of "make all" within Lumodoc.

The document you are reading is part of the Lumodoc project, not the finished product Lumodoc produces, and the master version of this is kept at the top level of this repository . The documentation for the Lumodoc project is in the "docdoc" subdirectory because it is documentation about documentation.

The list of jobs is in the LumoDoc ToDo long-running forum thread.

Version Control and Website

Lumodoc sources and the official website are managed using the FossilSCM. If you are reading this on Github or anywhere other than then you are looking at a read-only mirror. Mirrors are good and important, but everything else in this project assumes you are working with the master repository for Lumodoc, hosted at


Drop in to the Lumodoc forum and post a message about what you think needs done. You can tell us about corrections to the documentation, or contribute anything else you wish, noting that the forum understands the Markdown format. You can subscribe to email alerts for when there has been a commit to the repository, or to get copies of all forum posts as email.

To contribute or to explore how the docs work you need to download Fossil or build it on your local computer. Then run:

fossil clone

which will download the Fossil repository into lumodoc.fossil, create a directory called "lumodoc", and then open the new local repository into that directory. You won't be able to push your commits back up to the central lumodoc repository without a username and password, but otherwise you have everything you need to play around with the documentation tools.

The "fossil ui" command invokes Fossil's [embedded documentation][] to render markdown documents on your local computer. Here is the command to render the document you are reading right now:

fossil ui --page doc/trunk/

If you want to render a file in a local directory before it is committed to the repository (which is a much better way of developing - always test before committing!) then you can use the special version "ckout" instead of "trunk" like this:

fossil ui --page doc/ckout/

If you want all the internal links in the README to be converted too (that is, links which point to other files with the respository rather than URLs for external sites) then you can use "--ckout-alias" like this:

fossil ui --ckout-alias trunk --page doc/trunk/

This allows relative links to appear in embedded documentation of the form:


which will then be read off your local directory.

Technical Implementation

The URL is an Apache webserver alias pointing to the Fossil repository directory doc/. Fossil serves up the current version of the requested file, processing all markup according to Fossil's Markdown rules, and generating HTML. The HTML is then served by Apache just as if it was contained in my-webpage.html .

With the Markdown text, diagrams are specified using Pikchr, a plain text format that generates SVG.

In a near-future version of the LumoDoc project it is almost inevitable that we will change this workflow to include the amazing Pandoc document convertor. The first step to using Pandoc would be to have it process the Markdown files and generate new Markdown files that include a table of contents (all ToCs are currently generated by a tool and imported manually.) Pandoc can convert from Markdown to PDF and HTML, so there are many other eventual possibilities.

Really Why a Separate Project?

In more detail... while there are a few very code-specific technical documents included in the main LumoSQL project, everything else is here because:

Co-incidentally, SQLite documentation is also managed in a separate repository from the code. This is one of many examples where the LumoSQL project is somewhat similar to SQLite.