洪 民憙 (Hong Minhee) :nonbinary:'s avatar

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · 1032 following · 1627 followers

An intersectionalist, feminist, and socialist living in Seoul (UTC+09:00). @tokolovesme's spouse. Who's behind @fedify, @hollo, and @botkit. Write some free software in , , , & . They/them.

서울에 사는 交叉女性主義者이자 社會主義者. 金剛兔(@tokolovesme)의 配偶者. @fedify, @hollo, @botkit 메인테이너. , , , 等으로 自由 소프트웨어 만듦.

()

Evan Prodromou's avatar
Evan Prodromou

@evanprodromou@socialwebfoundation.org

As part of my book "ActivityPub: Programming for the Social Web", I created a coding example to show how to program for the ActivityPub API. ap is a command-line client, written in Python, for doing basic tasks with ActivityPub.For example, you can log into a server using this command: ap login yourname@yourserver.example Once you're logged in, you can follow someone: ap follow other@different.example Or, you could post some content: ap create note --public "Hello, World" This isn't […]

As part of my book “ActivityPub: Programming for the Social Web“, I created a coding example to show how to program for the ActivityPub API. ap is a command-line client, written in Python, for doing basic tasks with ActivityPub.

For example, you can log into a server using this command:

ap login yourname@yourserver.example

Once you’re logged in, you can follow someone:

ap follow other@different.example

Or, you could post some content:

ap create note --public "Hello, World"

This isn’t enough to have a real social networking experience, but I think it’s pretty useful for testing an ActivityPub API server, or automating some repetitive tasks.

I should note quickly here that not all ActivityPub servers support the ActivityPub API. It’s an under-utilized part of the ActivityPub standard. In particular, Mastodon, Threads, Flipboard, and other services don’t support the API. There’s a pretty good list of servers and clients that do support the API in this Codeberg issue.

Suffice it to say, unless you’re actively working with one of those platforms, or you are writing your own, you’re not going to get much use out of ap. It will probably give you an error message like “No OAuth endpoints found” if it can’t use the service.

Refreshing the project

I’ve never packaged ap for distribution; it was always supposed to be example code. But given the recent interest in the ActivityPub API, including the work going on in the ActivityPub API task force, I decided to get it into shape for installation by developers working on other apps. My friend Matthias Pfefferle of Automattic asked me about it when we were at FOSDEM this year, and I was embarrassed to see how difficult it was for him to use.

So, I’ve made two big upgrades to the package. The first was actually making it a package, and distributing it! I upgraded the package management framework to uv, which seems like a good bet for now, and pushing the application to PyPI, the Python Package Index. It’s visible at https://pypi.org/project/activitypub-cli/ now. (Note: different package name from the command name! The PyPI “ap” package name was taken a while ago.)

You can now install the application in one shot with this command on a computer that has Python on it:

pipx install activitypub-cli

You can test that the application installed correctly in your path by running the version command:

ap version

That should show the same version as is currently on the pypi.org page for the project.

The second change was implementing the current OAuth 2.0 profile best practices. I’ve upgraded the login flow so it tries a lot of different options for identifying itself to the server: CIMD, FEP d8c2, and Dynamic Client Registration. It tries to do them in preferential order; it uses permanent, global client identifiers before dynamic ones.

Help me test

I’m especially interested in testing this command-line client against other servers. If you’re developing an ActivityPub API server, please install the ap command and try it out against your (development!) server. Report a bug if it doesn’t work well, or send me a DM at @evanprodromou if it works OK. Given time, I think ap can be a useful first smoke test for ActivityPub API implementations.

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to Peter Brett's post

@krans That's a real and legitimate grievance, but it's a different argument from the one we were having.

Your employer using LLM translation to cut costs on documentation for a massive Korean customer (while having the resources to do it properly) is a decision made by someone with power, to save money, at the expense of Korean users. That's worth being angry about.

But I'm an individual trying to participate in a public conversation. I can't hire a personal interpreter every time I want to respond to a post. The choice I actually face is: use available tools, or stay silent. Those aren't the same situation, and the same tool can mean very different things depending on who's holding it and why.

If anything, your example reinforces the point. The problem isn't the tool, but it's who gets to decide when it's “good enough.”

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to Peter Brett's post

@krans The analogy is structurally interesting, but I think it breaks down at a crucial point.

With tax credits, the argument is that the subsidy lets employers off the hook—pressure that would otherwise force wages up gets absorbed by the state instead. The discomfort falls on capital, or at least that's the intent. But when you apply the same logic to language access, the discomfort doesn't fall on the Anglophone center. It falls on the people who were already excluded. The implicit suggestion becomes: non-English speakers should communicate less fluently, so that English speakers are eventually pressured into… what, exactly? Learning Korean? There's no mechanism there.

