vil posts words

  1. Joining the Indieweb, the web that's been here all along

    Or, why I finally have a blog again in 2020

    It's been a long time. How have you been?

    I left Twitter over one year ago, with the intent that I would reappear on some more open platform. Mastodon seemed like the obvious choice, but profile migration still doesn't exist, and I didn't want to join what was effectively yet another silo. In my view, the number of instances that have shut down over the past year have vindicated this decison. I want to own the things I post on the web, so that if they eventually disappear it's at least my own fault.

    Well, it's time to go. It's hard to leave after ten years, but this is no longer a good place to be and Twitter is committed to making it worse. You've all been an important part of my life, and I'll miss that. See ya around. vilhalmer

    At the time, Mastodon had just added interoperability with the ActivityPub protocol. This seemed like the obvious solution: I could be part of the fediverse without needing to choose an instance, and without the complexity of hosting one myself (Mastodon is not designed for a single user, the administrative overhead and the fact that it's written in a language I don't use made running it not worth it.) I started writing my own implementation of ActivityPub, with the following design goals:

    • Mastodon-compatible
    • Database-free
    • Static-first

    This turned out to be a much larger project than I intended. (Story of my life.) In particular, Mastodon is very picky about the AP implementations it will talk to, and I spent more time trying to keep it happy than actually building a system I could use to post words on the internet. I made some good progress, and I intend to continue work as I have the inspiration*, but I needed a way to get myself back on the web in the near-term as well.

    So the question becomes: what existing, open technology allows you to post text on the web with the minimal amount of up-front work? Surprise: it's HTML.

    HTML?? Who writes that anymore? We have like, Markdown and stuff! While it's true that writing HTML by hand isn't the most fun thing in the world, it's far from the worst. This post was entirely hand-crafted. With that said, it was crafted with an eye toward eventually generating the structure with some sort of static site generation tool. I haven't settled on one, but historical evidence suggests I will end up writing my own.

    Standards to the rescue, sort of

    Posting stuff on my website only solves one part of my original goal, though. While it gives me ownership of my content, it also ensures that no one will ever see any of it. The second part, syndication, falls squarely in the realm of the Indieweb. Indieweb isn't a single technology, it's a loose collection of parts that you can put together however you like to teach your website to communicate with other websites.

    One of the coolest aspects of the Indieweb is built on top of the original semantic intent of HTML using Microformats. By annotating content with simple standard classes (this article is an h-entry, for instance), you enable an ever-growing set of tools to automatically parse your website into feeds, contact information, calendar entries, and things not yet imagined.

    In my case, I'm using these building blocks to make it possible for readers to subscribe directly to my website, much like you would an RSS feed. By annotating the content directly using an h-feed, I avoid the need to maintain two (or more!) disparate representations of my posts. People can subscribe to the h-feed simply by dumping into their reader. The reader will automatically discover the feed using the <link rel="feed"> tag on the homepage, which points to /posts. If I wanted, I could also have a feed embedded directly into the homepage with a few recent posts, but currently the homepage is static and I like it that way. It also has some features of its own.

    There is of course a downside or two. The most obvious is that, even if you clicked on every single link in the above paragraph, you have no idea how to subscribe to my posts. The Indieweb is a big space, full of standards which need to be used in combination with each other to be useful. Most things have no "one-stop shop" (at least not yet). There's no Google Reader here (again, not yet), but then again there's no Google Reader anywhere anymore. Subcribing to things on the web in 2020 is kind of a mess.

    This is a chicken-and-egg problem. Until enough* websites are using Indieweb standards to publish content, it will remain a niche. Some standards, like rel-me have gained wide adoption, but these are tiny pieces of the puzzle. I can't even point you to a reader that you can use right now, without any up-front work.


    The core of the Indieweb philosophy is that your website is the One True Representation of "you" on the web. This means you use it for everything, including signing in on other Indieweb sites and services. Since encouraging the growth of the Indieweb is obviously among the community's top priorities, there isn't much of an incentive to offer alternative methods.

    So what does this mean for potential Indieweb users? It's always tempting to make the "well my <insert older relative here> won't be able to do this" argument. We'll ignore the general accuracy of this argument in favor of the spirit behind it: non-technical people are very unlikely to own a domain, or even care to. They're even less likely to want to read about what a microformat is, or how to tell people about their articles using something called WebSub. This makes the Indieweb necessarily a fairly tech-centric space. However, I don't believe that this makes it less valuable. The Indieweb is a new technology, though it happens to be built on top of some very old ones. New technologies are always inhabited by tech types at the beginning. But the reason we create them (or at least the reason we should create them) is with the intent of improving the world at large. While the Indieweb may not yet be usable* by the average internet denizen, this doesn't mean it has to remain this way.

    With every tool that the community builds and every standard that they iterate on, we get a little closer to having a truly open web. What is currently a complex pile of disparate parts has the potential to grow into something even simpler than the web we currently inhabit. In the future where the Indieweb reaches its full potential, no longer does a user have to join silo after silo, trying to keep up with the latest trends, and having to rebuild their identity each time. Instead, they simply have a domain, and that domain is them. Represented however they want, however much they want, truly a space of their own. Being on the web is complicated because we haven't made it simple. Simple as that. Let's build the tools to change that.

    Enough philosophy already

    This article got quite long and abstract at some point. The concrete takeaway is that I'm going to be posting things here from now on. This will make it hard to follow my content at first, but it will get easier as I build out my integration with Indieweb and other standards. Hopefully someone out there finds what I have to say interesting enough to stick around during that process. I have no idea how I'm going to bootstrap my presence outside of existing friends and the Indieweb circle, but I'll figure something out.

    The second takeaway is that while the Indieweb may not yet be useful for a general audience, the fact that it is built on existing web technologies makes it a perfect example of progressive enhancement. I can still send the url of this post to anyone with an internet connection, and they will be able to read it without any proprietary clients or registering an account that they don't want. And if we ever reach that glorious Indieweb future? It will be visible there from day one.

    The final point of this article was to get someone else interested in the lost art of building a personal website, and to let that someone know that there are exciting new things happening. Did it work? Get started. (P.S.: while it's obviously not optimal, you could use a Github Pages site to get your feet wet. It's enough to give you a web sign-in identity. You will lose your identity if you move to your own domain later.)