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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,082 following1,892 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 메인테이너. , , , 等으로 自由 소프트웨어 만듦.

()

Pinned

@hongminhee@hollo.social

Hello! I'm Hong Minhee (洪 民憙), an open source software engineer in my late 30s, living in Seoul, Korea. I'm bisexual and non-binary (they/them), and an enthusiastic advocate of free/open source software and the fediverse.

I work full-time on @fedify, an ActivityPub server framework in TypeScript, funded by @sovtechfund. I'm also the creator of @hollo, a single-user ActivityPub microblog; @botkit, an ActivityPub bot framework; Hackers' Pub, a fediverse platform for software developers; and LogTape, a logging library for JavaScript and TypeScript.

I have a long interest in East Asian languages (CJK) and Unicode. I post mostly in English here, though occasionally in Japanese or in mixed-script Korean (國漢文混用體), a traditional writing style that interleaves Chinese characters with the native Korean alphabet. Wanting to write in that style was actually one of the reasons I joined the fediverse. Feel free to talk to me in English, Korean, Japanese, or even Literary Chinese!

en.wikipedia.org

Korean mixed script - Wikipedia

Pinned

はじめまして!ソウル在住の30代後半のオープンソースソフトウェアエンジニア、洪 民憙ホン・ミンヒと申します。バイセクシュアル(bisexual)・ノンバイナリー(non-binary)で、自由・オープンソースソフトウェア(F/OSS)とフェディバース(fediverse)の熱烈な支持者です。

STF(@sovtechfund)の支援を受け、TypeScript用ActivityPubサーバーフレームワーク「@fedify」の開発に専念しています。他にも、おひとり様向けのActivityPubマイクロブログ「@hollo」、ActivityPubボットフレームワーク「@botkit」、ソフトウェア開発者向けフェディバースプラットフォームHackers' Pub、JavaScript・TypeScript用ロギングライブラリLogTapeなどの制作者でもあります。

東アジア言語(いわゆるCJK)とUnicodeにも興味があります。このアカウントでは主に英語で投稿していますが、時々日本語や国漢文混用体(漢字ハングル混じり文)の韓国語でも書いています。実はこの文体で書きたくてフェディバースを始めた、という経緯もあります。日本語、英語、韓国語、漢文でも気軽に話しかけてください!

speakerdeck.com

国漢文混用体からHolloまで

本発表では、韓国語の「国漢文混用体」(漢字ハングル混じり文)を自分のフェディバース投稿に実装したいという小さな目標から始まった旅路を共有します。 この目標を達成するために、ActivityPubのJSON-LDの複雑さやHTTP Signatures、WebFingerなどの仕様を理解する必要性に…

Pinned

安寧(안녕)하세요! 저는 서울에 살고 있는 30() 後半(후반)의 오픈 소스 소프트웨어 엔지니어 洪民憙(홍민희)입니다. 兩性愛者(양성애자)(bisexual)이자 논바이너리(non-binary)이며, 自由(자유)·오픈 소스 소프트웨어(F/OSS)와 聯合宇宙(연합우주)(fediverse)의 熱烈(열렬)支持者(지지자)이기도 합니다.

STF(@sovtechfund)의 支援(지원)을 받아 TypeScript() ActivityPub 서버 프레임워크 @fedify 開發(개발)專業(전업)으로 ()하고 있습니다. 그 ()에도 싱글 유저() ActivityPub 마이크로블로그 @hollo, ActivityPub 봇 프레임워크 @botkit, 소프트웨어 開發者(개발자)를 위한 聯合宇宙(연합우주) 플랫폼 Hackers' Pub, JavaScript·TypeScript() 로깅 라이브러리 LogTape ()製作者(제작자)이기도 합니다.

