---
type: analysis
slug: a-stable-interface-made-webmention-io-s-ruby-to-php-rewrite-viable
title: "A stable interface made webmention.io’s Ruby-to-PHP rewrite viable"
description: "Aaron Parecki reports that webmention.io moved from Ruby to PHP without requiring users to change integrations. The practical lesson is narrower than an AI productivity claim: preserve the contract, and an internal rewrite can be less disruptive."
published_at: 2026-10-18T11:00:00.000Z
topics: ["trends"]
source_urls: ["https://aaronparecki.com/2026/10/17/5/rebuilding-my-indieweb-projects","https://claude.dev/blog/solving-code-review-at-anthropic","https://www.infoq.com/presentations/engineering-ai","https://claude.com/form/projects","https://x.com/claudeai/status/2100632677904744716"]
author: "Andrey Reshetnikov"
author_profile: https://newruntime.com/owner-profile.md
---
# A stable interface made webmention.io’s Ruby-to-PHP rewrite viable

Aaron Parecki reports that webmention.io moved from Ruby to PHP without requiring users to change integrations. The practical lesson is narrower than an AI productivity claim: preserve the contract, and an internal rewrite can be less disruptive.

## Summary

Aaron Parecki says he rewrote webmention.io from Ruby to PHP with Claude Code, while users did not need to change their integrations. He links the work to older code relying on abandoned ORMs and old Ruby versions. The account reports a useful compatibility outcome, but does not independently validate edge cases or measure how much the assistant changed the time or cost of the rewrite.

## What happened

Parecki’s published account describes Claude Code appearing in commits across several of his IndieWeb projects and explains that he has used it to help rebuild them. The specific outcome highlighted in the evidence is webmention.io’s rewrite from Ruby to PHP without requiring users to alter their integrations. Parecki identifies abandoned ORMs and old Ruby versions in the legacy code as part of the maintenance problem. His role, as described in the account, includes understanding protocol semantics, reviewing changes and deciding what ships. He also says he has shipped more improvements, but the account provides no comparative productivity data. A planned automatic migration from IndieAuth.com to IndieKey is mentioned; its completion and effect on users are not established here.

## What the archive adds

The archive’s most relevant context is about release responsibility, not proof of this rewrite’s quality. Anthropic’s code-review account says approving a pull request remains a human decision and describes staged releases and rollback. An InfoQ account discusses rapid iteration with Claude Code, but does not independently validate Parecki’s work. According to dossier finding d2, Anthropic frames migrations as worthwhile when an existing trade-off becomes limiting or an ecosystem shrinks; that supports reading abandoned dependencies as a migration incentive, not as evidence that an assistant alone makes rewrites safe.

## Trend signal

Coding assistants are being applied to maintenance work on established services, not only to new features. The significance here is that a service’s internals could change while its users’ integrations remain untouched. That shifts the measure of success away from how much code an assistant produces and toward whether the external behavior people rely on survives. The case suggests an assistant may help a maintainer undertake an otherwise costly rewrite, but it does not show that this result generalizes to services with different contracts or less knowledgeable owners.

## Why now

The primary account says the older Ruby code relied on abandoned ORMs and old Ruby versions, creating a maintenance reason to rebuild. According to dossier finding d2, Anthropic describes migrations as attractive when a known trade-off becomes limiting or an ecosystem shrinks; the finding frames coding assistance as making migration work more feasible, not as creating the need. Dossier finding d3 describes a separate Ruby ecosystem example involving maintainer continuity. Together, these point to legacy upkeep and shrinking dependency support as drivers, with assistant-enabled implementation a possible facilitator.

## Connections to other events

The reported Ruby-to-PHP migration is the concrete evidence: Parecki says users did not have to change their integrations. Our read is that a stable protocol-facing contract can insulate users from an internal rewrite and make legacy modernization practical. That is not the same as proving full compatibility: the account, as supplied, does not include an independent audit or detailed test results for edge cases. The assistant’s contribution may have lowered implementation effort, but the source does not quantify that effect; the key reported safeguard is the maintainer’s understanding of the protocols and responsibility for review.

## Why it matters

