1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2025-05-02 23:14:05 +00:00
Timur Ismagilov e2e25a05e7 Add some RFCs
2020-07-04 01:26:26 +05:00

1.5 KiB

Plugin system RFC

MycorrhizaWiki engine does not provide all the functionality a wiki may need and not need. Instead, it relies on the system of plugins.

Types of plugins

  • Parser. They add support for displaying different MIME-types.
  • Utilities. They add hyphae to the :spec mycelium. These hyphae provide administrative functionality.
  • Macros. Something like moinmoin ones, I guess.

Default plugins

Default MycorrhizaWiki distributive is shipped with several plugins installed.

  • parser/markdown. Support for text/markdown.
  • parser/gemini. Support for text/gemini.
  • what other markups to ship? I don't want to have markdown as the main one. Textile? ReST? Asciidoc is too complex, so let's not choose it.
  • utility/rename. Renaming of non-user hyphae.
  • what else?
  • macro/toc. Table of contents.
  • what else?

Plugin implementation

All plugins are written in Go and are compiled together with MycorrhizaWiki. If a wiki's admin decides to add a plugin, they shall recompile the engine with the plugin.

Reminds of something, right?

But compiling the engine just to add a plugin is stupid!! Not really. Also, it makes the architecture more simple and secure.

What if an admin doesn't know how to program? Plugin installation is basically limited to putting some files into a folder, editing the config and running a shell command. No programming required to install a plugin.