()아시아 言語(언어)(이른바 CJK)와 Unicode에도 關心(관심)이 많습니다. 이 計定(계정)에서는 ()英語(영어)로 포스팅하지만, 때때로 日本語(일본어)國漢文混用體(국한문 혼용체) 韓國語(한국어)로도 씁니다. 聯合宇宙(연합우주)에 오게 된 動機(동기) () 하나가 바로 國漢文混用體(국한문 혼용체)로 글을 쓰고 싶었기 때문이기도 하고요. 韓國語(한국어), 英語(영어), 日本語(일본어), 아니면 漢文(한문)으로도 말을 걸어주세요!

logtape.org

LogTape

Unobtrusive logging library with zero dependencies—library-first design for Deno, Node.js, Bun, browsers, and edge functions

@tatmius@vivaldi.net

writings.hongminhee.org/2026/0

>私は自分のコードがLLM訓練に使われることを望んでいる。望んでいないのは、その訓練によってAI企業の私有財産となるプロプライエタリなモデルが作られることだ。

とてもいい文章だった。
まぁ、自分はフルスクラッチで良いOSSを作れるような技術力はなく、LLMにおんぶにだっこ状態なので、あんまり何かを言う権利は無いけど。

今のOSS、詳しくは知らんけど、多くの人は本業があって、その稼ぎでご飯を食べながらcontributeして成立していると思っているので、じゃあ仮にLLMのモデル公開まで含めたライセンシングになったとき、そのLLMのコストは持続可能な形でどこから出るべきなんだろうか?と思った(オープンなLLMモデルも、戦略としてオープンにしてるけど、かなりの額の赤字を垂れ流してると思うので)。

writings.hongminhee.org

F/OSSの唯物史観——LLMを拒絶するのではなく、取り戻すべきだ

@cleder@hachyderm.io

Instead of trying to prevent LLM training on our code, we should be demanding that the models themselves be freed.

I want my code to be used for LLM training. What I don't want is for that training to produce proprietary models that become the exclusive property of AI corporations. The problem isn't the technology or even the training process itself. The problem is the enclosure of the commons, the privatization of collective knowledge, the one-way flow of value from the many to the few.

This isn't a new problem. It's the same problem FLOSS has always fought, just wearing new clothes.

writings.hongminhee.org/2026/0

writings.hongminhee.org

Histomat of F/OSS: We should reclaim LLMs, not reject them

A few days ago, I came across a blog post titled On FLOSS and training LLMs that articulates a growing frustration within the free and open source software…

@thisismissem.social@bsky.brid.gy

The really cool thing about this new architecture is that it can enable Client to Server architecture for AP with fedify (maybe vocab packages could be used in the browser too!)

@smallcircles@social.coop · Reply to 🫧 socialcoding..

@david_megginson @ben

Btw, just found the v2 release announcement of @fedify and that is a prime example on how, on the grassroots environment end of the spectrum we can maneuvre into better territory.

Kudos to the developers. Handing people tools they need to focus on solutions, and build without getting thrown into deep on-the-wire impl detail reeds to worry about.

That is the positive side of the equation. There's not only a big uptick in interest for the i.e. client-to-server, which offers new opportunity to correct course. But also are there more projects focused on robust tool and library support for the 'Solution developer' stakeholder.

In the revamp of the delightful commons initiative, made possible with support of @nlnet I emphasized all these projects, while I de-emphasized the apps that are already doing good for themself, but contribute to further divergence from open standards.

delightful.coding.social

hollo.social/@fedify/019c8521-

hollo.social

**Fedify 2.0.0 is here!** Thi…