The deeper problem is that “lowering the bar for communication in English” is not the same thing as accepting English hegemony as permanent. I use these tools to participate in a conversation that would otherwise exclude me. That's not capitulation—it's the same logic as using a wheelchair ramp. You don't refuse the ramp because its existence lets architects keep building stairs.

The structural critique of hegemony is real and I share it. But it shouldn't cash out as advice to the marginalized to make themselves less legible. That's a cost I'm not willing to ask people to pay on behalf of a structural shift that may never come.

@Gargron

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

I'm writing this in English.

Not because English is my first language—it isn't. I'm writing this in English because if I wrote it in Korean, the people I'm addressing would run it through an outdated translator, misread it, and respond to something I never said. The responsibility for that mistranslation would fall on me. It always does.

This is the thing Eugen Rochko's post misses, despite its good intentions.

@Gargron argues that LLMs are no substitute for human translators, and that people who think otherwise don't actually rely on translation. He's right about some of this. A machine-translated novel is not the same as one rendered by a skilled human translator. But the argument rests on a premise that only makes sense from a certain position: that translation is primarily about quality, about the aesthetic experience of reading literature in another language.

For many of us, translation is first about access.

The professional translation market doesn't scale to cover everything. It never has. What gets translated—and into which languages—follows the logic of cultural hegemony. Works from dominant Western languages flow outward, translated into everything. Works from East Asian languages trickle in, selectively, slowly, on someone else's schedule. The asymmetry isn't incidental; it's structural.

@Gargron notes, fairly, that machine translation existed decades before LLMs. But this is only half the story, and which half matters depends entirely on which languages you're talking about. European language pairs were reasonably serviceable with older tools. Korean–English, Japanese–English, Chinese–English? Genuinely usable translation for these pairs arrived with the LLM era. Treating “machine translation” as a monolithic technology with a uniform history erases the experience of everyone whose language sits far from the Indo-European center.

There's also something uncomfortable in the framing of the button-press thought experiment: “I would erase LLMs even if it took machine translation with it.” For someone whose language has always been peripheral, that button looks very different. It's not an abstract philosophical position; it's a statement about whose access to information is expendable.

I want to be clear: none of this is an argument that LLMs are good, or that the harms @Gargron describes aren't real. They are. But a critique of AI doesn't become more universal by ignoring whose languages have always been on the margins. If anything, a serious critique of AI's political economy should be more attentive to those asymmetries, not less.

The fact that I'm writing this in English, carefully, so it won't be misread—that's not incidental to my argument. That is my argument.

Eugen Rochko's avatar
Eugen Rochko

@Gargron@mastodon.social

Machine translations are often brought up as a gotcha whenever I criticize LLMs. It's worth pointing out two things: Machine translations existed decades before LLMs, and yes, machine translations are useful. However: I would never in my life read a machine translated book. Understanding what a social media post is talking about in rough terms? Sure. Literature? Absolutely not. Hell, have you ever seen machine translated subtitles? It's absolute garbage.

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

韓國語(한국어) 母語(모어) 話者(화자)로서 정말 하고 싶은 말이 많아지게 하는 글이네… 只今(지금) 東京(도쿄) 旅行中(여행중)이라 글을 쓸 수가 없는데, 있다가 () 잡고 제대로 反駁(반박) 글을 써 봐야 할 듯.

Eugen Rochko's avatar
Eugen Rochko

@Gargron@mastodon.social

Machine translations are often brought up as a gotcha whenever I criticize LLMs. It's worth pointing out two things: Machine translations existed decades before LLMs, and yes, machine translations are useful. However: I would never in my life read a machine translated book. Understanding what a social media post is talking about in rough terms? Sure. Literature? Absolutely not. Hell, have you ever seen machine translated subtitles? It's absolute garbage.

Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social · Reply to Julian Fietkau's post

(Disclosure: Using the name and logo of Encyclia – symbolically, since Encyclia is not a legal entity – I have an active monthly donation to @fedify on OpenCollective. However, I do not believe that this is getting me any preferential treatment, and in my observation the Fedify project treats all contributors and downstream implementers with equal respect.)

Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social

Seems as good a day as any to thank @hongminhee and team for the exemplary work on @fedify. Following Fedify's big 2.0 release, my two largest interoperability pain points in @encyclia can be fixed. 🙂

