Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save 2chanhaeng/00ece719514c78c6e7ac0abe25e01b57 to your computer and use it in GitHub Desktop.

Select an option

Save 2chanhaeng/00ece719514c78c6e7ac0abe25e01b57 to your computer and use it in GitHub Desktop.
The same way I already do. Fedify requires AI assistance to be disclosed in the
commit message with an Assisted-by trailer, so my usage is already a matter of
public record: of the 199 commits I've made since that convention was adopted in
April, 158 carry the trailer and 148 name a Claude model. You can check it using
`git log --author=2chanhaeng --grep="Assisted-by: Claude Code"` at the clone of
the repository.
Currnetly, most of it goes into review, which is where the bulk of my maintainer
time sits — 110 pull requests so far. The hard part there is never reading the
diff; it's checking the diff against the specification it claims to implement,
whether a proof implementation canonicalizes the way vc-di-eddsa requires, or
whether an origin check matches FEP-fe34. Doing that properly on every pull
request means holding the relevant standards and the surrounding implementation
in mind at the same time, working out whether the logic and the performance
characteristics hold up, and finding what the tests quietly failed to cover.
That is not easy work to sustain.
This is exactly what I want Claude for: figuring out which parts of a
specification I actually need to go and read, looking for places where the logic
or the efficiency could be better, and checking whether the coverage I think a
change has is the coverage it really has. The catch is volume. A single review
can span several specifications plus the code around them, and on the Max 5x
plan I pay for today I end up rationing that work rather than doing all of it.
The same applies to the code I own outright — the framework integrations, the
linter, project scaffolding, and the example applications — where the changes
tend to be wide and mechanical across a monorepo of forty-odd packages. A Max
20x subscription would let me work at the pace the project needs rather than the
pace I can currently afford.
ActivityPub is a W3C Recommendation, but interoperating on it means getting HTTP
Signatures, RFC 9421, FEP-8b32 object integrity proofs, JSON-LD normalization,
WebFinger, and ordered delivery all correct at once — and correct in the same
way as every other implementation already on the network. Fedify is the
framework that handles that for JavaScript and TypeScript, so that an ordinary
web app can federate without standing up a protocol team of its own.
Ghost's ActivityPub service is built on it, and Ghost funds the project
directly. So are Hollo, Hackers' Pub, Encyclia, Typo Blue, and BotKit. The core
package alone draws roughly 8,200 weekly downloads on npm and another 1,300 on
JSR, which understates things in two directions: the framework ships as a scope
of 37 packages, and its largest consumer is a multi-tenant service federating
many publications from a single install. The repository has 1,015 stars, 83
dependent repositories on GitHub and 28 on JSR.
I am a maintainer of Fedify. I'm a listed code owner on more than thirty package
paths in the monorepo, and the first-listed owner of seven of them, including
@fedify/next, @fedify/nuxt, @fedify/astro, and @fedify/uri-template. That comes
to 917 commits, 45 merged pull requests, 110 pull requests reviewed, and 35
issues filed. Of the 258 pull requests merged in the last twelve months,
contributed by 29 people, 43 are mine — second only to the project lead. I made
my first commit to Fedify in July 2025. Everything above is a little over a
year's work.
Fedify is also a participating project in the 2026 Open Source Contribution
Academy, a mentoring program run by the Korean government. I joined the 2025
edition as a mentee, on this same project; a year later I am back as a mentor,
training the next round of contributors. That, more than any download figure, is
what I would point to. Fedify does not merely accept contributions — it produces
contributors, who then go on to produce more. I am one complete turn of that
loop.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment