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+++