Contributing¶
Development setup¶
With docker compose¶
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)
an XMPP component, the “super duper” gateway, a fake component that can be used to try stuff directly in an XMPP client, with code hot-reload.
You can login with the JID test@localhost and password as the password.
With uv¶
Alternatively, use uv to set up a virtual environment
with uv sync.
Launch our preconfigured prosody instance for development with
podman run --network host codeberg.org/slidge/prosody-slidge-dev, then launch
slidge with python -m superduper --jid slidge.localhost --secret secret --home-dir ./persistent --debug.
Guidelines¶
Tests should be written with the pytest framework.
For complex tests involving mocking data through the XMPP stream, the
slidge.util.test.SlidgeTest class can come in handy.
The code should pass
mypy and
ruff
with the settings defined in pyproject.toml.
About XMPP clients¶
Gajim
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 --user-profile slidge to use a
clean profile and not mess up your usual gajim config, db, cache, etc.
Unlike gajim, some clients will not accept self signed certificates, a possible workaround using debian and docker is
docker cp slidge_prosody_1:/etc/prosody/certs/localhost.crt \
/tmp/localhost.crt
sudo /tmp/localhost.crt /usr/local/share/ca-certificates
sudo update-ca-certificates