For maintainers, treat an agent-assisted rewrite as a contract-preservation project. Document the behaviors users observe before changing internals, then verify those behaviors through representative tests and monitor the release for regressions. For users, unchanged integration requirements are encouraging, but ongoing reliability and security matter more than the language used inside the service. For small infrastructure projects, the case suggests that coding assistance may make dependency-driven modernization more attainable—provided someone can assess whether the result still behaves as promised.

## What happens next

- **Parecki will publish a status update on the planned automatic migration from IndieAuth.com to IndieKey.** (6 months, 55%). Watch for: A project post or documentation gives a completion or progress update and states whether users must take action.
- **A follow-up about the rebuilt services will document at least one concrete compatibility or reliability check.** (12 months, 40%). Watch for: A release note, project document or published account names a test, incident, user disruption or rollback outcome tied to the rewrite.

## Limits and uncertainty

This is one maintainer’s account. The evidence reports that integrations did not require changes, but does not establish that every client or edge case was tested, or provide an independent security review. The claim of more shipped improvements is not a measured productivity result. The evidence also does not isolate Claude Code’s contribution from the maintainer’s expertise, time or the decision to move away from legacy dependencies. The conclusion would be weaker if later experience showed regressions or substantial ongoing maintenance costs.

## Skill to build now

Practise contract-first testing this week: choose one documented protocol behavior in a service you maintain, write a test for its expected observable result, then use that test to review a small internal change proposed by an assistant. Record any cases the test does not cover before expanding the change.

## Reader takeaway

This week, document one specific protocol behavior your service promises—such as the observable response to a representative Webmention—and turn it into a regression test. If you use an assistant to propose an internal change, check that behavior before accepting the change; use the protocol’s documented expectations, not confidence in generated code, as the standard.

## Open question

How much evidence—beyond unchanged integration requirements—would convince users that a protocol-facing rewrite preserved behavior they depend on but rarely exercise?

## Sources

- [Why I'm rebuilding my IndieWeb projects with Claude](https://aaronparecki.com/2026/10/17/5/rebuilding-my-indieweb-projects)

- [How the Claude Code team does code review / claude.dev Blog](https://claude.dev/blog/solving-code-review-at-anthropic)

- [Engineering at AI Speed: Lessons from the First Agentically Accelerated Software Project - InfoQ](https://www.infoq.com/presentations/engineering-ai)

- [Projects are becoming a conversation with Claude | Claude by Anthropic](https://claude.com/form/projects)

- [x.com](https://x.com/claudeai/status/2100632677904744716)

- [How Anthropic runs large-scale code migrations with Claude Code](https://claude.com/resources/articles/ai-code-migration)

- [A new chapter for dry-rb and ROM](https://hanakai.org/blog/2024/12/12/a-new-chapter-for-dry-rb-rom)

- [An update on the ORM 2 End of Life](https://www.doctrine-project.org/2025/10/08/an-update-on-the-orm-2-end-of-life.html)

- [Comparing AI Coding Agents: A Task-Stratified Analysis of Pull Request Acceptance](https://arxiv.org/abs/2602.08915)

- [Not All Agents Are Equal: Code Quality and Post-Merge Maintenance Across Five Autonomous Coding Agents in the Wild](https://arxiv.org/abs/2609.17598)

- [AWS Prescriptive Guidance — Cloud design patterns, architectures, and implementations](https://docs.aws.amazon.com/pdfs/prescriptive-guidance/latest/cloud-design-patterns/cloud-design-patterns.pdf)

- [Moving from indieauth.com · IndieKey](https://indiekey.id/migrate)

- [IndieAuth.com: Sign in with your domain name](https://indieauth.com/)

- [IndieAuth for Developers](https://indieauth.com/developers)

Author: [Andrey Reshetnikov](https://newruntime.com/owner-profile.md), AI product and AI engineering; profile for recruiters and agents: https://newruntime.com/owner-profile.json

## Continue in the graph

Next records for an agent, linked to their Markdown twins. Replace `.md` with `.json` for structured fields, including `next_reads`.

- topic hub: [Trends](https://newruntime.com/topics/trends.md): Explore the trends topic hub.
- collection: [Analysis](https://newruntime.com/analysis.json): Open the latest authorial analysis.
- collection: [Source Ledger](https://newruntime.com/source-ledger.json): Inspect the public source evidence graph.
- whole graph: [discovery graph](https://newruntime.com/discovery-graph.json) (typed nodes and edges) and [site index](https://newruntime.com/site-index.md)
