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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,085 following1,891 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

@hongminhee@hollo.social

This brings back memories. Before Python had async/await, before asyncio became standard, I was happily writing concurrent code with gevent. I actually preferred it.

The reason was simple: no function color problem. With async/await, you split the world into two kinds of functions—ones that block by default and ones that don't. You have to mark the latter with async and remember to await them. With gevent, everything just blocks by default, and you spawn when you need concurrency. It's the same mental model as multithreading, just lighter. Project Loom in Java does something similar, though the technical details differ.

I sometimes wonder what Python would look like if it had embraced gevent-style coroutines in CPython instead of adding async/await. Or if Stackless Python had been accepted upstream. Maybe async programming would be more approachable today.

The explicit await keyword gives you visibility into where context switches can happen, sure. But in practice, I/O points are obvious even without the keyword—you're reading from a socket, querying a database, making an HTTP request. The explicitness doesn't really prevent race conditions or timing bugs. Meanwhile, function colors infect everything. One async library forces your entire call stack to be async. You end up maintaining both sync and async versions of the same code, or the ecosystem just splits in two.

With gevent, there's no such problem. You just call functions. Spawn them if you want concurrency, call them normally if you don't. Go's goroutines and Project Loom are popular for good reasons—they make concurrency accessible without the cognitive overhead.

Python's choice is history now, and there's no going back. But looking at how things turned out, I can't help but think the more practical path was right there, and we walked past it.

mas.to

David Lord :python: (@davidism@mas.to)

Did you know you can get similar concurrency as asyncio/ASGI in Flask, by using gevent? It's been possible as long as Flask has existed! Turns out we never documented it, so how would anyone have known? Fixed that https://flask.palletsprojects.com/en/stable/gevent/ #Python #Flask #gevent

@heardark.bsky.social@bsky.brid.gy

사상(메시지)가 없는 작품은 없습니다. 어떤 작품이 아무런 사상이나 의도가 없어 보인다면 기존의 지배적인 질서에 너무나 완벽하게 순응하고 있기 때문입니다. 단지 사유를 멈추게 하는 그런 사상과. 사유를 시작하게 하는 사상이 있고 보통 후자를 메시지(사상)가 있다고 말할 뿐이죠. 작품에 사상이 없어야 한다 라는 주장은 사실 '지배적인 사상에 저항하지 마라' 라는 강력한 이데올로기(사상)적 명령입니다.

@hongminhee@hollo.social

This brings back memories. Before Python had async/await, before asyncio became standard, I was happily writing concurrent code with gevent. I actually preferred it.

The reason was simple: no function color problem. With async/await, you split the world into two kinds of functions—ones that block by default and ones that don't. You have to mark the latter with async and remember to await them. With gevent, everything just blocks by default, and you spawn when you need concurrency. It's the same mental model as multithreading, just lighter. Project Loom in Java does something similar, though the technical details differ.

I sometimes wonder what Python would look like if it had embraced gevent-style coroutines in CPython instead of adding async/await. Or if Stackless Python had been accepted upstream. Maybe async programming would be more approachable today.

The explicit await keyword gives you visibility into where context switches can happen, sure. But in practice, I/O points are obvious even without the keyword—you're reading from a socket, querying a database, making an HTTP request. The explicitness doesn't really prevent race conditions or timing bugs. Meanwhile, function colors infect everything. One async library forces your entire call stack to be async. You end up maintaining both sync and async versions of the same code, or the ecosystem just splits in two.

With gevent, there's no such problem. You just call functions. Spawn them if you want concurrency, call them normally if you don't. Go's goroutines and Project Loom are popular for good reasons—they make concurrency accessible without the cognitive overhead.

Python's choice is history now, and there's no going back. But looking at how things turned out, I can't help but think the more practical path was right there, and we walked past it.

mas.to

David Lord :python: (@davidism@mas.to)

Did you know you can get similar concurrency as asyncio/ASGI in Flask, by using gevent? It's been possible as long as Flask has existed! Turns out we never documented it, so how would anyone have known? Fixed that https://flask.palletsprojects.com/en/stable/gevent/ #Python #Flask #gevent

@ploum@mamot.fr

Idea: "The unbillionaires list", to promote contributors to the common.

A collaborative website that lists people who created something useful to millions but purposedly choose to put in in the common and didn’t earn money directly from it (or not as much as expected)

Besides those listed in ploum.net/2026-01-22-why-no-eu

