A type-safe Rust XMPP library.
Find a file
moparisthebest 3cab603a4c
Add AsyncServerConnector to AsyncClient to be able to support any stream
Unfortunately API breaking unless we do some export mangling
2024-01-01 02:08:13 -05:00
.forgejo/workflows Support Github Actions (for a migration to forgejo) 2023-12-03 14:20:51 +00:00
jid Derive PartialOrd/Ord for Jid types 2023-12-31 16:59:21 +00:00
minidom minidom: fix boolean test 2023-12-16 00:20:03 +01:00
parsers Support legacy integer <error> code. Don't expose it. 2023-12-22 12:26:28 +01:00
sasl Update edition to 2021 2023-12-15 19:40:09 +00:00
tokio-xmpp Add AsyncServerConnector to AsyncClient to be able to support any stream 2024-01-01 02:08:13 -05:00
xmpp Add AsyncServerConnector to AsyncClient to be able to support any stream 2024-01-01 02:08:13 -05:00
.gitea Support Github Actions (for a migration to forgejo) 2023-12-03 14:20:51 +00:00
.gitignore Hello world! 2019-03-21 18:43:27 +01:00
.gitlab-ci.yml CI: Add a test with no-default-features and ensure it passes 2023-08-17 23:45:57 +02:00
Cargo.toml Update edition to 2021 2023-12-15 19:40:09 +00:00
LICENSE Readd global LICENSE file 2020-02-25 22:13:34 +01:00
README.md README: Add note on contributing / cargo fmt 2023-12-19 12:18:05 +01:00

xmpp-rs

What's this?

A very much WIP set of rust XMPP library with the goals of being type-safe and well-tested.

  • xmpp-rs provides a high-level API for the protocol. You shouldn't need to know about the protocol to use it.
  • tokio-xmpp is a lower-level library that handles the XMPP stream(s).
  • xmpp-parsers parses XML into Rust and back.
  • minidom is a DOM library quite specific for XMPP
  • jid is a Jid parsing library.

Contact

There is an XMPP MUC for the discussion of this library, feel free to join! :)

chat@xmpp.rs

License

Mozilla Public License 2 (MPL2). See the LICENSE file.

Building

Dependencies should be provided by crates if you use the default features. If you use tokio-xmpp's tls-native feature you will need an ssl library (openssl, libressl, etc.).

cargo build

The various features available should be explained in the crates themselves.

Contributing

Thank you for your interest in the project!

We recommend you come and talk to us in the channel and/or open an issue before you start working on a feature, to see if it aligns with our goals.

The library is still in development, and while this is the case we adopt a fail-fast strategy, which is also a reason for the choice of the language.

The earlier we catch bugs and fix them, the less chances they have to confuse users of our library, or make end-users give up on software developed using this library. This also helps improving other software in the ecosystem.

Code changes should try to include documentation as possible. They should also include tests where appropriate, and pass the existing test suite.

CI should pass to submit your changes. This is done by ensuring cargo fmt and cargo test pass (in the workspace). Please do not run cargo fmt as a separate commit but do it as part of each of your commits.

More thorough tests can be done locally with act or forgejo-runner exec, which is also what is run in the CI. We require docker to be setup for this to work.

Merge requests can contain as many commits as necessary, but commits should be kept rather small and meaningful (not include too many different things).

Do not forget to update changelogs and other crate metadata where necessary.

Signing commits (git commit -S) and adding DCO bits (git commit -s) are welcome but not mandatory.

We'll do our best to review and discuss changes with you but we're also humans with other activities, please be patient with us.