**Fedify 2.0.0 is here!** This is the biggest release in Fedify's history. Here are the highlights: - **Modular architecture** — The monolithic `@fedify/fedify` package has been broken up into focused, independent packages: `@fedify/vocab`, `@fedify/vocab-runtime`, `@fedify/vocab-tools`, `@fedify/webfinger`, and more. Smaller bundles, cleaner imports, and the ability to extend ActivityPub with custom vocabulary types. - **Real-time debug dashboard** — The new `@fedify/debugger` package gives you a live dashboard at `/__debug__/` showing all your federation traffic: traces, activity details, signature verification, and correlated logs. Just wrap your `Federation` object and you're done. - **ActivityPub relay support** — First-class relay support via `@fedify/relay` and the `fedify relay` CLI command. Supports both Mastodon-style and LitePub-style relay protocols (FEP-ae0c). - **Ordered message delivery** — The new `orderingKey` option solves the “zombie post” problem where a `Delete` arrives before its `Create`. Activities sharing the same key are guaranteed to be delivered in FIFO order. - **Permanent failure handling** — `setOutboxPermanentFailureHandler()` lets you react when a remote inbox returns 404 or 410, so you can clean up unreachable followers instead of retrying forever. Other changes include content negotiation at the middleware level, `@fedify/lint` for shared linting rules, `@fedify/create` for quick project scaffolding, CLI config files, native Node.js/Bun CLI support, and many bug fixes. This release includes significant contributions from Korea's OSSCA participants. Huge thanks to everyone involved! This is a major release with breaking changes—please check the migration guide before upgrading. Full release notes: https://github.com/fedify-dev/fedify/discussions/580 #Fedify #ActivityPub #fediverse #fedidev #TypeScript

"Fedify 2.0.0 está aqui!

Esta é a maior atualização da história do Fedify. Destaques:

**Arquitetura modular** – O pacote monolítico `@fedify/fedify` foi dividido em pacotes independentes e focados: `@fedify/vocab`, `@fedify/vocab-runtime`, `@fedify/vocab-tools`, `@fedify/webfinger` e outros. Pacotes menores, imports mais limpos e a possibilidade de estender o ActivityPub com tipos de vocabulário personalizados.

**Painel de depuração em tempo real** – O novo pacote `@fedify/debugger` oferece um dashboard ao vivo em `/__debug__/` que mostra todo o tráfego de federação: traces, detalhes das atividades, verificação de assinaturas e logs correlacionados. Basta envolver seu objeto `Federation` e pronto.

**Suporte a relay do ActivityPub** – Suporte nativo a relays via `@fedify/relay` e o comando CLI `fedify relay`. Compatível com os protocolos Mastodon-style e LitePub-style (FEP-ae0c).

**Entrega ordenada de mensagens** – A nova opção `orderingKey` resolve o problema do "post zumbi", quando um `Delete` chega antes do seu `Create`. Atividades com a mesma chave são entregues garantidamente na ordem FIFO.

**Tratamento de falhas permanentes** – `setOutboxPermanentFailureHandler()` permite reagir quando uma inbox remota retorna 404 ou 410, possibilitando limpar seguidores inacessíveis em vez de tentar reenviar indefinidamente.

Outras novidades incluem negociação de conteúdo no nível do middleware, `@fedify/lint` para regras compartilhadas de linting, `@fedify/create` para scaffolding rápido de projetos, arquivos de configuração para a CLI, suporte nativo à CLI em Node.js/Bun e diversos fixes de bugs.

Esta versão conta com contribuições significativas de participantes do OSSCA da Coreia. Agradecemos imensamente a todos envolvidos!

Trata-se de uma release major com breaking changes. Consulte o guia de migração antes de atualizar.

Notas completas da release: github.com/fedify-dev/fedify/d

"

@fediverse @tecnologia @academicos @internet (pode seguir para acompanhar os assuntos ou marcar para amplificar a postagem até no tb)

@fedify hollo.social/@fedify/019c8521-

hollo.social

**Fedify 2.0.0 is here!** Thi…