I would add Henri Dunant (Red Cross, he died in great poverty), Didier Pittet (who invented the hydroalcoolic gel we now use everyday).

ploum.net

Why there’s no European Google?

Why there’s no European Google? par Ploum - Lionel Dricot.

@hongminhee@hollo.social

After months of struggling with the “zombie post” issue on Hackers' Pub—where deleted posts wouldn't disappear from remote servers—I had a sudden hypothesis today. As I dug into it, I realized it's a structural issue with Fedify's MessageQueue system: Create(Note) and Delete(Note) activities can be delivered out of order, causing remote instances to receive Delete(Note) before Create(Note).

The fix will likely require API changes, so this will probably need to wait for 2.0.0.

github.com

Activities can be delivered out of order, causing federation issues · Issue #536 · fedify-dev/fedify

Problem ActivityPub activities can be delivered out of order when they relate to the same object, causing federation issues. Specifically, when a post is created and quickly deleted, the Delete act...

@wakest@hackers.pub

A hand picked list of fediverse events put together by @liaizon, if you want an event added to this list please reply to this post, or you can DM me.

UPCOMING EVENTS:

April 28th–30th, online

April 29th, Montréal, CA

May 4th, Berlin, DE

May 4th, Hamburg, DE

May 27, Montréal, CA

July 8th–12th, Germany

August 4th–9th, Gedelitz, Germany

Aug 6th–9th, Vancouver, CA

Aug 8th–9th, Taipei, TW

September 11th to 13th, Berlin, DE

COMPLETED EVENTS:

Jan 26th, online

Jan 31st, Brussels

February 1st, Berlin

February 1st, Brussels

February 3rd, Berlin

February 4th + 5th, London

February 6th, online

February 7th and 8th, online

February 11th, Edmonton

February 11th, online

February 14th, Amsterdam

February 15th, Murcia

February 17th, Seattle

February 22nd, Vancouver

February 24th, Montreal

February 24th, Berlin

February 25th, Montreal

February 28th, Alicante

February 28th, Raleigh

February 28th, Cardiff

February 28th, Rome

March 2nd, online

March 1st, Lisbon

March 1st, Bielefeld

March 5th, online

March 19th + 20th, Amsterdam

March 25, Montréal, CA

March 28th, Seoul, KR

moim.live

Fedidev KR 스프린트 세 번째 모임 — FediDev KR (@fedidevkr@moim.live)

[주의: 임시방편의 글이라서 변동이 있을 수 있습니다] 한국 연합우주 개발자 모임(FediDev KR)은 연합우주(fediverse) 생태계를 더욱 풍성하게 만들기 위해 다양한 개발자들이 모여 스프린트 모임을 진행하는 커뮤니티입니다. 이 모임은 비정기적으로 개최되며, 모든 기여자들이 각자의 방식으로 생태계에 기여할 수 있는 열린 공간입니다. 지금까지 진행된 프로젝트 - Hollo: 페디버스 기반의 1인용 마이크로 블로그 서비스 - Chamsae: 메시징에 특화된 ActivityPub 기반 서비스 - Fedify: ActivityPub 기반의 서비스를 쉽게 개발할 수 있도록 도와주는 라이브러리 - HackersPub : ActivityPub 기반의 블로깅 서비스 - Moim.live : ActivityPub 기반의 모임 개최 및 체크인 SNS 이 외에도 많은 개발자들이 각자의 아이디어로 다양한 프로젝트에 기여하고 있습니다. 스프린트 모임에서는 연합우주 생태계를 확장하고 발전시키기 위한 다양한 활동이 이루어집니다. 새로운 서비스를 개발하거나, 응용 프로그램을 제작하고, 번역에 기여하는 등, 기여 방식은 형식에 구애받지 않고 자유롭게 선택할 수 있습니다. 누구나 자신의 역량에 맞는 방법으로 참여할 수 있습니다. 모임은 서울특별시 성동구 상원길 26, 뚝섬역 5번 출구 근처 어딘가에 있는 튜링의 사과에서 진행합니다. 일정은 3월 중순 어딘가에, 모여서 각자 편하게 기여하다가 가시면 됩니다. 처음오는 분들이셔도 좋습니다. 몸만 오시면 됩니다. 비용은 튜링의 사과 이용료만 챙겨 주시면 돼요. 감사합니다.

@moreal@hackers.pub

