Misago implements a plugin system, but while working on Misago v4 I've developed new one that's superior to current one. I would like to bring those improvements back to current Misago version:
- Plugins are kept within
plugins
directory. - Each plugin has top-level directory that contains its requirements files (either
pyproject.toml
orrequirements.txt
are supported), its Python package withmisago_plugin.py
manifest file and, in future,client
package that contains plugins for use in JavaScript application. - Plugins have
misago_plugin.py
manifest file which enables plugin authors to provide information about plugin that can be used by Misago on list of installed plugins in admin panel. - Plugins use
action
andfilter
extension hooks to extend or replace standard logic implemented by Misago. - Some of Misago's standard models will have a
plugin_data
JSON field to let plugins store small bits of in Misago's tables for quick access.
Plugin directory really simplifies container bootstrap and keeps all plugins in same place.
Because individual plugins directories are not Python packages but directories that contain Python packages, those plugin dirs can be git clone
'd from github as an installation method.
Each plugin's requirements are taken care of separately. Unwieldy and nightmare to maintain requirements-plugins
files are gone.
Roadmap item: #1524