Thoughts on a distributed Indieweb chat

The other night while talking to some of the Indieweb community I had one of those aha! moments you think only happen in movies :)

I was describing how I use XMPP to have a lot of different streams of data flow to a terminal client that I pretty much use as a dashboard - different bots and agents listen to Twitter feeds, poll the few atom feeds I still follow and other sources of notifications and then they are sent to different Multi-User-Chat (MUC) rooms on my XMPP server (Prosody) based on filters.

This type of setup is something i've been working on for decades and i've always had a few different iterations going as I learn about new tech or even new languages: the first version of it was in Perl and now most of it is in Python. I have tried to envision what this would require before but always got bogged down in the translations required to move messages from one service (silo) to another.

Then it struck me that we could now use some of the core Indieweb protocols to enable a distributed chat environment that doesn't (necessarily) require a central server or hub.

Now I'm wondering if we couldn't use simple text with some HTML+MF2 for the required metadata - this would allow a lot of the things that we in the Indieweb community have been working to be used to handle the publication (micropub, syndicate-to), notification (webmention, PuSH) and consumption (h-feed)!

Encouraged by Tantek I captured on the Indieweb Wiki most of the brainstorming from that night and I started to work getting my own site to syndicate notes to a prototype distribution hub that will allow me to see if it's realistic to have many people syndicate their own chat messages to a topic and then enable consumption of that topic in a way that feels like a chat room.

Pretty cool stuff!