COSCUP 2026 開源人年會

I just wanted ruby annotations: writing in dead scripts on the living fediverse
2026年8月9日 , TR411

Koreans used to mix hanja (漢字; Chinese characters) into Korean prose, much as Japanese still mixes kanji and kana. The style is called Korean mixed script (國漢文混用體). Almost nobody writes this way anymore. I do.

When I wanted to post this way on the fediverse, I ran into a small but stubborn problem: <ruby> annotations, the HTML feature that puts pronunciation guides above or beside characters, were stripped by the major servers I tried. I filed an issue against Mastodon. It sat there for a long time. At some point, “maybe I should run my own server” somehow became “maybe I should implement ActivityPub myself.”

ActivityPub is not simple. JSON-LD alone has several ways to say the same thing. Then come HTTP Signatures, WebFinger, NodeInfo, inbox forwarding, and the small incompatibilities that only become obvious when Mastodon and Misskey disagree. Before building the server I wanted, I built Fedify: a TypeScript framework that keeps most of that protocol plumbing out of application code.

Hollo came next, because I still wanted the original thing: a single-user ActivityPub server where Markdown and <ruby> annotations survived the trip. Hackers' Pub followed from the same framework, aimed at developers who want short posts and longer articles to federate.

This talk is about how a small typographic itch turned into upstream patches, a framework, and two fediverse servers. I still just wanted ruby annotations.


難易度: 初學者

I'm Hong Minhee (洪 民憙), a software engineer from Seoul. I write some free/open source software, which are mostly written in Haskell, Python, and TypeScript. I'm an advocate of free/open source software and fediverse. My professional interests are decentralized peer-to-peer networks and statically typed functional programming languages.

I also have outside interests on etymology, East Asian languages (CJK), Chinese characters, and further, Unihan.

For a more detailed introduction, please visit my personal website at https://hongminhee.org/.