Last month I was mainly experimenting with how to implement the Wiki. I've tried a number of solutions now and it's a matter of going with one.
Approaches to the Wiki
Here's a few approaches I've tried out (TL;DR: I'm going with Approach 1):
- 1. Build a Wiki engine from scratch. -- This is a lot of work in the long run but I can build it gradually and tailor it for FrontierNav's needs.
- 2. Use an existing Wiki Engine (like MediaWiki) and create some plugins for it as needed. -- This is also a lot of work in terms of learning how the Wiki Engine works in order to customise and maintain it.
- 3. Branch an existing Wiki Engine's source code to get started and build it from there. -- This is a combination of the previous approaches. Instead of building something from scratch, I'll have something to work off of.
I'm not going to go with Approach 2 as it's not fun. MediaWiki is extremely old now, its codebase is huge and the source code is not nice to work with. Other engines exist but they're very basic, making them candidates for Approach 3.
Approach 3 was a good learning experience. I looked into how a few Wiki Engines are designed and now have a decent idea of the sorts of problems they've encountered. The downside to all of these Wiki Engines is that they provide both the front and back-end. So I either have to throw away a large part of their front-end codebase and rewrite it to work with FrontierNav, or have a completely separate site for the Wiki. There's also the problem with feature rot. Most of the mature Wiki Engines have a lot of features that I don't need so they'll just be in there, unused but adding to complexity. The ones with less features are so simple that it's probably better if I just with Approach 1 with the added flexibility of choosing my own tech stack.
Finally, Approach 1. There's a lot of decisions to be made. How to model the data, how to create the APIs and front-end, how to provision and maintain the infrastructure, and more. It's a bit overwhelming when looking at it as a whole, but it's doable in small steps. It's a matter of trying stuff out and learning from it.
This month, I'll be rolling out the new infrastructure (databases, file storage, etc.) for the Wiki and if that goes smoothly, I'll get some basic admin interfaces up to start adding/editing/deleting wiki entries.