**Fedify 2.0.0 is here!** This is the biggest release in Fedify's history. Here are the highlights: - **Modular architecture** — The monolithic `@fedify/fedify` package has been broken up into focused, independent packages: `@fedify/vocab`, `@fedify/vocab-runtime`, `@fedify/vocab-tools`, `@fedify/webfinger`, and more. Smaller bundles, cleaner imports, and the ability to extend ActivityPub with custom vocabulary types. - **Real-time debug dashboard** — The new `@fedify/debugger` package gives you a live dashboard at `/__debug__/` showing all your federation traffic: traces, activity details, signature verification, and correlated logs. Just wrap your `Federation` object and you're done. - **ActivityPub relay support** — First-class relay support via `@fedify/relay` and the `fedify relay` CLI command. Supports both Mastodon-style and LitePub-style relay protocols (FEP-ae0c). - **Ordered message delivery** — The new `orderingKey` option solves the “zombie post” problem where a `Delete` arrives before its `Create`. Activities sharing the same key are guaranteed to be delivered in FIFO order. - **Permanent failure handling** — `setOutboxPermanentFailureHandler()` lets you react when a remote inbox returns 404 or 410, so you can clean up unreachable followers instead of retrying forever. Other changes include content negotiation at the middleware level, `@fedify/lint` for shared linting rules, `@fedify/create` for quick project scaffolding, CLI config files, native Node.js/Bun CLI support, and many bug fixes. This release includes significant contributions from Korea's OSSCA participants. Huge thanks to everyone involved! This is a major release with breaking changes—please check the migration guide before upgrading. Full release notes: https://github.com/fedify-dev/fedify/discussions/580 #Fedify #ActivityPub #fediverse #fedidev #TypeScript

@kopper@not-brain.d.on-t.work · Reply to Fedify: ActivityPub server framework
@fedify
Modular architecture — The monolithic @fedify/fedify package has been broken up into focused, independent packages:
woo! that's excellent news! i had a handful of (not currently maintained or used) libraries i wrote myself (codeberg.org/outpost/ts-libs) because all the alternatives either did too much (fedify before this) or weren't that great (the existing http signature library does not do typescript from what i can tell)

having these building blocks without the opinionated framework on top is a great step in enabling flexibility in system design without making everyone reinvent the wheel and get it wrong, excited to see this!

codeberg.org

ts-libs

small TypeScript libraries for ActivityPub (and adjacent) purposes that do one job and do it... ok i guess? idk i can't judge their quality i wrote them

Fedify 2.0.0をリリースしました!

Fedify史上最大のリリースです。主な変更点をご紹介します:

  • モジュラーアーキテクチャ — これまでのモノリシックな@fedify/fedifyパッケージを、@fedify/vocab@fedify/vocab-runtime@fedify/vocab-tools@fedify/webfingerなど、独立したパッケージに分割しました。バンドルサイズの削減、インポートの整理に加え、カスタム語彙型によるActivityPubの拡張も可能になりました。
  • リアルタイムデバッグダッシュボード — 新しい@fedify/debuggerパッケージにより、/__debug__/パスにライブダッシュボードを表示できます。連合トラフィックのトレース、アクティビティの詳細、署名検証、ログまで一目で確認できます。既存のFederationオブジェクトをラップするだけで使えます。
  • ActivityPubリレーサポート@fedify/relayパッケージとfedify relayCLIコマンドで、リレーサーバーをすぐに立ち上げることができます。Mastodon方式とLitePub方式の両方に対応しています(FEP-ae0c)。
  • 順序保証メッセージ配信 — 新しいorderingKeyオプションにより、「ゾンビ投稿」問題を解決しました。DeleteCreateより先に到着してしまう問題がなくなります。同じキーを共有するアクティビティはFIFO順序が保証されます。
  • 永続的な配信失敗の処理setOutboxPermanentFailureHandler()で、リモートのインボックスが404や410を返した際に対応できるようになりました。到達不能なフォロワーの整理などが可能です。

その他にも、ミドルウェアレベルでのコンテンツネゴシエーション、@fedify/lint@fedify/create、CLI設定ファイル、ネイティブNode.js/Bun CLIサポート、多数のバグ修正などが含まれています。

今回のリリースには、韓国のOSSCA(オープンソースコントリビューションアカデミー)参加者の皆さんからの多大な貢献が含まれています。ご協力いただいた全ての方に感謝いたします!

破壊的変更を含むメジャーリリースです。アップグレード前にマイグレーションガイドを必ずご確認ください。

