Skip to content
CAI
Software that uses CAICheck a score

processone/xmpp

59.0

Adequate · 2 October 2026

84.4k

lines of production code

Erlang

with C

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Erlang/Elixir library for handling the XMPP protocol, providing core infrastructure for building and parsing XMPP stanzas and addresses. It implements support for various XMPP extensions (XEPs), including CAPTCHA forms, HTTP file uploads, and pubsub metadata, while offering utilities for validating URIs, language tags, and JIDs. The library relies on C-based NIFs for performance-critical parsing tasks and is licensed under Apache 2.0.

Features

Add NIFs for validating XMPP URIs and language tags, and parsing JIDs

New C source files introduce Erlang NIFs that expose three capabilities: \xmpp\_uri:is\_valid/1\ validates strings against the RFC 7622 XMPP URI syntax, \xmpp\_lang:is\_valid/1\ validates language tags (including a workaround for Cisco Jabber's 'UTF-8' encoding suffix), and \jid:string\_to\_usr/1\ parses a JID string into its node, domain, and resource components.

_c\src · high confidence

Add support for XEP-0158 (CAPTCHA) and XEP-0363 (HTTP File Upload) data forms

The library now includes generated encoders and decoders for CAPTCHA data forms (XEP-0158) and HTTP File Upload data forms (XEP-0363). This enables applications to correctly parse and construct the specific data forms required for CAPTCHA challenges and file upload negotiations, ensuring compatibility with servers implementing these standards.

src · high confidence

Expanded XMPP protocol support and licensing update

This release adds support for numerous XMPP extensions (XEPs) including CAPTCHA forms (XEP-0158), HTTP File Upload (XEP-0363), PubSub metadata, push notification summaries (XEP-0357), and SASL SCRAM with multiple hash functions. It also introduces new namespaces for MUC stable IDs, MAM 2, Full Text Search, Inbox, JID Prep, Chat Markers, Message Moderation, and various MIX and PubSub features. The \xmpp.hrl\ header now includes macros for stanza type, from, and to, and switches to \include\_lib\ for fast\_xml. Additionally, the project has updated its licensing from GPL to Apache 2.0 and refreshed copyright years.

include · high confidence

Initial project scaffolding and build configuration

The repository is initialized with standard project metadata and build infrastructure. This includes a .gitignore file to exclude build artifacts and generated code, a CHANGELOG.md documenting the history up to version 1.13.5, and a README.md providing usage instructions for the Erlang/Elixir XMPP library. The build system is configured via a Makefile and rebar.config.script to support both rebar2 and rebar3, handling dependency resolution and compilation of C-based NIFs. Additionally, legal and community files (LICENSE.txt, CODE\_OF\_CONDUCT.md, CONTRIBUTING.md) and an Autoconf configure script are added to establish the project's licensing and contribution guidelines.

(repo-wide) · high confidence

Behavioural changes

Added ASN.1 definition for XMPP address type

The asn1 module now includes the XmppAddr.asn1 file, which defines the ASN.1 structure for the XMPP address type (id-on-xmppAddr) as an OID under the PKIX mechanisms, allowing the system to properly encode and decode XMPP addresses in protocol streams.

asn1 · high confidence

Test coverage

Added spec definitions for CAPTCHA, HTTP File Upload, PubSub metadata, and push summary forms

The specs directory now includes new configuration and XData form definitions for XEP-0158 (CAPTCHA), XEP-0363 (HTTP File Upload), XEP-0357 (Push Notifications summary), and PubSub metadata fields. These additions provide the structural definitions required to parse and validate these specific XMPP data forms.

specs · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 55 → 59 (+3.9)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 80 → 80 (+0.0)
  • Architecture 99 → 83 (-16.1)
  • Maturity 47 → 47 (+0.1)
  • Readiness 47 → 68 (+20.7)
  • Security 61 → 61 (+0.0)
  • Event Sourcing 100 → 100 (+0.0)

Resolved (10)

  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (17 lines × 3) (src/xep0513.erl)
  • Hotspot: src/xep0388.erl (src/xep0388.erl)
  • Members sharing a duplicated core (4 members, 50+ identical tokens) (src/xep0054.erl)
  • No automated tests
  • No tests found
  • Off-boarding risk: anonymized user #1
  • Off-boarding risk: anonymized user #2
  • Test reliability not included

New (7)

  • Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
  • Duplicated block (16 lines × 3) (src/xep0513.erl)
  • Members sharing a duplicated core (4 members, 50+ identical tokens) (src/xep0054.erl)
  • No dependency lockfile committed (rebar.config)
  • Off-boarding risk: anonymized user #2
  • Off-boarding risk: anonymized user #1
  • Projects may be oversized for their cohesion

Changes since last survey

  • 4 commits — 4 feature/other, 0 fixes

By area

  • (root) — 2 commits
  • .github/workflows — 1 commit
  • include/xmpp_codec.hrl — 1 commit

Notable commits

  • change: Add jid attribute to mentions
  • change: Bump rebar3 version in hex github acion
  • change: Release 1.13.5
  • change: Update changelog

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

processone/xmpp was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 9ed1d5cb9acb698570b7764e6dfcf7bca6deeafb — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.