Fedify로 ActivityPub 객체 룩업해서 한 페이지로 만드는거 만들어봤는데 생각해보면 그냥 Mastodon처럼 글자 제한이 작은 쪽만 문제라서 Mastodon API 써서 하는게 좋았겠다는 생각이 들고 그리고 이미 그런 구현체는 있었다 (당연). 번역해서 보려고 모 서비스에 넘기려던 글은 타임아웃에 걸리는지 안 넘어가지는데 내일 마저 봐야지..

https://ap-thread-reader.fly.dev/

@hongminhee@hollo.social

In cultures like Korea and Japan, taking off your shoes at home is a long-standing tradition. I'm curious about how this practice varies across different regions and households in the fediverse.

How does your household handle shoes indoors?

  • Everyone takes shoes off (strict).239 (64%)
  • Family takes shoes off; guests keep them on.96 (26%)
  • Everyone wears shoes/outdoor footwear.37 (10%)
@thisismissem@hachyderm.io

I'll hopefully be here:

social.wake.st

wakest ⁂ (@liaizon@wake.st)

Attached: 1 image On February 3rd (very soon!) I am hosting another [BERLIN FEDERATED NETWORK EXPLORATION CIRCLE] at @offline@autonomous.zone. It's a chance to meet and talk with people who are interested in the #fediverse & networking & exploration & circ---you get the idea. We have the pleasure of having @hongminhee@hollo.social who will give a presentation about @fedify@hollo.social "an opinionated #ActivityPub framework for TypeScript that handles the protocol plumbing" It is an open free event and everyone is welcome!

On February 3rd (very soon!) I am hosting another [BERLIN FEDERATED NETWORK EXPLORATION CIRCLE] at @offline. It's a chance to meet and talk with people who are interested in the & networking & exploration & circ---you get the idea.

We have the pleasure of having @hongminhee who will give a presentation about @fedify "an opinionated framework for TypeScript that handles the protocol plumbing"

It is an open free event and everyone is welcome!

BERLIN FEDERATED NETWORK EXPLORATION CIRCLE
BEFENEC? BEFENEEXCI?
we have 洪 民憙 (Hong Minhee) all the way here from 
Korea with a presentation about Fedify, a fediverse
library they have been building that is now powering
the federation of things like Ghost and Hackers' Pub

come join us offline
at offline
Lichtenrader Str. 49
Berlin
ALT text

BERLIN FEDERATED NETWORK EXPLORATION CIRCLE BEFENEC? BEFENEEXCI? we have 洪 民憙 (Hong Minhee) all the way here from Korea with a presentation about Fedify, a fediverse library they have been building that is now powering the federation of things like Ghost and Hackers' Pub come join us offline at offline Lichtenrader Str. 49 Berlin

On February 3rd (very soon!) I am hosting another [BERLIN FEDERATED NETWORK EXPLORATION CIRCLE] at @offline. It's a chance to meet and talk with people who are interested in the & networking & exploration & circ---you get the idea.

We have the pleasure of having @hongminhee who will give a presentation about @fedify "an opinionated framework for TypeScript that handles the protocol plumbing"

It is an open free event and everyone is welcome!

BERLIN FEDERATED NETWORK EXPLORATION CIRCLE
BEFENEC? BEFENEEXCI?
we have 洪 民憙 (Hong Minhee) all the way here from 
Korea with a presentation about Fedify, a fediverse
library they have been building that is now powering
the federation of things like Ghost and Hackers' Pub

come join us offline
at offline
Lichtenrader Str. 49
Berlin
ALT text

BERLIN FEDERATED NETWORK EXPLORATION CIRCLE BEFENEC? BEFENEEXCI? we have 洪 民憙 (Hong Minhee) all the way here from Korea with a presentation about Fedify, a fediverse library they have been building that is now powering the federation of things like Ghost and Hackers' Pub come join us offline at offline Lichtenrader Str. 49 Berlin