リリースノート全文: https://github.com/fedify-dev/fedify/discussions/580

github.com

Fedify 2.0.0: Modular architecture, debug dashboard, and relay support · fedify-dev/fedify · Discussion #580

Fedify is a TypeScript framework for building ActivityPub servers that participate in the fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation whil...

Fedify 2.0.0을 릴리스했습니다!

Fedify 역사상 가장 큰 릴리스입니다. 주요 변경 사항을 소개합니다:

  • 모듈형 아키텍처 — 기존의 단일 @fedify/fedify 패키지를 @fedify/vocab, @fedify/vocab-runtime, @fedify/vocab-tools, @fedify/webfinger 등 독립적인 패키지들로 분리했습니다. 번들 크기가 줄어들고, 임포트가 깔끔해지며, 커스텀 어휘 타입으로 ActivityPub을 확장할 수도 있습니다.
  • 실시간 디버그 대시보드 — 새로운 @fedify/debugger 패키지로 /__debug__/ 경로에 라이브 대시보드를 띄울 수 있습니다. 연합 트래픽의 트레이스, 액티비티 상세, 서명 검증, 로그까지 한눈에 확인할 수 있습니다. 기존 Federation 객체를 감싸기만 하면 됩니다.
  • ActivityPub 릴레이 지원@fedify/relay 패키지와 fedify relay CLI 명령어로 릴레이 서버를 바로 띄울 수 있습니다. Mastodon 방식과 LitePub 방식 모두 지원합니다(FEP-ae0c).
  • 순서 보장 메시지 전달 — 새로운 orderingKey 옵션으로 “좀비 포스트” 문제를 해결합니다. DeleteCreate보다 먼저 도착하는 문제가 더 이상 발생하지 않습니다. 같은 키를 공유하는 액티비티는 FIFO 순서가 보장됩니다.
  • 영구 전달 실패 처리setOutboxPermanentFailureHandler()로 원격 인박스가 404나 410을 반환할 때 대응할 수 있습니다. 도달 불가능한 팔로워를 정리하는 등의 처리가 가능합니다.

이 외에도 미들웨어 수준의 콘텐츠 협상, @fedify/lint, @fedify/create, CLI 설정 파일, 네이티브 Node.js/Bun CLI 지원, 다수의 버그 수정 등이 포함되어 있습니다.

이번 릴리스에는 한국 OSSCA (오픈소스 컨트리뷰션 아카데미) 참가자분들의 큰 기여가 담겨 있습니다. 참여해 주신 모든 분께 감사드립니다!

브레이킹 체인지가 포함된 메이저 릴리스입니다. 업그레이드 전에 마이그레이션 가이드를 꼭 확인해 주세요.

전체 릴리스 노트: https://github.com/fedify-dev/fedify/discussions/580

github.com

Fedify 2.0.0: Modular architecture, debug dashboard, and relay support · fedify-dev/fedify · Discussion #580

Fedify is a TypeScript framework for building ActivityPub servers that participate in the fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation whil...

Fedify 2.0.0 is here!

This is the biggest release in Fedify's history. Here are the highlights:

  • Modular architecture — The monolithic @fedify/fedify package has been broken up into focused, independent packages: @fedify/vocab, @fedify/vocab-runtime, @fedify/vocab-tools, @fedify/webfinger, and more. Smaller bundles, cleaner imports, and the ability to extend ActivityPub with custom vocabulary types.
  • Real-time debug dashboard — The new @fedify/debugger package gives you a live dashboard at /__debug__/ showing all your federation traffic: traces, activity details, signature verification, and correlated logs. Just wrap your Federation object and you're done.
  • ActivityPub relay support — First-class relay support via @fedify/relay and the fedify relay CLI command. Supports both Mastodon-style and LitePub-style relay protocols (FEP-ae0c).
  • Ordered message delivery — The new orderingKey option solves the “zombie post” problem where a Delete arrives before its Create. Activities sharing the same key are guaranteed to be delivered in FIFO order.
  • Permanent failure handlingsetOutboxPermanentFailureHandler() lets you react when a remote inbox returns 404 or 410, so you can clean up unreachable followers instead of retrying forever.

