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
pluginsdirectory. - Each plugin has top-level directory that contains its requirements files (either
pyproject.tomlorrequirements.txtare supported), its Python package withmisago_plugin.pymanifest file and, in future,clientpackage that contains plugins for use in JavaScript application. - Plugins have
misago_plugin.pymanifest 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
actionandfilterextension hooks to extend or replace standard logic implemented by Misago. - Some of Misago's standard models will have a
plugin_dataJSON 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