# 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. This document is up-to-date. ## Types of plugins - **Parser.** They add support for displaying different MIME-types. - **Language.** They provide i18n support. ## Default plugins Default MycorrhizaWiki distributive is shipped with several plugins installed. - **parser/markdown.** Support for `text/markdown`. This parser is powered by [russross/blackfriday](https://github.com/russross/blackfriday); this parser is ok, I guess. - **parser/creole.** Support for `text/creole`. *Note:* there is no standard Creole MIME type. This parser is powered by [m4tty/cajun](https://github.com/m4tty/cajun); this library is somewhat outdated. Perhaps we'll reimplement it. - **parser/gemini.** Support for `text/gemini`. - **lang/en.** Support for English language. ## 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. See `plugin` directory at the root of the repo to get inspired by the present parsers. ## Possible future plugins - **Utilites.** Plugins that can do different things and provide their own hypha interface in `:spec` mycelium. - **Macros.** Dynamic content parts that are generated when page is accessed: TOC, meta information accessors, etc.