Other changes include content negotiation at the middleware level, @fedify/lint for shared linting rules, @fedify/create for quick project scaffolding, CLI config files, native Node.js/Bun CLI support, and many bug fixes.

This release includes significant contributions from Korea's OSSCA participants. Huge thanks to everyone involved!

This is a major release with breaking changes—please check the migration guide before upgrading.

Full release notes: https://github.com/fedify-dev/fedify/discussions/580

github.com

Fedify 2.0.0: Modular architecture, debug dashboard, and relay support · fedify-dev/fedify · Discussion #580

Fedify is a TypeScript framework for building ActivityPub servers that participate in the fediverse. It reduces the complexity and boilerplate typically required for ActivityPub implementation whil...

@hongminhee@hollo.social

아직도 私的(사적) 記錄物(기록물)에서 固有名詞(고유 명사)表記(표기)를 어떤 文字(문자)로 해야 할 지에 ()해 뾰족한 ()을 못 내렸다. 大原則(대원칙)은 한글 表記(표기)인데… 그게 언제나 可能(가능)한 건 아닌 것 같아서, 요즘에는 固有名詞(고유 명사)()原語(원어) 表記(표기)를 하고 있었지만, 그건 그거대로 不便(불편)하달까… 假令(가령) 러시아 人名(인명)을 그 原則(원칙)대로 적겠다고 키릴 文字(문자)로 적어버리면 大部分(대부분)讀者(독자)는 못 읽게 될 것 아닌가. 그런데 다 한글로 表記(표기)하자니 내 語學(어학) 水準(수준) 안에서 適切(적절)外來語(외래어) 表記(표기)를 찾아내지 못할 때도 많고 말이다.

@hongminhee@hollo.social

労働者が機械そのものと資本による機械の使用とを区別することを学ぶには、時間と経験を要した。

——マルクス

150年前のラッダイト運動に対するこの評価が、いまのLLM論争にそのまま当てはまると思っています。「完全な世界で唯物論的に行動すること——生産手段としてのLLMと社会的関係

writings.hongminhee.org

Acting materialistically in an imperfect world: LLMs as means of production and social relations

This is a follow-up to last month's Histomat of F/OSS: We should reclaim LLMs, not reject them . Cory Doctorow celebrated the sixth anniversary of Pluralistic…

勞働者(노働자)들이 機械(기계) 自體(자체)機械(기계)資本主義的(자본주의적) 適用(적용)區分(구분)하는 ()을 배우기까지는 時間(시간)經驗(경험)必要(필요)했다.

—마르크스

150() () 러다이트 運動(운동)()한 이 評價(평가)只今(지금) LLM 論爭(논쟁)에 그대로 適用(적용)된다고 생각합니다: 〈不完全(불완전)世上(세상)에서 唯物論的(유물론적)으로 行動(행동)하기: 生產(생산) 手段(수단)으로서의 LLM과 社會的(사회적) 關係(관계)〉(한글).

writings.hongminhee.org

불완전한 세상에서 유물론적으로 행동하기: 생산 수단으로서의 LLM과 사회적 관계

이 글은 지난 달에 쓴 F/OSS 史唯: 우리는 LLM을 거부할 게 아니라 되찾아 와야 한다 의 후속이다. Cory Doctorow가 Pluralistic 6주년 기념 글 에서 자신의 작업 흐름을 공개했다. 그는 매일 발행하는 기사를 올리기 전에, Ollama라는 오픈 소스 LLM을…

労働者が機械そのものと資本による機械の使用とを区別することを学ぶには、時間と経験を要した。

——マルクス

150年前のラッダイト運動に対するこの評価が、いまのLLM論争にそのまま当てはまると思っています。「完全な世界で唯物論的に行動すること——生産手段としてのLLMと社会的関係

writings.hongminhee.org

