Wiki engine with Markdown syntax and plain files as a backend

I love wiki applications. Not the Wikipedia, a famous encyclopedia website which runs on MediaWiki engine, but these kind of software at all. They are super useful as a content management system (CMS) to run your website, especially when it has a lot of interlinked articles and you want to bring some structure into it. This Google Blogger/Blogpost website is just a damn parody of normal CMS and it is very sketchy to use.

I wanted to make a big move from Blogpost to my own hosted wiki and was recently researching what options do I have. I had my own list of requirements for the prospective solution:

  • the wiki engine should be open source, lightweight to be hosted on a potato (or free web hosting) and it should be using PHP or Perl or Python - this is what you can get easily on such hostings

  • it should not require any SQL databases as a storage backend but to use plain files as a storage instead. For many reasons. I don't want to maintain it, make sure it's not running out of space, make proper backups and restore in case of failure. When the wiki storage backend is just files, you can backup them easily

  • ideally it should have a built-in editor for pages. It might sound like a joke, but you'll see it later that not all of the engines do support that

  • it should support Markdown syntax. Just because I got tired of dealing with WYSIWYG HTML editor of Blogpost, which is messing with HTML tags all the time. Custom wiki syntax for articles must die. 

  • Last but not least. The project should be alive and not abandoned. Yes, if it meets all the above requirements, we can always take our MD files with us away from it, but if we're selecting a good candidate for us to use now, it should have at least his heart running well.

So let's do some comparison. 

MediaWiki 😕

It doesn't have an option to run on a top of flat files as a backend. 

TiddlyWiki and TiddlyMemo 😟

https://tiddlywiki.com/
https://tiddlymemo.org/


Not actually a wiki engine you can host somewhere on a webserver and have remote access from anywhere. It is a single HTML file with a lot of JS. With using JS controls you edit your own notes/pages with using web browser and then you click on "Save" button which generates you an updated HTML file you save (either as a version+1 of your wiki, or just override it). So it's more like a local wiki, which requires you to take it with yourself all the time. 

But if you ask me, it's very fragile approach to trust into aJS code to do it's job properly. If it screws and if you were not making proper backups yourself, your work will vanish in the thin air. 

MDwiki 😞

https://dynalon.github.io/mdwiki/#!index.md

I really love the idea: you just place a single html file somewhere on a webserver, where you store markdown documents (file.md) and then you access them like http://yourwebserver/index.html#!file.md
That html file has JS scripts in it to fetch and render the MD documents you reference.

Unfortunately the project is no longer being developed and it's very buggy.
I tried it multiple times and I cannot recommend it.

DokuWiki 👍

A good old mature wiki engine which supports everything I need.
Does support Markdown syntax with this plugin - https://www.dokuwiki.org/plugin:markdowku

Wiki.js

https://js.wiki/

Requires node.js. This is no for us.

Gollum

https://github.com/gollum/gollum

Requires Ruby. This is no for us.

Gitit

https://github.com/jgm/gitit

Requires Haskell. Again big no. 

PMWiki 😞

https://www.pmwiki.org/

A good candidate on a paper, worth trying. 

But what worries me is that the Markdown plugin - https://www.pmwiki.org/wiki/Cookbook/Markdown - was updated last time more than 16 years ago and ppl are saying it's no longer compatible with current versions of wiki.

There's another Markdown plugin - https://www.pmwiki.org/wiki/Cookbook/MarkdownMarkupExtension - which might do a better job, but it requires an eclosing of markdown syntax into additional tags like this:

(:markdown:)

 Test
 ====

(:markdownend:) 

So for now it's NO. 

FOSwiki 😐

https://foswiki.org/Home/WebHome

Written on Perl, which is more rare option to see among free web hosting providers.
Markdown is implemented by this plugin - https://foswiki.org/Extensions/MarkdownPlugin
It requires to add an additional littering macro on the page like:


Content can either be written within the topic area itself using:

%STARTMARKDOWN%
...
%STOPMARKDOWN%

or by using the %MARKDOWN makro:

