IndieWeb, Revisited
Dec 28, 2020A couple of years ago I started building an IndieWeb website. Then I got painfully busy at work, stopped improving it, and basically ran out of free time to even post to it.
Fast forward a couple of years, and I've got a new job that's somewhat more manageable, and during the holiday break I'm trying to get this thing going again. I've made a couple of changes:
- For the static site generator itself, I replaced Gatsby with Eleventy and am happier with it; it's basically just a pile of simple templates.
- I got webmentions working, and can now pull down people's Twitter replies to my tweets and posts, and archive them on my site as "comments." My implementation is sort of crude still, but I'm really excited about it.
So that means that for this "simple" blog to operate, all the following systems have to be working and correctly integrated:
- An iOS Shortcuts script, for posting text in tweet form from mobile.
- Eleventy, for generating the static site from Markdown and templates.
- Various microformats in the templates of the site, which structure the data so it can be used properly by some of the connecting systems.
- A GitHub repo, to receive blog and tweet data and hold all the code.
- A Netlify app, to monitor the repo, execute the build, publish, and host the pages.
- Two IFTTT applets, to monitor the blog and tweet feeds for changes, and post to Bridgy.
- Brid.gy, for publishing links to the tweets and blog posts to Twitter, and monitoring for webmentions.
- webmention.io, for receiving the webmentions.
- A nodejs script for pulling down those webmentions and writing them out to a cache in my build.
- I'm probably forgetting one or two other things. 😬
This is all still really hard for even an engineer to get working, because it involves integrating so many systems. The feedback loop is super slow, and it's really hard to debug, because not all of those systems give you clear information about what might be going wrong.
There are a couple of things that are strange about the experience, too. When I post a tweet via this system, it currently has to include a link back to the tweet on my site, to ensure that replies link up correctly. That looks a little gross on Twitter. It also takes 10-60 minutes after I've posted something for all of these systems to fire, because some of them poll periodically rather than being triggered by events, and since they're free systems, they may not poll that often.
Overall, I don't think any of this will really go anyplace for regular folks until there are more well-known solid hosted options like Micro.blog that can provide an integrated solution and remove all the hassle for people. And that's going to be a challenge when those hosting providers are competing with existing social networks that are 100% free, and really tightly integrated, and easy, and huge.
Nonetheless, I'm still enjoying it, and I'm making gradual progress. Maybe that's the brain worms talking, but it's amazing how much stuff the community has provided us for free, and how well it works once you can get through all the hoops.
I'm curious to see how this landscape looks in a couple more years.
Updated, 2022: #
Now that all looks like this:
- An iOS Shortcuts script, for posting text in tweet form from mobile.
- Eleventy, for generating the static site from Markdown and templates.
- Various microformats in the templates of the site, which structure the data so it can be used properly by some of the connecting systems.
- A GitHub repo, to receive blog and tweet data and hold all the code.
- A couple of GitHub Actions, to execute the build, publish the pages, and send and receive webmentions.
- Cloudflare Workers Pages, to host the pages.
- Brid.gy, for publishing links to the tweets and blog posts to Twitter, tracking what POSSE post corresponds to what original post, and monitoring for webmentions.
- webmention.io, for receiving the webmentions.
- A nodejs script for pulling down those webmentions and writing them out to a cache in my build.
It's very slightly simpler, but still a lot more than most people, even most programmers, would want to bother with. The only opportunities I see for making this simpler are:
- Replacing the iOS Shortcut with some kind of standard micropub client.
- Building my own webmention code and hosting it in Cloudflare Workers, AWS Lambda, or something similar. Note that all the normal problems with bespoke roll-your-own software apply here (security updates, feature rot, etc.)
Those kinds of simplifications are not particularly valuable in and of themselves, except for maybe making it easier to acceptance-test the whole thing. It might, however, make sense to think about what kinds of simplifications could turn this into an easy-install, self-contained app that civilians could stand up. That could look something like:
- An App Store micropub client.
- A clonable GitHub repo, which contains:
- A single config file with user settings
- Eleventy templates
- GHA build logic
- FaaS functions equivalent to Brid.gy and webmention.io
- Capability to deploy to GitHub Pages
At that point, the user only needs a free GitHub account, and the install is just:
- Fork the repo
- Edit the config file
- Install the micropub client
The trick being that GitHub doesn't currently offer any kind of FaaS. So I'd need to integrate something like Cloudflare/Netlify, and the user would need to set up that additional account and configure it to work with the repo. Blah.