Acting materialistically in an imperfect world: LLMs as means of production and social relations

This is a follow-up to last month's Histomat of F/OSS: We should reclaim LLMs, not reject them . Cory Doctorow celebrated the sixth anniversary of Pluralistic…

勞働者(노働자)들이 機械(기계) 自體(자체)機械(기계)資本主義的(자본주의적) 適用(적용)區分(구분)하는 ()을 배우기까지는 時間(시간)經驗(경험)必要(필요)했다.

—마르크스

150() () 러다이트 運動(운동)()한 이 評價(평가)只今(지금) LLM 論爭(논쟁)에 그대로 適用(적용)된다고 생각합니다: 〈不完全(불완전)世上(세상)에서 唯物論的(유물론적)으로 行動(행동)하기: 生產(생산) 手段(수단)으로서의 LLM과 社會的(사회적) 關係(관계)〉(한글).

writings.hongminhee.org

불완전한 세상에서 유물론적으로 행동하기: 생산 수단으로서의 LLM과 사회적 관계

이 글은 지난 달에 쓴 F/OSS 史唯: 우리는 LLM을 거부할 게 아니라 되찾아 와야 한다 의 후속이다. Cory Doctorow가 Pluralistic 6주년 기념 글 에서 자신의 작업 흐름을 공개했다. 그는 매일 발행하는 기사를 올리기 전에, Ollama라는 오픈 소스 LLM을…

@hongminhee@hollo.social
@dekirisu@mastodon.social

Random question, but I wondered:

Do you use CAPSLOCK on a physical keyboard? :blobcatcoffee:

  • It's part of my muscle memory.6 (7%)
  • I use it regularly.5 (5%)
  • I use it sometimes.34 (37%)
  • No, I don't see the point of it.47 (51%)
@sabrinkmann@hachyderm.io

I have just completed the "Learning the Basics" and "Creating a Microblog" tutorials on @fedify. The Fediverse is very complicated. However, building the example application with Fedify is much simpler, and the tutorial was really good, with lots of examples and explanations of the basics. If you want to check it out, here's the link: fedify.dev/tutorial/microblog.

Thank you for creating it, and please consider following @hongminhee!

fedify.dev

Creating your own federated microblog | Fedify

In this tutorial, we will build a small microblog that implements the ActivityPub protocol, similar to Mastodon or Misskey, using Fedify, an ActivityPub server framework.

@blog@shkspr.mobi

Internationalise The Fediverse

shkspr.mobi/blog/2024/02/inter

We live in the future now. It is OK to use Unicode everywhere.

It seems bizarre to me that modern Internet services sometimes "forget" that there's a world outside the Anglosphere. Some people have the temerity to speak foreign languages! And some of those languages have accents on their letters!! Even worse, some don't use English letters at all!!!

A decade ago, I was miffed that GitHub only supported some ASCII characters in its project names. There's no technical reason why your repo can't be called "ഹലോ വേൾഡ്".

Similarly, I'm frustrated that Mastodon (the largest ActivityPub service) doesn't allow Unicode usernames and has resisted efforts to change.

So I built a small ActivityPub server which publishes content from an Actor called @你好@i18n.viii.fi - it is only a demo account, but it works!

Some ActivityPub clients report that they are able to follow it and receive messages from it. Others - like Mastodon - simply can't see anything from it. Take a look at the replies on Mastodon to see which services work. You can also see some of its posts on the Fediverse.

What Does The Fox Spec Say?

The ActivityPub specification says:

Building an international base of users is important in a federated network. Internationalization

I can't find anything in the specifications which limits what languages a username can be written in. But there are a few clues scattered about.

The user's @ name is defined by preferredUsername which is:

A short username which may be used to refer to the actor, with no uniqueness guarantees. 4.1 Actor objects

There's nothing in there about what scripts it can contain. However, later on, the spec says:

Properties containing natural language values, such as name, preferredUsername, or summary, make use of natural language support defined in ActivityStreams. 4. Actors

