The easiest way to develop using slidge is by using docker-compose. Clone the repo, run docker-compose up and you should have:
an XMPP server (prosody) exposed on port 5222 with a registered user <test@localhost> (password: password)
all plugins as XMPP components, including a “dummy” plugin which does not connect to any external service (useful for trying out new core stuff)
hot reloading of gateways on code change
signald running in a container (required for signal)
the in-browser Movim client running on http://localhost:8888
a mattermost test instance on http://localhost:8065
NB: it’s possible to select which containers you want to run, you don’t have to launch everything.
is also a good choice to test stuff during development, since it implement a lot
of XEPs, especially when it comes to components.
You can launch it with the
-p option to use a clean profile and not mess up
your normal user settings and such.
To install outside of a container, use poetry.
Starting from poetry >= 1.4.0, these extra configuration steps are required, cf https://github.com/python-poetry/poetry/pull/7358
poetry config installer.modern-installation false poetry config experimental.new-installer true
The plan is to make the slidge codebase as slim and maintainable as possible.
Most of the
util/xep_xxxx modules are supposed to be here temporarily and should be
submitted upstream to the slixmpp library.
If possible, plugins should use maintained external libraries for legacy network specificities.
Code style should follow black conventions.
Tests should be written with the pytest framework.
For complex tests, especially plugins tests, the
can come in handy.
As much as possible, code should be mypy-compliant.