github.com/fedify-dev/fedify/i means that people using @gotosocial will finally be able to follow @encyclia accounts soon (whenever I finish the upgrade).

github.com/fedify-dev/fedify/i will let me (and others) handle more account resolution edge cases and reduce failure mode traffic after Fedify 2.1 is out.

jevans ⁂'s avatar
jevans ⁂

@jevans@climatejustice.social

this piece by @hongminhee is excellent.

writings.hongminhee.org/2026/0

tesaguri 🦀🦝's avatar
tesaguri 🦀🦝

@tesaguri@fedibird.com

それはそれとしてThisIsMissEm大先生がグラントを得られたことは良い話である。同氏が長いこと資金難そうだったのは気掛かりだったし

Oto Šťáva's avatar
Oto Šťáva

@alefunguju@mastodon.social

> When legality is used as a substitute for a value judgment, the question that actually matters gets buried in the footnotes of a law it has already outgrown.

writings.hongminhee.org/2026/0

Vladimir Savić's avatar
Vladimir Savić

@firusvg@mastodon.social

Is legal the same as legitimate: reimplementation and the erosion of copyleft writings.hongminhee.org/2026/0

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to モナコ広告 :fedibird1: @技術・雑談's post

@monaco_koukoku ご報告ありがとうございます。まさに既知の問題で、先ほどGitHubのイシュー#472としてクローズされました。

問題の本質は、Delete(Actor)を送ってくるアクターはすでに削除済みであるため、署名検証に必要な公開鍵が取得できずFedifyが401 Unauthorizedを返してしまうことにあります。結果としてハンドラーが呼ばれないのは仕様どおりの動作ではあるのですが、Deleteの場合はそれが根本的に困るというわけです。

この問題は次のリリースのFedify 2.1.0で対処されます。InboxListenerSettersonUnverifiedActivity()というフックが追加され、署名検証に失敗したアクティビティをアプリケーション側でオプトインして処理できるようになります。詳しい使い方はドキュメントをご参照ください。

現在お使いのv1.10.3では残念ながら組み込みの回避策がありません。v2.1.0の正式リリースはまだですが、プレリリースビルドv2.1.0-dev.513+f5543fcaがすでにnpmおよびJSRに上がっていますので、今すぐ試すことも可能です。

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee) :nonbinary:'s post

海鮮丼を食べにつじ半に来た。

海鮮丼
ALT text details海鮮丼
🫧 socialcoding..'s avatar
🫧 socialcoding..

@smallcircles@social.coop

Legal vs. Legitimate, good article by @hongminhee

> Whatever courts eventually decide about AI reimplementation, the question we need to answer first is not a legal one. It is a social one. Do those who take from the commons owe something back? I think they do. That judgment does not require a verdict

"Can the commons expect something back from those who extract value?" is a key question of Social experience design. The answer forms one of 3 core principles: The Mindfulness principle.

No. You can't expect *anything* back. That philosophical insight is crucial to organizing a healthy commons that's able to retain its value and evolve.

Paint any principles and values on a flag but as long as the battle is scattered farmers holding feeble Copyright Law pitchforks against a vast drone army, its no use. Know thy enemy helps too. It's not proprietary code or corporations. It's hypercapitalism: The Rules of Battle.

writings.hongminhee.org/2026/0

news.ycombinator.com/item?id=4

coding.social/blog/reimagine-s

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

I'm thinking of proposing a /social web community track at @COSCUP 2026 (Aug 8–9, Taipei)—think FOSDEM's Social Web devroom, but in East Asia. Before I submit the CFP, I'd love to get a sense of what to call it. What do you think?

(Boosts appreciated!)

OptionVoters
Fediverse29 (31%)
Social Web10 (11%)
Open Social Web22 (23%)
Fediverse & Social Web32 (34%)
Other (reply!)1 (1%)
洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee) :nonbinary:'s post

最近(최근) chardet의 MIT 리라이선싱과 關聯(관련)해서 Redis의 antirez와 Flask의 Armin Ronacher(一名(일명) mitsuhiko)가 이를 擁護(옹호)하는 글을 썼는데, 그에 ()한 나름대로의 反論(반론)을 써 봤습니다: 〈合法(합법)이면 公正(공정)한가: AI 再具顯(재구현)과 카피레프트의 侵蝕(침식)〉(한글).

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee) :nonbinary:'s post

chardetのMITへの再ライセンスをめぐって、RedisのantirezとFlaskのArmin Ronacher(通称 mitsuhiko)がそれを擁護する文章を書いていたので、自分なりの反論を書いてみました。

