Damus
洪 民憙 (Hong Minhee) :nonbinary: profile picture
洪 民憙 (Hong Minhee) :nonbinary:
@洪 民憙 (Hong Minhee) :nonbinary:

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 #TypeScript, #Haskell, #Rust, & #Python. They/them.

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

#國漢文混用體 #한국어 (#朝鮮語) #English #日本語

Relays (1)
  • wss://relay.ditto.pub – read & write

Recent Notes

愛知 philo · 8w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqdlt8skfq67hwt8fycg65a8jlm82j9j9zg8su76me567f5htzpxgsu2zdus Great job, and thank you for coming to COSCUP! I want to express my grat...
wakest ⁂ · 8w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqdlt8skfq67hwt8fycg65a8jlm82j9j9zg8su76me567f5htzpxgsu2zdus so glad to hear this went well! Was it recorded?
silverpill · 9w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpq5xsduy5pll5s9ve25gwsz046jm58jmdpt5gawzxnx2xwa9eqfeesacvhgs We are building a tool that checks whether an implementation supports a...
洪 民憙 (Hong Minhee) :nonbinary: profile picture
ActivityPub assumes content is text/html by default when mediaType isn't specified, whether the object is a Note or an Article. Misskey does something different, for reasons I still don't fully understand. It stores its internal representation as MFM, its own markup language. Between Misskey instances, it sends that through a separate _misskey_content property rather than content itself. When talking to non-Misskey software, it converts HTML into MFM.

The trouble is that MFM can represent much less than HTML. If another implementation sends HTML that has no clean MFM equivalent, the formatting comes out mangled in Misskey.

I keep wondering why Misskey didn't just store HTML, like Mastodon and most other implementations do, or at least kept both the source markup and the rendered HTML side by side. I know storing only HTML can lose some MFM features too. I still don't understand why Misskey chose the format that can represent less.
洪 民憙 (Hong Minhee) :nonbinary: profile picture
The more I work on Hollo, the more its Mastodon-compatible API feels like a straitjacket. I chose it for a practical reason: people could use existing clients, and I wouldn't have to build a frontend too. I still think that was the right call at the time.

The problem is that clients can only expose what Mastodon's API represents. I keep coming up with ideas, then asking whether the API has anywhere to put them. If it doesn't, I have no way to get the feature in front of users.

ActivityPub API (so-called “C2S”) might be the eventual answer, but it doesn't help much today. I don't know of any clients Hollo users could realistically use with it, and adoption is still limited.

So I keep coming back to the idea that Hollo will need a frontend of its own. I'd keep the Mastodon API for existing apps. I'm not especially eager to take on a whole frontend, but I don't see another way to try ideas that don't fit Mastodon's model.
11
fedicat · 12w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 Several platforms have extensions or variations of the mastodon api that I and some others try to accommodate, but it depends how well they're documented (gotosocial, mitra, neodb, plero...
洪 民憙 (Hong Minhee) :nonbinary: profile picture
I recently moved my personal blog from a PHP setup to Astro on Netlify because I wanted to add ActivityPub support with Fedify.

Somehow, it took me until then to realize that I had never actually tried running Fedify on Netlify.

Netlify Database is PostgreSQL, so the persistence side should already fit @fedify/postgres. The less obvious part is background delivery: Netlify Functions cannot keep a queue consumer alive, while Async Workloads uses a push-based model similar to WorkersMessageQueue in @fedify/cfworkers.

So I’m going to try making @fedify/netlify, with my own blog as its first real test case. I wrote down the initial design in issue #930.
洪 民憙 (Hong Minhee) :nonbinary: profile picture
#Mastodon's #ActivityPub inbox treats object types in tiers. Note and Question are supported directly. A second tier, Article, Page, Image, Audio, Video, and Event, gets converted to a title, a summary, and a link; content itself doesn't show. Anything outside both tiers is dropped on delivery, which is a large part of why so much of the fediverse federates as Note regardless of what the object actually is.

mastodon/mastodon#24079 asks for content to show up whenever it's present and the mediaType is supported, independent of type. Open since 2023, and as far as the thread shows, no core team engagement beyond one offhand remark that they're not happy with the status quo either.

Reading the issue text closely, it's a bit ambiguous whether it covers the drop tier or only the convert-to-title-and-link tier. I left a comment asking for clarification, since the fix looks very different depending on the answer.

If you build on ActivityPub, a comment or a reaction there is worth more than another workaround.

#fedidev #fediverse
13
silverpill · 12w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 Added a comment https://github.com/mastodon/mastodon/issues/24079#issuecomment-4938693508
〽️ɪɢᴜᴇʟ 🔜 GodotFest · 12w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 this reads like "here are some technical reasons that justify for us to create a competitor spec but we will just shoehorn 90% of Bluesky accounts onto a single instance anyways" When y...
洪 民憙 (Hong Minhee) :nonbinary: profile picture
One thing I keep coming back to when comparing #ActivityPub and AT Protocol: ActivityPub is basically a convention on top of the #web stuff we already have. An actor is a JSON-LD document you GET. An inbox is an endpoint you POST to. If you already run a website, you can bolt this on without changing the site's basic shape. Ghost didn't set out to join the #fediverse, and then years later it could, just by adding an endpoint.

AT Protocol feels less like that to me. Running a PDS means a signed repo, a Merkle search tree, a firehose, a DID. It's not a layer you add to an existing site. It's closer to standing up another backend beside it.

I think that's why ActivityPub keeps making sense to me. You can join later. You don't have to have built the whole thing with federation in mind from day one.

#ATProto #ATProtocol #fedidev
zunda · 15w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 はい。 https://github.com/zunda/mitome.in/pull/192 でも問題は見つけてないのですが、僕はReactにもVueにも疎くて、正式版にならない理由も分からな...
silverpill · 15w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqpzjfm9lymy3dnrxg2uk237vlvteefahea7s4ptjzv8n2a9uarrxqp2ut88 When two implementations don't federate, the slow part is usually figuring out where the exchange broke: signing, JSON-LD processing, WebFinger, or something less obvious. DrFed's first...