Metronome is the XMPPd which runs on LW.Org IM and from recently also on Jappix's official service.
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 (to the point of almost, figurately, "getting at each other's throat"... more then once).
Also considering the recent 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 today, it has different aims and different politics on how the codebase is mantained:
- This is a PAWG or Progress As We Go project, code is versioned on a per-commit basis, each 30 "useful" changes (as long as the release frenzy doesn't affect me around change 27-28 then that may become 40+...) concludes a minor release cycle, each 300 concludes a major one.
- Code is mostly stable but might even be not.
- 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".
- While Prosody is MIT (Expat) licensed, Metronome is ISC/MIT dual licensed.
- Possibly Metronome will only ever be distributed in Source Form.
- 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;
- Core stack: Modulemanager, Usermanager, Hostmanager, Module API, etc... ;
- How s2s streams are treated;
- The anonymous auth backend (mod_auth_anonymous & sasl.lua ineherent part);
- Included plugins, utils;
- The HTTP API;
- BOSH's JSON Padding and XEP-252 support.
- 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 currently is adopted as XMPP Server by the following sites / projects:
- It is the server of Jappix.com and the main suggested daemon for the web app.
- It is 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 email@example.com, you can access it via our Jappix instance also.
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.