After deep thinking, I've designed a satisfying solution and broke it down into 4 issues:

  • Annotations system (#83): Low-level primitive that allows passing runtime context to parsers via parse() options

  • SourceContext interface (#85): High-level system for composing multiple data sources (env, config, etc.) with clear priority ordering via runWith()

  • @optique/config (#84): Configuration file support with Standard Schema validation (Zod, Valibot, etc.)

  • @optique/env (#86): Environment variables support with automatic type conversion

The key insight: use a two-pass parsing approach where the first pass extracts the config file path, then the second pass runs with config data injected as annotations. All sources can be composed together with runWith([envContext, configContext]) for automatic priority handling: CLI > environment variables > configuration file > default values.

github.com

Add `@optique/env` package for environment variable support · Issue #86 · dahlia/optique

Motivation CLI applications often need to support configuration via environment variables, following the common pattern where environment variables provide defaults between CLI arguments and config...

@internetsdairy@mastodon.art

My wife picked up a zine that is advertising the fediverse.

A lofi zine ad in green reading: "Fediverse Punk Month. Hey, punk! Fuck corporate social media. Spend January on the Fediverse. Alternative decentralised, open, not for profit DIY social media. allpunkspleaseleave.meta.com " There is a sketch of a calendar page for January and a scared looking blonde punk kid running away a large sheet of bubble wrap or something.
ALT text

A lofi zine ad in green reading: "Fediverse Punk Month. Hey, punk! Fuck corporate social media. Spend January on the Fediverse. Alternative decentralised, open, not for profit DIY social media. allpunkspleaseleave.meta.com " There is a sketch of a calendar page for January and a scared looking blonde punk kid running away a large sheet of bubble wrap or something.

@hollo@hollo.social

Hollo 0.7.0: Advanced search, faster notifications, and improved client compatibility

It's been a while since our last release, and we're excited to finally share Hollo 0.7.0 with you. This release brings a lot of improvements that we've been working on over the past months—from powerful new search capabilities to significant performance gains that should make your daily Hollo experience noticeably snappier.

Let's dive into what's new.

Highlights

Search gets a major upgrade

One of the most requested features has been better search, and we're happy to deliver. Hollo now supports Mastodon-compatible search operators, so you can finally filter your searches the way you've always wanted:

  • has:media/has:poll — Find posts with attachments or polls
  • is:reply/is:sensitive — Filter by post type
  • language:xx — Search in a specific language
  • from:username — Find posts from a specific person
  • mentions:username — Find posts mentioning someone
  • before:YYYY-MM-DD/after:YYYY-MM-DD — Search within a date range
  • Combine them with - for negation, OR for alternatives, and parentheses for grouping

For example, (from:alice OR from:bob) has:poll -is:reply will find polls from Alice or Bob that aren't replies.

We've also made search much faster. URL and handle searches that used to take 8–10 seconds now complete in about 1.4 seconds—an 85% improvement.

Notifications are faster than ever

We completely rebuilt how notifications work under the hood. Instead of computing notifications on every request, Hollo now stores them as they happen. The result? About 24% faster notification loading (down from 2.5s to 1.9s).

On top of that, we've implemented Mastodon's v2 grouped notifications API, which groups similar notifications together server-side. This means less work for your client app and a cleaner notification experience.

Everything loads faster with compression

All API responses are now compressed, reducing their size by 70–92%. Some real numbers: notification responses dropped from 767KB to 58KB, and home timeline responses went from 91KB to 14KB. You'll notice faster load times, especially on slower connections.

Quote notifications

When someone quotes your post, you'll now get a notification about it. And if the original author edits a post you've quoted, you'll be notified too. These are the new quote and quoted_update notification types from Mastodon 4.5.0.

Background import processing

Importing your data (follows, lists, muted/blocked accounts, bookmarks) used to block the entire request until it finished. Now imports run in the background, and you can watch the progress in real-time. Much better for large imports. Thanks to Juyoung Jung for implementing this in #295.

Other improvements

  • Upgraded Fedify to 1.10.0.
  • Instance API responses now include proper thumbnails, actual stats, and correct values for max_featured_tags and max_pinned_statuses. Thanks to Juyoung Jung for this improvement in #296.
  • The notifications API now includes a prev link in pagination headers, which was tracked in #312.
  • Replaced the deprecated fluent-ffmpeg package with direct ffmpeg calls. If video thumbnail generation fails, you'll get a default image instead of an error. Thanks to Peter Jeschke for this fix in #333.

Bug fixes

  • Emelia Smith fixed an issue where POST /api/v1/statuses and PUT /api/v1/statuses/:id were rejecting FormData requests in #171.
  • Fixed log files writing multiple JSON objects on a single line, as reported in #174.
  • Lee ByeongJun fixed POST /api/v1/statuses rejecting null values in optional fields in #179.
  • Juyoung Jung fixed OAuth token endpoint issues with clients that send credentials in both the header and body in #296.
  • Fixed OAuth token endpoint failing to parse requests from clients that don't send a Content-Type header.
  • Peter Jeschke fixed notification endpoints returning 500 errors for unknown notification types in #334.
  • Fixed /api/v2/search not respecting the limit parameter, as reported in #210.

Upgrading

Docker

Pull the latest image and restart your container:

docker pull ghcr.io/fedify-dev/hollo:0.7.0
docker compose up -d

Railway

Go to your Railway dashboard, select your Hollo service, and click Redeploy from the deployments menu.

Manual installation

Pull the latest code and reinstall dependencies:

git pull origin stable
pnpm install
pnpm run prod

Thank you to our contributors

This release wouldn't have been possible without the contributions from our community. A big thank you to Emelia Smith (@thisismissem), Juyoung Jung (@quadr), Lee ByeongJun (@joonnot), and Peter Jeschke (@peter@jeschke.dev) for their pull requests and bug reports. We really appreciate your help in making Hollo better!

github.com

Search queries should have limits · Issue #210 · fedify-dev/hollo

Context: #208 (comment)

We've published an AI usage policy for the Fedify project, inspired by Ghostty's approach.

TL;DR: AI tools are welcome, but contributions must disclose AI usage, be tied to accepted issues, and be human-verified. Maintainers are exempt.

https://github.com/fedify-dev/fedify/blob/main/AI_POLICY.md

github.com

fedify/AI_POLICY.md at main · fedify-dev/fedify

ActivityPub server framework in TypeScript. Contribute to fedify-dev/fedify development by creating an account on GitHub.

@kosui@blog.kosui.me · Reply to kosui

ioriとFedify

ioriがActivityPubをサポートできているのは、間違いなくFedifyのおかげである。

自分でActivityPubの仕様を一から実装しようとしたことはこれまでに何度もあるが、以下の問題にぶつかり、いつも挫折してきた。

  • データモデリングの対象が広範囲に及ぶ
    • Vocabularyが多岐にわたる
    • オブジェクトタイプやアクタータイプが多い
  • ネットワーク通信の仕様が複雑
    • HTTPシグネチャチャの実装
    • JSON-LDのコンテキスト解決

私が本当に提供したいのはナレッジ管理サービスであり、ActivityPubの実装ではない。Fedifyはこれらの複雑さを抽象化し、開発者がビジネスロジックに集中できるようにしてくれる。

@hongminhee@hollo.social

Ghostty has a really well-balanced AI usage policy. It doesn't ban AI tools outright, but it sets clear boundaries to prevent the common problems we're seeing in open source contributions these days.

What stands out is that it's not about being anti-AI. The policy explicitly says the maintainers use AI themselves. The rules are there because too many people treat AI as a magic button that lets them contribute without actually understanding or testing what they're submitting. The requirement that AI-generated PRs must be for accepted issues only, fully tested by humans, and properly disclosed feels like basic respect for maintainers' time.

I'm thinking of adopting something similar for my projects, even though they're not at Ghostty's scale yet. Better to set expectations early.

github.com

ghostty/AI_POLICY.md at 5de4ff3b9857e1a8b216649908dfbce7ddd51bcb · ghostty-org/ghostty

👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration. - ghostty-org/ghostty

@julian@fietkau.social · Reply to @reiver ⊼ (Charles) :batman:

@reiver From personal experience, at the very least anything based on @fedify can represent multiple keys for an actor.

FEP-521a has a list of implementations: codeberg.org/fediverse/fep/src

On changing keys, I used to think this was impossible, but then I saw Claire mention that Mastodon will simply accept a changed key as long as the valid updated actor can be fetched from its canonical URI. So I guess that might work straightforwardly?

codeberg.org

Cookie monster!

@hongminhee@hollo.social

Ghostty has a really well-balanced AI usage policy. It doesn't ban AI tools outright, but it sets clear boundaries to prevent the common problems we're seeing in open source contributions these days.

What stands out is that it's not about being anti-AI. The policy explicitly says the maintainers use AI themselves. The rules are there because too many people treat AI as a magic button that lets them contribute without actually understanding or testing what they're submitting. The requirement that AI-generated PRs must be for accepted issues only, fully tested by humans, and properly disclosed feels like basic respect for maintainers' time.

I'm thinking of adopting something similar for my projects, even though they're not at Ghostty's scale yet. Better to set expectations early.

github.com

ghostty/AI_POLICY.md at 5de4ff3b9857e1a8b216649908dfbce7ddd51bcb · ghostty-org/ghostty

👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration. - ghostty-org/ghostty