%MARKDOWN{text="..."}%

or by reading a file attachment:

%MARKDOWN{topic="..." attachment="....md"}%


So this is no for me.

IKIWiki

https://ikiwiki.info/

Not actually a wiki engine but a perl compiler to produce a set of HTML pages out of your git or svn repo (and it acts as a svn client or git remote). Has a native support of Markdown. 

If you ask me, the idea is quite nice, but from the brief look on a project website it does't give a feel of something mature with a lot of community. Also it's not something you'll be able to use as a hosted web application. 

ODDMuse

https://oddmuse.org/

Requires perl. Very minimalistic - I tried to play with it online using their own website, and quite subjectively this is below the level of minimalism I can afford. I'll give you this example - if you edit a page and you want to see how it looks like, by pressing a "Preview" button, it doesn't show you the actual rendered result. So for me it's no. 

Peperminty Wiki 👍

https://peppermint.mooncarrot.space/

What's good about it is that it's being actively developed, uses PHP, based on plain text files and  supports Markdown out of the box. I have played with it quite a lot and even raised a couple of small issues about the bugs I found. 

The biggest issue right now is that if you modify MD files externally, you need to remove the internal index file so wiki will rebuild it. This implicitly means that you also loose whatever tags and dates your pages were having, as it is also stored in that index file - https://github.com/sbrl/Pepperminty-Wiki/issues/242

Aneuch ✋

https://www.aneuch.org/
https://github.com/ajgraves/aneuch

Requires perl. Somewhat similar idea to Pepperminty Wiki - a single perl file to rule-them-all. Looks very mature but the bad thing is it is no longer developed. Last commit was like 2 years ago.


Summing up

So, as far as you can see there're not so many candidates I can choose from.

Recently I have found a good website which does the comparison of many wiki engines - https://www.wikimatrix.org/

One might be interested to revisit this comparison at some later point.

Also worth reading a below article. It highlights some very worrying trends in modern software, which is having a bad tendency towards clouds and locking your data into proprietary cage - https://www.inkandswitch.com/local-first/

Quick and easy way to replace Google Music (RIP) / YouTube Music / Apple Music / Spottily

You might be the same as me, who doesn't find modern music entertaining and who only listens to music of bands/compositors I already know. 

You might have some other motives - like you don't want to pay for streaming services, if you already own all the music you listen and the only service you want is to be able to listen that from your smartphone without actually storing all these gigabytes of songs on your phone.

I have two awesome applications for you today.

Jellyfin










Jellyfin is an open source media server with optional web interface and lots of clients you can install to your iOS / Android phone. Fuck the Plex. Fuck the proprietary shit.

In a nutshell it works like this:

* you install Jellyfin on your home computer / server / SBC (like Orange Pi 4 LTS) 
* you create one or multiple accounts in there - it's simply username + password
* you configure it to tell where all your music / video is, just feed it with your local folders with music and movies you have
* it indexes all that, so you can easily find songs by titles / authors / album names later on
* you can optionally install a web interface, so you'll be able to use it on any other computer without installing a client
* you can also install a client to your mobile phone / some other computer. There're lots of platforms supported - https://jellyfin.org/downloads/clients 

If your Jellyfin server is not in the same network as your clients - like you want to hear your music / watch videos on your phone, when it's not in your home network, you can use one of the methods described here - https://orange-pi-4-lts.blogspot.com/2022/08/how-to-access-your-home-server-if-its.html

Nuclear








Amazing app, even though it is an Electron app. Unlike the Jellyfin, it doesn't give you any streaming options - it's just a standalone music player, but what it does, it allows you to listen to lots of music freely available on various sources like YouTube, Soundcloud, Bandcamp - whatever.

It has a nice UI and what is most important, a huge catalog of artists. And you can download everything you want, isn't that great? 



Start here

Disable Firefox from updating itself and flash those annoying "Restart to Keep Using Firefox" messages on you

I recently switched from Brave to Firefox. Just because Brave appeared to be some proprietary shit, even though they're masking themselv...