I like XMPP, and I also like #peerToPeer things. So why not both at once?

Yggdrasil gives you a stable IP address, and it turns out that the domain part of an XMPP address can be just a [bracketed] IPv6 address, meaning you can have a stable XMPP address, without buying DNS entries, regardless of whether or how often you change how you're connected to the internet.

As an experiment, I tried setting up #Prosody to run on such an address, on my desktop and on my phone. And it worked!

All I needed to change in the default configuration file was the VirtualHost line and the s2s_secure_auth line (setting it to false, so that they would accept each others' self-signed certificates, which is ok, because yggdrasil takes care of the end-to-end authentication and encryption). I also had to persuade each operating system that its own self-signed certificate was legit, so that #Dino on the same machine would be willing to accept it, to sign me in.

And with that, I could send myself peer-to-peer XMPP messages, and it carried on working seamlessly even when I switched my phone's WiFi off, leaving it to connect via its mobile data connection, which is a #CGNAT IPv4 address.

Having seen #libp2p try and not yet succeed in CGNAT holepunching, I'm really impressed by how easy it was to get yggdrasil to make the CGNAT barrier effectively disappear.

Cc: @neilalexander, @prosodyim @dino

Apparently those hashtags in the content warning didn't work. See above if you're interested in #P2P #XMPP over #yggdrasil.

I might write more about this next week.

On the other hand, I might write more about it today. (The weekend wasn't as close as I thought when I wrote that.)

The best #peerToPeer systems allow ordinary people to use them without having to rely on a system administrator, or be one themself. What I described above clearly isn't that kind of #P2P system.

But it is a proof-of-concept demonstration, and I'm sure it would be possible to bundle an #XMPP server with its own internal #yggdrasil component, like @neilalexander's #yggmail does for email.

There's something to be said for the way yggmail lets you use your favourite email client, and that could be one way to go for peer-to-peer XMPP, but another alternative would be to bundle the relevant parts of an XMPP client in there, too (so it doesn't need to worry about client-to-server communication), resulting in an an all-in-one #XMP2P app that anyone could use.

Next time, I might talk about interoperability with the existing federated XMPP network.

There is also serverless XMPP, where you have disparate clients directly connect: https://xmpp.org/extensions/xep-0174.html

Although I’m unclear of how dependent it is on DNS-SD.

I figure there could be a simple QR code/scanner in mobile clients, for adding a client via a QR code in XMPP URI format (xmpp:user@[300:1234:5678:9abc:def1:2345:6789:abcd]?roster) versus typing in a whole Yggdrasil address.

https://xmpp.org/extensions/xep-0147.html#actions-roster-add

XEP-0174: Serverless Messaging

@arcanicanis
I hadn't noticed XEP-0174; thanks for pointing it out!

Yes, I think QR (or Aztec) codes would be good for a purpose-built #XMP2P client, as well as the ability to easily share the address via another text messaging service.