# 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](http://moinmo.in/HelpOnMacros), 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](http://suckless.org/), 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.