Open Standards, Open Web
2019-01-18
I spent much of my midwinter break in a state of pondering about the
web, and about F/LOSS, and society in general.
I've made no secreet here of my growing disdain for and discomfort
with the various services which are a feature of our modern world
and society. We've surrendered our privacy, our health and even our
democratic norms to these companies, for precious little gain.
In that vein, I'd started investigating the state of the XMPP
protocol over the holidays. Unlike the other messaging protocols,
this is an open standard, extensible, and developed in the open. I'd
used it in the dim & distant, back when it was called Jabber, but
had (stupidly) moved on from using it about the time it was EEE'd by
Google[^1].
The problem with using an open extensible protocol in 2019 is that
the vast majority of the world is using the walled gardens provided
by the surveillance capitalists. The reasons why aren't hard
to imagine, these organisations spend their billions in Venture
Parasite Funding to create a cultural appreciation of their product.
They have legions of workers who's job function is to ensure that
you stay in their garden, either via dopamine release or F.O.M.O.
Finally, and perhaps most insidiously, for a huge proportion of
the world's population, they have neither the inclination or
the finances to organise servers, their "internet" is delivered
on feature phones on which connections to Facebook[^2] are
"free", thanks to arrangements made by the tech-giants with
telecoms-providers, which actively penalise any other data use. What
this all means is that there are few people using xmpp for their day
to day communication.
Despite this, I thought I'd spin myself up an xmpp server. I chose
the Prosody server, primarily because I found, and followed,
the excellent installation/configuration roadmap provided by the
Homebrew Server Club. Following installation, this wonderful server
occupied an entire 25MB of ram on my server.
I mention the ram requirement, because I'd previously tried running
the Synapse Homeserver for the Matrix protocol -- another, newer,
open messaging protocol. That project has noble aims, but their
reference implementation is a hot mess, gobbling up every available
byte of ram, loading the cpu every time it attempts to send a
message. Prosody, by comparison, just fecking works.
I set up a little landing page for the site at xmdg.eu, and there it
may have rested.
By a stroke of fortuitous coincidence, the day I got my XMPP server
up and running, one of the aforementioned walled gardens decided to
throw me under a bus. Slack, of the penis-swastika logo, notified me
that my system of bridging my favourite irc-channel to their servers
was in violation of their user terms and conditions. If I wanted to
continue doing this, I would have to register a new and official
slack-app, using their systems, and would have to move to a paid
account, charged on a per-seat basis.
I took my bridge off-line, and made some efforts to work around the
restrictions. and in doing so, I ended up breaking what I did have
quite, quite badly.[^3] I could, maybe, have just ripped it all out
and restarted, but that process would just have returned me to
where I was, looking at a fat pay demand from a company who's
corporate identity is literally a Cock-up. So I decided to find an
alternative, one that used my new found friend Prosody.
I was recommended a few options by Fediversians - bridging servers
used to be ten-a-penny, but the marginalisation of xmpp has eroded
the field, leaving a program called Biboumi as the best option.
Except … it wasn't an option for me, because my cheap-ass servers
aren't compatible.
While hacking around on the Prosody site, i noticed that there's a
module for the server called mod_slack_webhooks - Bingo! Although
this is designed for communication from XMPP to/from slack[^4], I
had two gateway systems which had been using those same webhooks
happily for months, all I had to do was get them talking to my XMPP
server instead of slack's one.
Naturally, this process was nowhere near as simple as all that, and
involved tinkering about in three different languages: lua, tcl and
nodejs. The people over on the Prosody chatroom were super-helpful,
and my questions even resulted in a patch to the mod_slack_webhooks
module, for which I am eternally grateful.
The end result is that, thanks to slack's intervention, I can now
offer a comprehensive irc<->xmpp bridge for my friends in the #linux
channel. It works perfectly, thus far, and while I'm happy that it
does, I'll continue to work on the code for the two bots in an
effort to make them better. There's a lot of cross-checking in both
to ensure that they're delivering the formats expected by slack's
gatekeepers, an element of stupidity that I no longer have to deal
with. There's also still a lot of use of the word slack, as I was
afraid of breaking things I didn't understand.
While the two bots are nowhere near finished, I've put them on my
Gitea Instance, almost in the hope that someone might be able to
help me with them.
I'm sure there is probably a more elegant solution, but I'm happy
that I was able to accomplish this task using tools I kind of
already had, and with the support of people far more competent and
capable than I.
I was struck by a comment I read yesterday on the Fediverse:-
> but seriously, somewhere between 2000 and 2019 the IT industry
> seamlessly transitioned from "we provide precision engineering
> tools, your data is yours, you should not need to trust us or
> anyone, mathematics is your guarantee, crypto 4 ever." to "give us
> your data. all of it. give. no secrets. hold nothing back. in
> return we will... train AIs on it.. and provide unspecified
> 'services'... for someone, who may be you... that can change at
> any time... and we are funded by, uh. Look, a unicorn!"
We can oppose this trend only by adopting open standards. Being able
to do so should not be something available solely to the privileged.
I know that I'm hugely privileged in being able to set up and use my
own server - if anyone has read to the end of this and would like an
account on my server, please pop me a line .
If you're already on xmpp, you can contact me on xmpp, I am to be
found at
[email protected] and I'll be happy to share my experiences in
more detail.
[^1]: Google's gtalk was a clear attempt to disrupt and destroy
XMPP, in much the same way Reader did for RSS.
[^2]: Or whatsapp, or whatever.
[^3]: I had back-ups, but in the process of attempting to fix
things, my system rebooted, and it turned out that there were a few
post-installation and upgrade scripts which had been waiting for me.
Waiting nearly 700 days for me.
[^4]: Using the same systems that Slack notified me they're going to
be sunsetting.
+++ENDS+++