I recently came across Brennan's post noticing that Claude Code has been showing up in the commit history of a bunch of my IndieWeb projects lately. That's true! I was wondering when someone would notice. I haven't been hiding it, but I also haven't written anything about why I'm doing it, so this seemed like a good time to finally get my thoughts down.
The principles are about what you own
Brennan's post summarizes the IndieWeb as:
the main idea being to empower individuals to own their own identity, data, and web presence rather than relying on centralized social media silos
That's a pretty good summary. But notice that no part of it talks about what tools you use, or what you use to build your tools. That was a very intentional part of the IndieWeb principles, which start with "Own your domain and your data." The principles are about owning your data and being able to choose where your data is hosted, not about how the code behind it was created. It's not even about everyone hosting their website from a server in their closet, although if you want to do that you definitely should!
These projects were old
I launched some of these tools literally 15 years ago. The two big ones for me are webmention.io and IndieAuth.com. Both are old Ruby codebases that use long-abandoned ORMs and ancient versions of Ruby.
Rewriting these had to happen at some point regardless. Frankly they are a security nightmare waiting to happen. If I hadn't done the rewrites now, the realistic alternative would have been to just shut down the services.
And IndieAuth.com has a particularly awkward history. Around 2016-2017 I realized it was too confusing to have a service called IndieAuth.com that actually did two separate things. It was an authorization server that let you sign in to IndieAuth apps with your domain (via an account like GitHub), and it was also a way for developers to add "sign in with your domain" to their own web apps. So I officially decided to split those into separate products. That's where indielogin.com came from, which launched in 2018. IndieLogin gives app developers a way to add "web sign-in" to their apps without having to implement RelMeAuth or the IndieAuth spec themselves. But I never got around to splitting out the other half, the authorization server that your website links to as its IndieAuth server, and issues tokens for Micropub apps.
Finally thanks to developing a style of working with Claude Code that I'm comfortable with, I was able to launch IndieKey. This is the replacement for the other half of indieauth.com. It has a bunch of features I'm excited about, too much for this blog post, but finally I am comfortable migrating people over from indieauth.com to this. Keep an eye out in the coming months for an automatic migration, which Claude has been very helpful in planning.
Modularity, demonstrated
One of my favorite principles is modularity:
The more your code is modular and composed of pieces you can swap out, the less dependent you are on a particular device, UI, templating language, API, backend language, storage model, database, platform.
The webmention.io rewrite is a pretty good demonstration of this. I was able to move webmention.io from the Ruby code to PHP without anybody who uses it needing to change anything on their end. That's the whole point of building things on open protocols. The implementation behind the endpoint can change completely and the rest of the web doesn't have to care.
Single point of Aaron
Brennan links to the wiki page single point of Aaron, which, yes, I know. It's been a running joke (and a real concern) for a long time.
I run these services for the community because I want to show what's possible. I never wanted them to be seen as the only option. I've wanted people to build alternatives to webmention.io and IndieAuth.com for years, and I'm always glad to see a blog platform build in Webmention support natively instead of relying on my service.
So if you don't like that I used Claude to help build the replacement, that's fine! You can treat it as though I shut down the service and go find an alternative, because that is what would have happened anyway. I fully admit I knew some people would be unhappy with my choice of tools. But honestly, that's great, because it might encourage someone to build alternatives to these services, which is a win for the community overall. In fact at least one has already shown up as an alternative to webmention.io: weepinbell as a direct response to my rewrite.
That's pluralism working the way it's supposed to. Hopefully this pushes more people to build their own tools and services, especially if they're opposed to the way I work.
Understanding matters more than the tools
Linus Torvalds had a good comment on the Linux kernel mailing list about people using these tools in kernel development:
The kind of expectations I have is that people do their best and I expect people to understand what they are doing.
But that understanding has very little to do with what tools they use.
And quite honestly, in my experience, the people I respect and call intelligent are not the ones that shy away from using new and interesting tools.
That matches how I think about it. I wrote many of the specs these services implement, and I still read and understand what gets shipped. Claude is doing the typing, not deciding how Webmention works.
Have fun
The last (but not least) IndieWeb principle is have fun.
The code was never the interesting part for me. I like thinking about things from the protocol and product perspective. Maintaining a large codebase is not fun for me. But I do like building things and making useful tools. I like figuring out how building blocks can compose into a larger useful product.
And now it's a lot more fun, because I get to focus on the product and design of these tools instead of getting stuck in the weeds of the code. I've shipped more improvements to these projects in the last couple of months than I had in the previous few years.
- IndieKey - An IndieAuth server you can use for your website, built from scratch in the last month.
- Webmention.io - Receive webmentions for your website, forward them to webhooks, or fetch from the API. A complete rewrite of the old Ruby app that is now much more maintainable.
- Meetable - The events platform that runs events.indieweb.org, which I started developing in 2019. Recently I was able to ship a bunch of features on the todo list backlog: Proposed events, recurring events, code of conduct confirmation, a calendar heatmap, and many more!
- IndieAuth.rocks - An IndieAuth spec validator. This has been on my todo list for literal years!
- Quill - A Micropub client for posting notes, photos, articles and more, rewritten from scratch with a significantly improved UI!
- IndieNews - I added an admin UI to manage block lists to deal with the influx of poorly written LLM posts that were being submitted.
- micropub.rocks and websub.rocks - Turns out the email login forms were being abused to send spam, so I replaced it with passkey login.
Disclosure
While I don't work at Anthropic, I have worked with some folks there on launching Enterprise-Managed Auth in Claude.ai.
And yes I used Claude to help me draft this blog post, with a healthy amount of hand editing afterwards.
Anyway
The one nit I will pick with Brennan's post is the title: "The IndieWeb Now Has genAI and Claude Built-in". Yes, many of the IndieWeb services I run have now had contributions from Claude. But the IndieWeb is not the services I run. The IndieWeb is a community of people, and a wide variety of tools and services based on a shared set of principles.
I don't expect this to change everyone's mind, and that's okay. People can reasonably draw their lines in different places. Pluralism means we can use different tools built different ways, but still interoperate. If you've got thoughts, write a post on your own site and send me a Webmention. It'll get to me, through the brand new PHP version of webmention.io.
