Plugin system rewrite #1524
Labels
area: backend
This issue involves Python, Django or dependency (eg. database)
critical
feature: extensions
Extension points for 3rd party plugins and customizations
future architecture
Milestone
This is a rewrite of plugin system inspired largely by my experience from writing a new plugin system for abandoned v4 effort.
Replace plugin list by plugin discovery in
plugins
directoryInstead of
plugins.txt
file that users will have to maintain, plugins could be discovered and loaded from dedicatedplugins
directory. This will simplify installation by users and logic for installing their dependencies on container's build time.Implement proper
action
andfilter
hook types for plugins to useMisago should implement custom
action
andfilter
hooks:Reason for using custom action hooks instead of Django signals is to provide proper safety net in form of types.
Write developer docs
Misago should have a developer documentation for new plugin system written as quickly as possible. The guide will be human-written, but the hooks reference will be generated from code, due to amount of work needed to maintain and otherwise keep it up to date.
Roadmap
.[dev]
requirements byplugins/plugin-dir/pyproject.toml
fileplugins/plugin-dir/requirements.txt
fileplugins/plugin-dir/requirements-dev.txt
fileINSTALLED_APPS
urlpatterns
plugin/misago_plugin.py
filespip-install.txt
fileINSTALLED_APPS
plugin_data
json field to some models, set GIN index on itPluginDataModel
abstract modelThe text was updated successfully, but these errors were encountered: