kittywiki
kittywiki is a tiny little wiki program that's designed for building small websites! this website runs on it (and is in fact what i initially built it for) :3
i think being able to easily edit my website, create new pages, etc and have it go live instantly is really useful!! i've been interested in this idea for a while - in my almost-decade of having personal websites of some form i've built a couple custom CMSes inspired by wikis, but this one is the first that's actually kinda a normal wiki software with wiki features.
kittywiki is written in ocaml using the dream web framework, liquid templates, and irmin (for storing page contents in git). it's open source software,[1] licensed under the Be Gay Do Crimes License, and the source code is available on git.gay.
kittywiki vs gitit
when setting up this site, i initially used gitit, which is a wiki software written in haskell that uses a git repo to keep track of page history/revisions/etc. i really liked how simple and customizable it was (i wrote a custom set of templates to make it look like this site currently does), but unfortunately i ran into performance issues. it was constantly eating up 10-20% of a cpu core and i couldn't figure out how to fix it (in large part because i do not know haskell)! so, i ended up just writing my own thing[2] that is very similar but is much faster (and more flexible, while i'm at it)
things kittywiki has that gitit doesn't:
- good performance
- more flexible templates, making it easier to build your own site on top of it
- ability to move pages
- diffs using patience diff algorithm
- OIDC authentication
- slightly better file uploader
- no jquery! and overall less javascript
- a good page text editor (uses codemirror)
things gitit has that kittywiki doesn't:
- categories, templates, recent changes, talk pages, user pages
- search
- more supported page formats (it uses pandoc to produce html instead of just using a markdown parser)
- latex equation rendering with mathjax
- username/password auth
future development
idk when i will find time for it, but i do want to keep working on kittywiki at some point!! here's a list of things i want to add
-
better auth:
- right now it just allows anyone who can authenticate with the configured OIDC provider to edit anything. actual access controls would be useful
- normal username/password auth would make it much easier to set up
- support for a file that maps OIDC usernames to display names would be useful for OIDC providers that don't let you easily change it (cough cough tailscale)
-
caching: currently it does not cache anything !!! and despite that, it is fast enough for this tiny site and probably many others, but it would be a good idea to improve on that
-
more wiki features: user pages, talk pages, user contributions pages, recent changes, categories, templates
-
make a default set of liquid templates that looks like a normal wiki. maybe just copy gitit's UI