1   Introduction

Suppose you want a place and some support for writing notes, for musing and thinking, etc. And, suppose that, right now, you want those notes to be private, but that later you might want to make them more public. One suggestion it to write and view your notes in what I'll call a personal-use Wiki. Since the pages in the personal-use Wikis that I'll describe below are formatted in an LWM (light weight markup) language, it's relatively easy to use you favorite tools (Docutils, Asciidoctor, Markdown, etc) to transform any given page to other formats and for other purposes.

In this article I'll try to give some guidance on the selection of a Wiki engine for your personal-use Wiki.

2   Selecting a Wiki engine

I'll consider and compare these Wiki engines:

If you are not happy with either of the above, you can find a comparison page at Wikipedia here: https://en.wikipedia.org/wiki/Comparison_of_wiki_software. And, a list of wiki software here: https://en.wikipedia.org/wiki/List_of_wiki_software.

I chose these two (Gollum and Wiki.js) because they are easy to install, set-up, manage, and use, and because they make it easy to backup and copy my wiki (but in different ways). See below for more on this.

3   Some notes and comparisons

3.1   Gollum

  • Implemented in Ruby.
  • Uses a Git repository for its data store.
  • Provides a through the Web plain text editor. Every time you edit and save a page, Gollum does a Git commit. You can also use your favorite text editor, if you remember to use Git to commit your changes.
  • Administration, managing users and groups, managing pages, etc. is not necessary, because those features are not provided.
  • Back-up and copying -- It's a Git repo. You can use Git to clone it. You can also create a repo at Github, and then push your latest commit to that.
  • Choice of lightweight markup languages (LML) -- You can choose from among the following: Asciidoc, Markdown, plain text, Creole, reStructuredText/Docutils, and more. Note that additional setup may be required for some of these. I'm currently using Asciidoc; it is working well enough for my personal use Wiki. When you edit a page through the Web, you can select the markup language.
  • Creating, managing, and editing pages -- It's done through the Web in your Web browser. Since pages are plain text files in a Git repository containing LML (Asciidoc, Markdown, reStructuredText, etc), you can also edit them with your favorite text editor. If you do so, you must remember to commit your changes before you will be able to see them in your Web browser.

3.2   Wiki.js

  • Implemented in Node.js.
  • Uses an RDBMS (relational database management system) for data store. You can choose from MySQL, PostgreSQL, MS SQL Server, and Sqlite. For a personal-use Wiki, I chose Sqlite (although the docs suggest not using Sqlite for production use).
  • Editing wiki pages is (only) done through the Web interface. There is a plain text editor (through the Web) and several other editors, including a rich-text WYSIWYG visual editor. I used the plain text through the Web text editor. In that editor, I could not find an undo feature.
  • Administration, managing users and groups, managing pages, etc. is done though a Web interface in your Web browser.
  • Back-up and copying -- For my use, that's easy. An Sqlite database is stored in a single file. So, I can simply make a copy of that file. And, of course, you can compress it with zip, gzip, bzip2, xz, etc. If you are using one of the other database managers (e.g. PostgreSQL, MySQL), you can ask your database administrator about backup procedures.
  • Choice of lightweight markup languages (LML) -- Wiki.js has support for markup in the Markdown, plus support for editors for several other formats that is "coming soon". See https://docs.requarks.io/editors.