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.
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.