https://writings.hongminhee.org/2026/03/legal-vs-legitimate/index.ja.html

Mitchell Hashimoto's avatar
Mitchell Hashimoto

@mitchellh@hachyderm.io

Ghostty 1.3 is now out! Scrollback search, native scrollbars, click-to-move cursor, rich clipboard copy, AppleScript, split drag/drop, Unicode 17 and international text improvements, massive performance improvements, and hundreds more changes. ghostty.org/docs/install/relea

Emelia 👸🏻's avatar
Emelia 👸🏻

@thisismissem@hachyderm.io · Reply to Emelia 👸🏻's post

Here's these posts in blog article form: writings.thisismissem.social/h

Chun's avatar
Chun

@hi@hcchiang.com

Title: Is legal the same as legitimate: AI reimplementation and the erosion of copyleft
Link: writings.hongminhee.org/2026/0

這篇文章討論了 chardet 這個 Python 編碼檢測庫在使用 AI 重寫後,授權和社會倫理問題的爭議。

### 文章翻譯與總結:

2026 年 3 月 9 日,chardet 庫的維護者 Dan Blanchard 發布了第 7.0 版本,此版本比之前快了 48 倍,並支持多核心,且重寫後完全新建,原始代碼相似度低於 1.3%。他聲稱藉由使用 AI(Anthropic 的 Claude)依照 API 和測試套件重寫,因而不受原 LGPL 授權約束,改採 MIT 授權。原作者 Mark Pilgrim 反對此作法,指出 LGPL 規定修改必須維持相同授權,且 AI 重寫並

Emelia's avatar
Emelia

@thisismissem@activitypub.space · Reply to 洪 民憙 (Hong Minhee) :nonbinary:'s post

@hongminhee@hollo.social said

The proposed solution is to split responsibility more aggressively: the C2S server should be nearly stateless and dumb, storing ActivityPub objects without interpreting them, while a separate “client” layer handles indexing, timelines, moderation, and exposes its own API to the frontend running on the user's device. It's a clean separation of concerns on paper.

This is exactly what I say in the talk that I still need to record, and why I was working on that ActivityPDS concept last september.

Gabriel Gasparolo's avatar
Gabriel Gasparolo

@ggasp@toot.io

Is legal the same as legitimate: AI reimplementation and the erosion of copyleft writings.hongminhee.org/2026/0

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee) :nonbinary:'s post

chardetのMITへの再ライセンスをめぐって、RedisのantirezとFlaskのArmin Ronacher(通称 mitsuhiko)がそれを擁護する文章を書いていたので、自分なりの反論を書いてみました。

https://writings.hongminhee.org/2026/03/legal-vs-legitimate/index.ja.html

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

Salvatore Sanfilippo (@antirez) and Armin Ronacher (@mitsuhiko) both argue that reimplementation of libraries is fine. Their legal reasoning might be correct. That's not the point.

Legal and legitimate are different things—and both pieces quietly assume otherwise.

https://writings.hongminhee.org/2026/03/legal-vs-legitimate/

Venkatesh-Prasad Ranganath's avatar
Venkatesh-Prasad Ranganath

@orderwithchaos@mastodon.social

"Whatever courts eventually decide about AI reimplementation, the question we need to answer first is not a legal one. It is a social one. Do those who take from the commons owe something back?"

writings.hongminhee.org/2026/0

Arya N's avatar
Arya N

@null0x0@fosstodon.org

An excellent read

writings.hongminhee.org/2026/0

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to vappster's post

@vappster BotKit currently supports only a single bot per instance, but in the future releases, such limitation could be gone. See also this related issue: https://github.com/fedify-dev/botkit/issues/16.

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to Hyaniner's post

@hyaniner 읽어주셔서 고맙습니다!

Lobsters

@lobsters@mastodon.social

Is legal the same as legitimate: AI reimplementation and the erosion of copyleft by @hongminhee lobste.rs/s/52jd6f
writings.hongminhee.org/2026/0

洪 民憙 (Hong Minhee) :nonbinary:'s avatar
洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee) :nonbinary:'s post

最近(최근) chardet의 MIT 리라이선싱과 關聯(관련)해서 Redis의 antirez와 Flask의 Armin Ronacher(一名(일명) mitsuhiko)가 이를 擁護(옹호)하는 글을 썼는데, 그에 ()한 나름대로의 反論(반론)을 써 봤습니다: 〈合法(합법)이면 公正(공정)한가: AI 再具顯(재구현)과 카피레프트의 侵蝕(침식)〉(한글).

Older →