So it is expected that a preferred username could be written in multiple scripts. Which implies that the default need not be limited to A-Z0-9.

The ActivityStreams specification talks about language mapping.

Finally, the ActivityPub specification has some examples on non-Latin text in names.

So, I think that it is acceptable for usernames to be written in a variety of non-Latin scripts.

But What About...?

There are usually a few objections to "Unicode Everywhere" zealots like me. I'd like to forestall any arguments.

What about homograph attacks?

Well, what about them? ASCII has plenty of similar looking characters. I doubt most people would notice when a capital i is replaced by a lower L - and vice-versa. Similarly the kerning issue of an r and n looking like an m is well known. Are mixed language homographs more dangerous? I don't think so.

What if people make names that can't be typed?

Well, what if they do? Maybe not being found by people who can't type your language is a feature, not a bug. But, anyway, clients can let users search for other people, or copy and paste their names.

What about weird "Zalgo" text?

It is up to a client to decide how they want to render text input. The "problems" of strange Unicode combinations are well known. This is not a hard computer-science problem.

What about bi-directional text?

The spec makes clear this is allowed.

Do people even want a username in their own script?

I have no evidence for this. But I bet you'd get pretty frustrated if you had to switch keyboard just to type your own name, wouldn't you? In any case, why can't I have a username of @😉

What's Next?

If you build ActivityPub software, give some thought to the billions of people who don't have names which easily fit into ASCII.

If your software can see @你好@i18n.viii.fi and its posts, please let me know.

@mcc@mastodon.social · Reply to mcc

Somebody linked me RFC 7565, which linked to RFC7564, and if that's the place to look this appears to be the list of disallowed characters in a Fediverse username, and I'm cracking up because it's *mostly* stuff you'd expect, except the very first category of banned characters, specially, is "pre-1700 Korean characters".

The fediverse is welcome to all. EXCEPT KOREAN TIME TRAVELERS. Did you just wake up from being frozen in ice during the Joseon dynasty? The IETF is targeting you PERSONALLY

4.2.3.  Disallowed

   o  Old Hangul Jamo characters, i.e., the OldHangulJamo ("I") category
      defined under Section 9.9.

   o  Control characters, i.e., the Controls ("L") category defined
      under Section 9.12.

   o  Ignorable characters, i.e., the PrecisIgnorableProperties ("M")
      category defined under Section 9.13.

   o  Space characters, i.e., the Spaces ("N") category defined under
      Section 9.14.

   o  Symbol characters, i.e., the Symbols ("O") category defined under
      Section 9.15.

   o  Punctuation characters, i.e., the Punctuation ("P") category
      defined under Section 9.16.

   o  Any character that has a compatibility equivalent, i.e., the
      HasCompat ("Q") category defined under Section 9.17.  These code
      points are disallowed even if they would otherwise be valid
      according to the property-based rules specified in the previous
      section.

   o  Letters and digits other than the "traditional" letters and digits
      allowed in IDNs, i.e., the OtherLetterDigits ("R") category
      defined under Section 9.18.
ALT text

4.2.3. Disallowed o Old Hangul Jamo characters, i.e., the OldHangulJamo ("I") category defined under Section 9.9. o Control characters, i.e., the Controls ("L") category defined under Section 9.12. o Ignorable characters, i.e., the PrecisIgnorableProperties ("M") category defined under Section 9.13. o Space characters, i.e., the Spaces ("N") category defined under Section 9.14. o Symbol characters, i.e., the Symbols ("O") category defined under Section 9.15. o Punctuation characters, i.e., the Punctuation ("P") category defined under Section 9.16. o Any character that has a compatibility equivalent, i.e., the HasCompat ("Q") category defined under Section 9.17. These code points are disallowed even if they would otherwise be valid according to the property-based rules specified in the previous section. o Letters and digits other than the "traditional" letters and digits allowed in IDNs, i.e., the OtherLetterDigits ("R") category defined under Section 9.18.

@rmdes@mstdn.social