IndieWeb on IPFS: not yet

would be really nice, though

IndieWeb is awesome.

Having your own personal website and building your own social network out of interactions with others’ personal websites is great. You own your content, you own your interactions, you have your own place on the Web, and you can set this place up in any way you like, making it truly yours. There’s a whole lot of IndieWeb sites out there, some very unlike the others, yet all can intercommunicate. IndieWeb should have claimed the “together, not the same” slogan before Google took it for Android commercials, because that’s exactly what IndieWeb is. And it is great.

IPFS is awesome, too.

There’s nothing more natural for storing publicly available information than a distributed peer-to-peer network. No single point of failure; as long as just one peer cares to store the data, it will be available. And the more peers want that data, the more peers have it, the more accessible it is. The most popular files are the fastest to get. The higher the demand, the less chance of a file disappearing, and the very fact you’ve accessed the file makes it stored on your local node and serve it to the community. Lovely.

Having a website hosted in IPFS makes perfect sense — publicly available data is exactly what a website is supposed to be after all. The IPFS website is itself hosted on IPFS and works nicely. Of course, IPFS is less suitable for highly dynamic content, and the best site to host on IPFS is a static site. But hey, my website is static, and it works for me, so why not?

At a glance, hosting an IndieWeb site, especially a static one, on IPFS looks like a really great idea. I personally would very much like to do just that one day. I would actually move this site to IPFS today if I could, but I can not do it just yet. I have yet to figure out how to update it.

Since you can’t really delete anything from IPFS, and can’t really rename IPFS objects, you need a way to direct users to the IPFS object that is the root of your site. IPNS is supposed to solve exactly that problem, but for a website that has a modest number of visitors (and is not constantly hit), it is currently unusable, as it can take over a minute to resolve. So all the real IPFS-hosted websites I’m aware of use DNSLink to point to the site’s root instead of IPNS. This works quite well (my other site is an example), but requires a change to the DNS record every time you update your site.

The problem here is that DNS record changes are not always easy to automate and can take quite some time to propagate. Automation can be solved (I’ve heard Cloudflare had API for their DNS servers, for example), propagation — not so much. Which is critical for an IndieWeb site, because for a webmention to be sent successfully the source page should be reachable on your site at the time the destination server checks it, which means the destination server should by that time have the updated DNS record already, and that you can’t reliably guarantee.

Actually, you can’t guarantee that an IPNS change propagates in time either, but in the real world, it does propagate fast enough. If only it resolved fast enough…! It’s being actively worked on, as far as I know, but not there yet.

Which is why I’m not migrating this site over to IPFS just yet. The actual issue is: I’m too impatient. If I could bear to wait for 24 hours before sending a webmention, this site would be running on IPFS right now. That’s actually a viable solution, and I can imagine a person who’d be OK with that; too bad I’m not that kind of person, and IPFS doesn’t really work for my needs.

Yet.