About the Project

Tags: opensource, xmpp, server, microblogging


Metronome is a XMPP instant messaging server, based on the latest approved RFC standards.

The software began as a fork of Prosody IM, which I discovered in 2009 and got appealed by given it's rather low resource footprint, speed, modularity.. and is also the main reason I started learning Lua. While I'm (expecially with the 0.9 branch) still rather in "love" with Prosody itself, I slowly found myself at an impasse with how the project progressed and that I constantly needed to patch the code for it to meet my needs for LW.Org IM.

Perhaps when a rather large portion of the codebase diverged, and keeping backward compatibility to upstream became a problem I decided it was better to fork and keep a private control-versioned stub for LW.Org IM which I "codenamed" Metronome (While Prosody refers to the Metrics in Poetry, Metronomes are used to evaluate and keep Metrics in Music...).


Originally I didn't intend to release this at all, it was meant as I mentioned above to be a private fork which I would use for my needs, I didn't also want to drag the attention off the main project which is also what did hold me for all this time.

But it slowly became also evident how my views and the Prosody Team's differ, and how often we're unable to communicate.

Also considering the interest to my little project (thanks also to Jappix and Valérian), and that I believe in free software, but differently to most of the OS Community... in which it's not the software itself which should be freely shared and remain free at all costs, but the inherent knowledge.

It's finally time to break the seals, and have people take their own conclusions.

Although this is not just "Prosody with a different name" as someone sarcastically told me, it has different aims and different politics on how the codebase is mantained:

  1. This is a PAWG or Progress As We Go project, code is versioned on a per-commit basis, each 30 "useful" changes, usually, conclude a minor release cycle, each 300 conclude a major one.
  2. Code is mostly stable but might even be not.
  3. While Metronome could be more feature complete then Prosody in some regards, it might be not or even stripped of certain features in others, where I see it fit to keep things light enough or "mantain space for other weight".
  4. While Prosody is MIT (Expat) licensed, Metronome is ISC/MIT dual licensed.
  5. Possibly Metronome will only ever be distributed in Source Form.
  6. Prosody is bluish, Metronome is hazeish... never mind :P...


As you will be able to read from the README file or even the source code itself, differences span from everything above the inner stack (formally the stream parser, the stanza router, the server backend and util.stanza), mainly but not limited to:

  • The Pubsub API and wrapped modules, mod_pubsub and mod_pep
  • The MUC API and wrapper plugins
  • Pluggable MUC configuration
  • Pluggable Routing API
  • Core stack: Modulemanager, Usermanager, Hostmanager, Module API, etc...
  • More aggressive memory usage optimisations
  • Bidirectional S2S Streams
  • Direct TLS S2S Streams and XEP-0368 resolution
  • Dialback errors handling and "DB without DB" (XEP-0344)
  • The anonymous auth backend (mod_auth_anonymous & sasl.lua ineherent part)
  • Included plugins, utils
  • SPIM prevention system
  • Hits/blacklist/whitelist based host filtering (mod_gate_guard)
  • In-Band Registration verification and account locking mechanism
  • The HTTP API
  • XEP-0252 support for BOSH's JSON Padding
  • Extensive Microblogging over XMPP support
  • Daemon Control Utility
  • It does have only one server backend being libevent and has a hard dep. on lua-event

Notable Deployments & Mentions

Metronome was adopted as XMPP Server by the following sites / projects:

  • It was the server of Jappix.com and the main suggested daemon for the web app.
  • It was the suggested daemon for the Movim web app, and the server used for their main pod at movim.eu.
  • Lastly, it is the default daemon in the YunoHost Linux server distribution.
  • More to add... :)

Repository & Development

You can obtain Metronome's code through our repositories:

The support & development talk (xmpp multi-user chat) room is grimoire@muc.metronome.im.

If you would like to see any feature added or want to discuss the merging of a patch, report a bug or request a particular feature feel free to submit an issue on the Project's GitHub repository issue tracker.

Contributions and Donations

While Metronome is free, mantaining and developing it is not and takes a considerable amount of time and effort on my behalf. So if you would like to contribute feel free to contact me or you may just tip via PayPal.