A guide to the system we use to keep notes in a zettelkasten using MediaWiki.
We have authored a series of blog posts that feature different ideas discussed on this page, available here: https://charlesreid1.github.io/category/zettelkasten.html
Handy glossary of terms: Zettelkasten/Glossary
List of uesful zettelkasten MediaWiki patterns: Zettelkasten/Patterns
MediaWiki is a more complicated solution to get up and running with than a desktop program like Evernote. So why use MediaWiki to create a tool intended for daily use?
We have several reasons.
First and foremost, MediaWiki is the software that runs Wikipedia. This means MediaWiki will continue to receive strong long-term support.
Second, MediaWiki comes with built-in capabilites that are extremely useful, and that not all wiki or zettelkasten software has. The most important one is transclusion - the ability to write a chunk of text, in one place, and dynamically include that text in other pages. This enables many capabilities, but one of the most useful is the ability to build navigation boxes and add them to the bottom of related pages.
The ease with which new pages, subpages, page structure, and content can be created in MediaWiki also makes the experience of building out or reorganizing page structure much more pleasant than other wiki tools or note-taking applications. Subpages allow arbitrary nesting of child pages within parent pages (e.g., [[Python]] or [[Python/Networking]] or [[Python/Networking/Scapy]]), making it easy to organize information hierarchically.
MediaWiki's built-in Categories functionality serves the same purpose that tags serve in the Zettelkasten system (see Zettelkasten/Glossary), making it a natural fit for a Zetteklasten.
Speaking of built-in mechanisms: MediaWiki is highly customizable with CSS and skins; it has built-in image and file embedding capabilities, flexible table and image layout options, and a robust ecosysstem of plugins that support things like Lua scripting, videos, and LaTeX.
Do you need more reasons? Well, okay, MediaWiki has an extensive backend API, plus built-in authentication and authorization, plus the ability to create bot users to perform automated actions securely, with separate credentials. A library called pywikibot supports writing automated bots that interact with the wiki, making it possible to automate the creation or maintenance of pages.
Since Wikipedia is built on MediaWiki, you can copy and paste MediaWiki templates directly from Wikipedia for use on the private MediaWiki. But additionally, when you learn MediaWiki syntax, you learn Wikipedia syntax, so experience editing a private MediaWiki wiki will translate directly to Wikipedia.