Hashtag

#fedidev

3,112 posts tagged with this hashtag.

@haubles@hachyderm.io

I have exciting news to share!! :mastodondance:

It looks like we're finally gearing up to start migrating people over into @Mastodon's new @zulip instance for certain parts of our community next week (#MastoAdmin etc.)! It has been a long time in the making and I'm sorry for the delay, but I'm so glad we're finally going to start getting people in there <3 We'll start by beta testing with a few individuals next week to make sure everything is ready for a larger wave of people to join <3 <3

More on soon too — stay tuned!

@haubles@hachyderm.io

I have exciting news to share!! :mastodondance:

It looks like we're finally gearing up to start migrating people over into @Mastodon's new @zulip instance for certain parts of our community next week (#MastoAdmin etc.)! It has been a long time in the making and I'm sorry for the delay, but I'm so glad we're finally going to start getting people in there <3 We'll start by beta testing with a few individuals next week to make sure everything is ready for a larger wave of people to join <3 <3

More on soon too — stay tuned!

@haubles@hachyderm.io

I have exciting news to share!! :mastodondance:

It looks like we're finally gearing up to start migrating people over into @Mastodon's new @zulip instance for certain parts of our community next week (#MastoAdmin etc.)! It has been a long time in the making and I'm sorry for the delay, but I'm so glad we're finally going to start getting people in there <3 We'll start by beta testing with a few individuals next week to make sure everything is ready for a larger wave of people to join <3 <3

More on soon too — stay tuned!

@Mastodon@mastodon.social
@Mastodon@mastodon.social
@Mastodon@mastodon.social
@sl007@digitalcourage.social

Currently implementing the Federated Credential Management API
w3c-fedid.github.io/FedCM/

Flow and Benefits
corbado.com/blog/fedcm-federat

Funny Quote
„Axel Springer (Welt, Bild): German media giant with full FedCM deployment:
- 14x increase in monthly registrations after implementing FedCM“

corbado.com

FedCM (Federated Credential Management API) Overview

Learn how FedCM replaces third-party cookies with browser-mediated federated login, what browsers support it and how it fits alongside passkeys.

@Mastodon@mastodon.social
@Mastodon@mastodon.social
@Mastodon@mastodon.social
@haubles@hachyderm.io

I have exciting news to share!! :mastodondance:

It looks like we're finally gearing up to start migrating people over into @Mastodon's new @zulip instance for certain parts of our community next week (#MastoAdmin etc.)! It has been a long time in the making and I'm sorry for the delay, but I'm so glad we're finally going to start getting people in there <3 We'll start by beta testing with a few individuals next week to make sure everything is ready for a larger wave of people to join <3 <3

More on soon too — stay tuned!

@haubles@hachyderm.io

I have exciting news to share!! :mastodondance:

It looks like we're finally gearing up to start migrating people over into @Mastodon's new @zulip instance for certain parts of our community next week (#MastoAdmin etc.)! It has been a long time in the making and I'm sorry for the delay, but I'm so glad we're finally going to start getting people in there <3 We'll start by beta testing with a few individuals next week to make sure everything is ready for a larger wave of people to join <3 <3

More on soon too — stay tuned!

@lianna@micro.webgarden.click

Does anyone have any interesting Fedi mobile client recommendations?

I'm currently on Moshidon, but I am curious what is out there these days.

I have not kept up with recent developments; last I checked, Tusky was still a thing, so I'm feeling old. :nice:

My preferences:

  • Android.
  • Free and open source.
  • Will work with my GoToSocial instance without making me feel like a second class citizen to Mastodon users.
  • No LLM-generated nonsense.

Unique recommendations welcome! I wonder if there's some truly novel UX out there that I'm unaware of.

#fedi #fediverse #askFedi #moshidon #fediClients #fediClient #tusky #goToSocial #fediDev #activityPub

@lianna@micro.webgarden.click

Does anyone have any interesting Fedi mobile client recommendations?

I'm currently on Moshidon, but I am curious what is out there these days.

I have not kept up with recent developments; last I checked, Tusky was still a thing, so I'm feeling old. :nice:

My preferences:

  • Android.
  • Free and open source.
  • Will work with my GoToSocial instance without making me feel like a second class citizen to Mastodon users.
  • No LLM-generated nonsense.

Unique recommendations welcome! I wonder if there's some truly novel UX out there that I'm unaware of.

#fedi #fediverse #askFedi #moshidon #fediClients #fediClient #tusky #goToSocial #fediDev #activityPub

@box464@mastodon.social
@box464@mastodon.social
@silverpill@mitra.social

I added a list of recommended libraries to the ActivityPub developer guide:

https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries

- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)

This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.

#fedidev #activitypub

mitra.social

Mitra - Federated social network

Federated social network

@silverpill@mitra.social

I added a list of recommended libraries to the ActivityPub developer guide:

https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries

- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)

This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.

#fedidev #activitypub

mitra.social

Mitra - Federated social network

Federated social network

@silverpill@mitra.social

I added a list of recommended libraries to the ActivityPub developer guide:

https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries

- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)

This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.

#fedidev #activitypub

mitra.social

Mitra - Federated social network

Federated social network

@silverpill@mitra.social

I added a list of recommended libraries to the ActivityPub developer guide:

https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries

- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)

This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.

#fedidev #activitypub

mitra.social

Mitra - Federated social network

Federated social network

@silverpill@mitra.social

I added a list of recommended libraries to the ActivityPub developer guide:

https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries

- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)

This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.

#fedidev #activitypub

mitra.social

Mitra - Federated social network

Federated social network

@silverpill@mitra.social

I added a list of recommended libraries to the ActivityPub developer guide:

https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries

- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)

This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.

#fedidev #activitypub

mitra.social

Mitra - Federated social network

Federated social network

@silverpill@mitra.social

I added a list of recommended libraries to the ActivityPub developer guide:

https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries

- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)

This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.

#fedidev #activitypub

mitra.social

Mitra - Federated social network

Federated social network

@silverpill@mitra.social

I added a list of recommended libraries to the ActivityPub developer guide:

https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries

- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)

This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.

#fedidev #activitypub

mitra.social

Mitra - Federated social network

Federated social network

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@mariusor@metalhead.club

Slowly developing the in depth testing of the same functionality at different levels in the stack.

I have just finished the collection pagination integration test as exposed in the reference server implementation for the library. So we now have the same pagination functionality covered in unit-tests in the different storage backends, also covered by the storage conformance suite, and now, through an integration test in the server application itself.

@mariusor@metalhead.club

Slowly developing the in depth testing of the same functionality at different levels in the stack.

I have just finished the collection pagination integration test as exposed in the reference server implementation for the library. So we now have the same pagination functionality covered in unit-tests in the different storage backends, also covered by the storage conformance suite, and now, through an integration test in the server application itself.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@wakest@hackers.pub

I was updating this list for much of 2026. I thought the page was getting too long so figured I would split it into past and present.

2026

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

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

August 6th–9th, Vancouver, CA

August 8th–9th, Taipei, TW

coscup.org

COSCUP x UbuCon Asia 2026

COSCUP x UbuCon Asia 2026——臺灣最大的開源社群年會。

@wakest@hackers.pub

I was updating this list for much of 2026. I thought the page was getting too long so figured I would split it into past and present.

2026

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

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

August 6th–9th, Vancouver, CA

August 8th–9th, Taipei, TW

coscup.org

COSCUP x UbuCon Asia 2026

COSCUP x UbuCon Asia 2026——臺灣最大的開源社群年會。

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@hongminhee@hollo.social

A friend of mine just launched Kosmo, a new service out of Korea, built around the dōjin (同人) scene: fan works, fanzines, that whole self-published creative culture. It's live now at kos.moe, in open beta and Korean-language only for now.

It speaks , so you get the basics: posting, following, boosting. It also has emoji reactions, and one account can hold several public profiles. They say profile tags are coming next, meant to express something about a profile's identity and usable for search and muting too.

It's still early, and they'd genuinely appreciate feedback from anyone who gives it a try.

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@kosmo@planet.moe

안녕하세요. 동인 창작 문화 향유자를 위한 SNS, 코스모입니다.

개발 과정에서 이용자 여러분의 목소리를 더 가까이 듣고, 다양한 기능을 실제 환경에서 검증하고 다듬기 위해 오픈 베타를 시작합니다.

코스모를 직접 이용해 보시고, 불편한 점이나 바라는 점이 있다면 자유롭게 의견을 보내 주세요.
여러분의 피드백을 바탕으로 더 나은 코스모를 만들어 가겠습니다.

많은 관심과 참여 부탁드립니다.
감사합니다.

kos.moe

kos.moe

KOSMO

흩어진 타임라인을 한곳에서.

@mariusor@metalhead.club

When I started the work on ActivityPub projects I fully embraced Maslow's Hammer adage. I wanted as much as possible in my services to go through the vocabulary and I fully embraced the client to server API.

But there are elements of a web application that require custom functionality no matter what, say changing a password. So for those I just added the capability of running commands through ssh. :goose_hacker:

@mariusor@metalhead.club

When I started the work on ActivityPub projects I fully embraced Maslow's Hammer adage. I wanted as much as possible in my services to go through the vocabulary and I fully embraced the client to server API.

But there are elements of a web application that require custom functionality no matter what, say changing a password. So for those I just added the capability of running commands through ssh. :goose_hacker:

@mariusor@metalhead.club

I'm surprised at how many issues my new integration tests are finding.

I already had an integration testsuite, but the way the application was run was not in full isolation, and I expect some of the setup steps I had included don't really exist on a fresh install.

We now build a fresh container image, start it up, provision it with mock data, and then run tests, but only through mechanisms that are available to a prospective server operator: CLI commands executed through SSH, and ActivityPub client to server operations.

@mariusor@metalhead.club

I'm surprised at how many issues my new integration tests are finding.

I already had an integration testsuite, but the way the application was run was not in full isolation, and I expect some of the setup steps I had included don't really exist on a fresh install.

We now build a fresh container image, start it up, provision it with mock data, and then run tests, but only through mechanisms that are available to a prospective server operator: CLI commands executed through SSH, and ActivityPub client to server operations.

@lianna@micro.webgarden.click

It's been said a lot that tech people tend to think that every problem can be solved with a tech solution, and that that is often a wrong approach that ignores social dynamics and systemic causes.

That's true, but I can think of at least one problem here on the Fediverse that really, really needs a tech solution!

That being hashtags.

The whole point of hashtags is that you can tag your content with concepts it relates to, so that others who are interested in said concepts can discover your content.

Ideally, a hashtag should therefore contain all posts relating to the concept, and should not contain any posts unrelated to the concept. This is not the case.

The problem is that hashtags are plain text only. This causes two kinds of issues:

  • False positives: One hashtag is used for multiple separate concepts, grouping unrelated concepts together.
  • False negatives: Multiple hashtags are used for the same concept, meaning you might miss posts of a concept you want to see.

Common examples for false positives are homonyms (seating bank vs. financial bank, video games vs. board games), abbreviations (CNC, BBC, MTF), and multilingual issues (German handy vs. English handy).

False negatives are much, much more common, even. You're missing out on synonyms (horses vs. equines), grammatical and regional variations (colouring vs. coloring, horse vs. horses) and scope issues (gaming vs. games vs. video games) at least. Also, the whole thing about 'dogsOfMastodon' versus 'dogs'.

If you add to it that the Fediverse is multi-lingual, this is getting exponentially worse. If a German account posts about dogs using the hashtag 'Hund' (or Hunde, Hundes, Hunds, Hundi, Wauwau, Köter, Welpe, Welpen...), someone subscribed to the English hashtag 'dogs' should probably also see that post.

Rather than plain text which has all of these issues, a hashtag should therefore point at an individual unique ID of a concept, unique and unambiguous across all languages and grammatical forms.

Someone should be able to subscribe to the concept of a horse – the equine animal – and not just the letters 'horse' in that order!

That might sound daunting – who has a database of all concepts in the world? – but structured data actually is a super old problem that has been talked about for ages! The semantic web has it figured out.

Wikidata is an open data source for unique concepts, doing exactly what we'd need. Obviously it's easier said than done, but 'all' that the Fediverse needs to do is replace or extend hashtags with a system that allows you to link a Wikidata concept by UUID. And figure out what to do with things that don't have such a UUID yet, and how to handle UX. But it would be a vast improvement over plain-text hashtags.

I don't really want this post to just die in the ether, tbh, as posts are wont to do. I'd like to actually make this a thing. Is there anyone out there who knows what an implementation of this would take? I'd love to help (computational linguist).

#tech #technology #Fediverse #activityPub #socialMedia #hashtags #semanticWeb #wikiData #mastodon #goToSocial #fediSoftware #fediDev #fediDevelopers #fediDeveloperVerse #accessibility

@liaizon@wake.st

"artist-alley implements ArchivePub, an open federation protocol built on the ActivityPub data model with DAM-shaped extensions for asset sharing, workflow state, and brand workspaces."

"Content-addressed federation:
Every reference to asset bytes uses a content-addressed URI:
cas://<sha256>?content-type=image/png&size=12345"

artist-alley.org/docs/archivep

artist-alley.org

ArchivePub

ArchivePub — the open, ActivityPub-shaped federation protocol that lets independently-operated DAM instances share assets, reviews, and workflow state. Wire format, trust model, and the canonical protocol context.

@liaizon@wake.st

"artist-alley implements ArchivePub, an open federation protocol built on the ActivityPub data model with DAM-shaped extensions for asset sharing, workflow state, and brand workspaces."

"Content-addressed federation:
Every reference to asset bytes uses a content-addressed URI:
cas://<sha256>?content-type=image/png&size=12345"

artist-alley.org/docs/archivep

artist-alley.org

ArchivePub

ArchivePub — the open, ActivityPub-shaped federation protocol that lets independently-operated DAM instances share assets, reviews, and workflow state. Wire format, trust model, and the canonical protocol context.

@liaizon@wake.st

"artist-alley implements ArchivePub, an open federation protocol built on the ActivityPub data model with DAM-shaped extensions for asset sharing, workflow state, and brand workspaces."

"Content-addressed federation:
Every reference to asset bytes uses a content-addressed URI:
cas://<sha256>?content-type=image/png&size=12345"

artist-alley.org/docs/archivep

artist-alley.org

ArchivePub

ArchivePub — the open, ActivityPub-shaped federation protocol that lets independently-operated DAM instances share assets, reviews, and workflow state. Wire format, trust model, and the canonical protocol context.

@liaizon@wake.st

"artist-alley implements ArchivePub, an open federation protocol built on the ActivityPub data model with DAM-shaped extensions for asset sharing, workflow state, and brand workspaces."

"Content-addressed federation:
Every reference to asset bytes uses a content-addressed URI:
cas://<sha256>?content-type=image/png&size=12345"

artist-alley.org/docs/archivep

artist-alley.org

ArchivePub

ArchivePub — the open, ActivityPub-shaped federation protocol that lets independently-operated DAM instances share assets, reviews, and workflow state. Wire format, trust model, and the canonical protocol context.

@lianna@micro.webgarden.click

It's been said a lot that tech people tend to think that every problem can be solved with a tech solution, and that that is often a wrong approach that ignores social dynamics and systemic causes.

That's true, but I can think of at least one problem here on the Fediverse that really, really needs a tech solution!

That being hashtags.

The whole point of hashtags is that you can tag your content with concepts it relates to, so that others who are interested in said concepts can discover your content.

Ideally, a hashtag should therefore contain all posts relating to the concept, and should not contain any posts unrelated to the concept. This is not the case.

The problem is that hashtags are plain text only. This causes two kinds of issues:

  • False positives: One hashtag is used for multiple separate concepts, grouping unrelated concepts together.
  • False negatives: Multiple hashtags are used for the same concept, meaning you might miss posts of a concept you want to see.

Common examples for false positives are homonyms (seating bank vs. financial bank, video games vs. board games), abbreviations (CNC, BBC, MTF), and multilingual issues (German handy vs. English handy).

False negatives are much, much more common, even. You're missing out on synonyms (horses vs. equines), grammatical and regional variations (colouring vs. coloring, horse vs. horses) and scope issues (gaming vs. games vs. video games) at least. Also, the whole thing about 'dogsOfMastodon' versus 'dogs'.

If you add to it that the Fediverse is multi-lingual, this is getting exponentially worse. If a German account posts about dogs using the hashtag 'Hund' (or Hunde, Hundes, Hunds, Hundi, Wauwau, Köter, Welpe, Welpen...), someone subscribed to the English hashtag 'dogs' should probably also see that post.

Rather than plain text which has all of these issues, a hashtag should therefore point at an individual unique ID of a concept, unique and unambiguous across all languages and grammatical forms.

Someone should be able to subscribe to the concept of a horse – the equine animal – and not just the letters 'horse' in that order!

That might sound daunting – who has a database of all concepts in the world? – but structured data actually is a super old problem that has been talked about for ages! The semantic web has it figured out.

Wikidata is an open data source for unique concepts, doing exactly what we'd need. Obviously it's easier said than done, but 'all' that the Fediverse needs to do is replace or extend hashtags with a system that allows you to link a Wikidata concept by UUID. And figure out what to do with things that don't have such a UUID yet, and how to handle UX. But it would be a vast improvement over plain-text hashtags.

I don't really want this post to just die in the ether, tbh, as posts are wont to do. I'd like to actually make this a thing. Is there anyone out there who knows what an implementation of this would take? I'd love to help (computational linguist).

#tech #technology #Fediverse #activityPub #socialMedia #hashtags #semanticWeb #wikiData #mastodon #goToSocial #fediSoftware #fediDev #fediDevelopers #fediDeveloperVerse #accessibility

@prismo@mastodon.social

📣 Happy to announce that Prismo is back from the dead and back in development! Demo instance will be opened soon so stay tuned :)

Also, don’t hesitate to join our matrix room to discuss (linked on our profile)

@matt@writing.exchange
@matt@writing.exchange
@matt@writing.exchange
@matt@writing.exchange
@writefreely@writing.exchange
@writefreely@writing.exchange
@writefreely@writing.exchange
@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@maddyunderstars@aus.social

It took a while, but Shoot now has a role editor (among other guild settings)!

Roles and permissions have been implemented server-side nearly since the beginning but they haven't been available in the client until now.

The UI/UX here is very similar to how Discord's permissions used to work. Roles can be assigned to users and they are evaluated from bottom to top in the role list. Roles can deny or allow permissions, with lower roles in the list being overridden by higher roles. In the screenshots guild, the 'everyone' role allows 'Send Messages' permission, but the 'muted' role denies it. If someone has the 'muted' role, it will override the send messages permission from the 'everyone'/default role and prevent them from speaking.

It's still a bit rough of course, but I'm still having a good time working on the project.

You can try it out yourself/learn more at shoot.pub using the registration token `0K2A3` which expires in a week. That's just for anti-spam reasons, let me know if you want to register if it doesn't work :)

The role editor in Shoot. There are 3 roles shown, "moderator", "muted", and finally "everyone" which is selected. The editor shows the default permissions given to everyone which include: send messages, view channel, call channel, create invite, and upload permissions.
ALT text

The role editor in Shoot. There are 3 roles shown, "moderator", "muted", and finally "everyone" which is selected. The editor shows the default permissions given to everyone which include: send messages, view channel, call channel, create invite, and upload permissions.

@maddyunderstars@aus.social

It took a while, but Shoot now has a role editor (among other guild settings)!

Roles and permissions have been implemented server-side nearly since the beginning but they haven't been available in the client until now.

The UI/UX here is very similar to how Discord's permissions used to work. Roles can be assigned to users and they are evaluated from bottom to top in the role list. Roles can deny or allow permissions, with lower roles in the list being overridden by higher roles. In the screenshots guild, the 'everyone' role allows 'Send Messages' permission, but the 'muted' role denies it. If someone has the 'muted' role, it will override the send messages permission from the 'everyone'/default role and prevent them from speaking.

It's still a bit rough of course, but I'm still having a good time working on the project.

You can try it out yourself/learn more at shoot.pub using the registration token `0K2A3` which expires in a week. That's just for anti-spam reasons, let me know if you want to register if it doesn't work :)

The role editor in Shoot. There are 3 roles shown, "moderator", "muted", and finally "everyone" which is selected. The editor shows the default permissions given to everyone which include: send messages, view channel, call channel, create invite, and upload permissions.
ALT text

The role editor in Shoot. There are 3 roles shown, "moderator", "muted", and finally "everyone" which is selected. The editor shows the default permissions given to everyone which include: send messages, view channel, call channel, create invite, and upload permissions.

@hazelnoot@enby.life

For anyone who might find it useful, here's some statistics pulled from two real-world Sharkey instances:

Instance A (3 years old, 12 users (2 active), 472 pub and 491 sub connections):

+-----+---------------+-----------------+--------+----------------------------------------+
|Type |Metric         |Value            |Percent |Description                             |
+-----+---------------+-----------------+--------+----------------------------------------+
|Note |total          |  25,333,836     | 100.00%|All notes                               |
|Note |isSilencedUser |     604,388     |   2.39%|Notes by a silenced user                |
|Note |isSilencedHost |   2,940,962     |  11.61%|Notes from a silenced instance          |
|Note |isSuspendedUser|     282,627     |   1.12%|Notes by a suspended user               |
|Note |isSuspendedHost|      85,732     |   0.34%|Notes from a blocked instance           |
|Note |isPublic       |  11,914,094     |  47.03%|Public notes                            |
|Note |isHome         |  10,246,791     |  40.45%|Home-only / unlisted notes              |
|Note |isFollowers    |   3,156,743     |  12.46%|Followers-only notes                    |
|Note |isSpecified    |      16,208     |   0.06%|Specified / DM notes                    |
|Note |isPoll         |      53,281     |   0.21%|Polls                                   |
|Note |isMedia        |   2,383,375     |   9.41%|Notes w/ media                          |
|Note |isReply        |   9,544,540     |  37.68%|Replies                                 |
|Note |isReplyToSelf  |   2,059,325     |   8.13%|Self-replies                            |
|Note |isBoost        |   6,194,189     |  24.45%|Boosts                                  |
|Note |isBoostOfSelf  |     190,697     |   0.75%|Self-boosts                             |
|Note |isQuote        |     225,291     |   0.89%|Quotes                                  |
|Note |isQuoteOfSelf  |      70,243     |   0.28%|Self-quotes                             |
|Note |isChannel      |           2     |   0.00%|Notes in a channel                      |
|Note |isRemote       |  25,266,647     |  99.73%|Remote notes                            |
|Note |isLocal        |      67,189     |   0.27%|Local notes                             |
|Note |isLocalOnly    |         311     |   0.00%|Local-only (defederated) notes          |
|Drive|totalDrive     |       1,845.8 Gb| 100.00%|Total size of all known media           |
|Drive|internalDrive  |         111.8 Gb|   6.06%|Size of media stored/cached locally     |
|Drive|externalDrive  |       1,734.0 Gb|  93.94%|Size of external media accessed by proxy|
|User |total          |     359,926     | 100.00%|All users                               |
|User |local          |          16     |   0.00%|Local users                             |
|User |remote         |     359,910     | 100.00%|Remote users                            |
|User |isHibernated   |      89,625     |  24.90%|Hibernated (inactive) users             |
|User |isSilencedUser |         475     |   0.13%|Silenced users                          |
|User |isSilencedHost |     101,766     |  28.27%|Silenced users (by instance silence)    |
|User |isSuspendedUser|         465     |   0.13%|Suspended users                         |
|User |isSuspendedHost|       4,153     |   1.15%|Suspended users (by instance block)     |
|User |isDeleted      |      40,069     |  11.13%|Deleted                                 |
|User |isBot          |      33,588     |   9.33%|Bot accounts                            |
|User |isCat          |       4,965     |   1.38%|Users who are cats                      |
|User |isLocked       |      79,259     |  22.02%|Follow requests enabled                 |
|User |isExplorable   |     211,523     |  58.77%|Indexable / searchable users            |
+-----+---------------+-----------------+--------+----------------------------------------+

Instance B (3 years old, 2,731 users (130 active), 1,872 pub and 2,149 sub connections):
+-----+---------------+-----------------+--------+----------------------------------------+
|Type |Metric         |Value            |Percent |Description                             |
+-----+---------------+-----------------+--------+----------------------------------------+
|Note |total          |  87,286,880     | 100.00%|All notes                               |
|Note |isSilencedUser |   1,018,720     |   1.17%|Notes by a silenced user                |
|Note |isSilencedHost |  13,409,901     |  15.36%|Notes from a silenced instance          |
|Note |isSuspendedUser|     414,900     |   0.48%|Notes by a suspended user               |
|Note |isSuspendedHost|     819,842     |   0.94%|Notes from a blocked instance           |
|Note |isPublic       |  40,981,524     |  46.95%|Public notes                            |
|Note |isHome         |  28,994,854     |  33.22%|Home-only / unlisted notes              |
|Note |isFollowers    |  17,208,603     |  19.71%|Followers-only notes                    |
|Note |isSpecified    |     101,899     |   0.12%|Specified / DM notes                    |
|Note |isPoll         |     298,047     |   0.34%|Polls                                   |
|Note |isMedia        |   9,728,519     |  11.15%|Notes w/ media                          |
|Note |isReply        |  26,006,452     |  29.79%|Replies                                 |
|Note |isReplyToSelf  |   5,552,908     |   6.36%|Self-replies                            |
|Note |isBoost        |  32,738,677     |  37.51%|Boosts                                  |
|Note |isBoostOfSelf  |     577,898     |   0.66%|Self-boosts                             |
|Note |isQuote        |     398,522     |   0.46%|Quotes                                  |
|Note |isQuoteOfSelf  |     133,251     |   0.15%|Self-quotes                             |
|Note |isChannel      |          34     |   0.00%|Notes in a channel                      |
|Note |isRemote       |  86,209,578     |  98.77%|Remote notes                            |
|Note |isLocal        |   1,077,302     |   1.23%|Local notes                             |
|Note |isLocalOnly    |       2,009     |   0.00%|Local-only (defederated) notes          |
|Drive|totalDrive     |          43.3 Gb| 100.00%|Total size of all known media           |
|Drive|internalDrive  |           0.1 Gb|   0.13%|Size of media stored/cached locally     |
|Drive|externalDrive  |          43.3 Gb|  99.87%|Size of external media accessed by proxy|
|User |total          |     664,938     | 100.00%|All users                               |
|User |local          |       2,734     |   0.41%|Local users                             |
|User |remote         |     662,204     |  99.59%|Remote users                            |
|User |isHibernated   |       1,247     |   0.19%|Hibernated (inactive) users             |
|User |isSilencedUser |         466     |   0.07%|Silenced users                          |
|User |isSilencedHost |     185,793     |  27.94%|Silenced users (by instance silence)    |
|User |isSuspendedUser|       1,033     |   0.16%|Suspended users                         |
|User |isSuspendedHost|      36,152     |   5.44%|Suspended users (by instance block)     |
|User |isDeleted      |         505     |   0.08%|Deleted                                 |
|User |isBot          |      50,328     |   7.57%|Bot accounts                            |
|User |isCat          |       9,090     |   1.37%|Users who are cats                      |
|User |isLocked       |      73,855     |  11.11%|Follow requests enabled                 |
|User |isExplorable   |     381,411     |  57.36%|Indexable / searchable users            |
+-----+---------------+-----------------+--------+----------------------------------------+

Note: drive stats are under-counted (mildly on instance A, severely on instance B) due to inconsistent behavior under certain edge cases.

@hazelnoot@enby.life

For anyone who might find it useful, here's some statistics pulled from two real-world Sharkey instances:

Instance A (3 years old, 12 users (2 active), 472 pub and 491 sub connections):

+-----+---------------+-----------------+--------+----------------------------------------+
|Type |Metric         |Value            |Percent |Description                             |
+-----+---------------+-----------------+--------+----------------------------------------+
|Note |total          |  25,333,836     | 100.00%|All notes                               |
|Note |isSilencedUser |     604,388     |   2.39%|Notes by a silenced user                |
|Note |isSilencedHost |   2,940,962     |  11.61%|Notes from a silenced instance          |
|Note |isSuspendedUser|     282,627     |   1.12%|Notes by a suspended user               |
|Note |isSuspendedHost|      85,732     |   0.34%|Notes from a blocked instance           |
|Note |isPublic       |  11,914,094     |  47.03%|Public notes                            |
|Note |isHome         |  10,246,791     |  40.45%|Home-only / unlisted notes              |
|Note |isFollowers    |   3,156,743     |  12.46%|Followers-only notes                    |
|Note |isSpecified    |      16,208     |   0.06%|Specified / DM notes                    |
|Note |isPoll         |      53,281     |   0.21%|Polls                                   |
|Note |isMedia        |   2,383,375     |   9.41%|Notes w/ media                          |
|Note |isReply        |   9,544,540     |  37.68%|Replies                                 |
|Note |isReplyToSelf  |   2,059,325     |   8.13%|Self-replies                            |
|Note |isBoost        |   6,194,189     |  24.45%|Boosts                                  |
|Note |isBoostOfSelf  |     190,697     |   0.75%|Self-boosts                             |
|Note |isQuote        |     225,291     |   0.89%|Quotes                                  |
|Note |isQuoteOfSelf  |      70,243     |   0.28%|Self-quotes                             |
|Note |isChannel      |           2     |   0.00%|Notes in a channel                      |
|Note |isRemote       |  25,266,647     |  99.73%|Remote notes                            |
|Note |isLocal        |      67,189     |   0.27%|Local notes                             |
|Note |isLocalOnly    |         311     |   0.00%|Local-only (defederated) notes          |
|Drive|totalDrive     |       1,845.8 Gb| 100.00%|Total size of all known media           |
|Drive|internalDrive  |         111.8 Gb|   6.06%|Size of media stored/cached locally     |
|Drive|externalDrive  |       1,734.0 Gb|  93.94%|Size of external media accessed by proxy|
|User |total          |     359,926     | 100.00%|All users                               |
|User |local          |          16     |   0.00%|Local users                             |
|User |remote         |     359,910     | 100.00%|Remote users                            |
|User |isHibernated   |      89,625     |  24.90%|Hibernated (inactive) users             |
|User |isSilencedUser |         475     |   0.13%|Silenced users                          |
|User |isSilencedHost |     101,766     |  28.27%|Silenced users (by instance silence)    |
|User |isSuspendedUser|         465     |   0.13%|Suspended users                         |
|User |isSuspendedHost|       4,153     |   1.15%|Suspended users (by instance block)     |
|User |isDeleted      |      40,069     |  11.13%|Deleted                                 |
|User |isBot          |      33,588     |   9.33%|Bot accounts                            |
|User |isCat          |       4,965     |   1.38%|Users who are cats                      |
|User |isLocked       |      79,259     |  22.02%|Follow requests enabled                 |
|User |isExplorable   |     211,523     |  58.77%|Indexable / searchable users            |
+-----+---------------+-----------------+--------+----------------------------------------+

Instance B (3 years old, 2,731 users (130 active), 1,872 pub and 2,149 sub connections):
+-----+---------------+-----------------+--------+----------------------------------------+
|Type |Metric         |Value            |Percent |Description                             |
+-----+---------------+-----------------+--------+----------------------------------------+
|Note |total          |  87,286,880     | 100.00%|All notes                               |
|Note |isSilencedUser |   1,018,720     |   1.17%|Notes by a silenced user                |
|Note |isSilencedHost |  13,409,901     |  15.36%|Notes from a silenced instance          |
|Note |isSuspendedUser|     414,900     |   0.48%|Notes by a suspended user               |
|Note |isSuspendedHost|     819,842     |   0.94%|Notes from a blocked instance           |
|Note |isPublic       |  40,981,524     |  46.95%|Public notes                            |
|Note |isHome         |  28,994,854     |  33.22%|Home-only / unlisted notes              |
|Note |isFollowers    |  17,208,603     |  19.71%|Followers-only notes                    |
|Note |isSpecified    |     101,899     |   0.12%|Specified / DM notes                    |
|Note |isPoll         |     298,047     |   0.34%|Polls                                   |
|Note |isMedia        |   9,728,519     |  11.15%|Notes w/ media                          |
|Note |isReply        |  26,006,452     |  29.79%|Replies                                 |
|Note |isReplyToSelf  |   5,552,908     |   6.36%|Self-replies                            |
|Note |isBoost        |  32,738,677     |  37.51%|Boosts                                  |
|Note |isBoostOfSelf  |     577,898     |   0.66%|Self-boosts                             |
|Note |isQuote        |     398,522     |   0.46%|Quotes                                  |
|Note |isQuoteOfSelf  |     133,251     |   0.15%|Self-quotes                             |
|Note |isChannel      |          34     |   0.00%|Notes in a channel                      |
|Note |isRemote       |  86,209,578     |  98.77%|Remote notes                            |
|Note |isLocal        |   1,077,302     |   1.23%|Local notes                             |
|Note |isLocalOnly    |       2,009     |   0.00%|Local-only (defederated) notes          |
|Drive|totalDrive     |          43.3 Gb| 100.00%|Total size of all known media           |
|Drive|internalDrive  |           0.1 Gb|   0.13%|Size of media stored/cached locally     |
|Drive|externalDrive  |          43.3 Gb|  99.87%|Size of external media accessed by proxy|
|User |total          |     664,938     | 100.00%|All users                               |
|User |local          |       2,734     |   0.41%|Local users                             |
|User |remote         |     662,204     |  99.59%|Remote users                            |
|User |isHibernated   |       1,247     |   0.19%|Hibernated (inactive) users             |
|User |isSilencedUser |         466     |   0.07%|Silenced users                          |
|User |isSilencedHost |     185,793     |  27.94%|Silenced users (by instance silence)    |
|User |isSuspendedUser|       1,033     |   0.16%|Suspended users                         |
|User |isSuspendedHost|      36,152     |   5.44%|Suspended users (by instance block)     |
|User |isDeleted      |         505     |   0.08%|Deleted                                 |
|User |isBot          |      50,328     |   7.57%|Bot accounts                            |
|User |isCat          |       9,090     |   1.37%|Users who are cats                      |
|User |isLocked       |      73,855     |  11.11%|Follow requests enabled                 |
|User |isExplorable   |     381,411     |  57.36%|Indexable / searchable users            |
+-----+---------------+-----------------+--------+----------------------------------------+

Note: drive stats are under-counted (mildly on instance A, severely on instance B) due to inconsistent behavior under certain edge cases.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

I'm looking for your opinions from the developers of the fediverse.

A common HTML web page can contain related links via the <link> tag. I would like to do the same for Activity Streams objects, for example:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://writings.hongminhee.org/ap/2024/12/a-year-with-the-fediverse.json",
  "type": "Article",
  "name": "A year with the fediverse",
  "content": "2024 was truly a year where I was deeply immersed in the fediverse. …",
  "url": "https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/",
  "attachment": [
    {
      "type": "Link",
      "rel": "alternate",
      "hreflang": "ko",
      "href": "https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/index.ko-hang-kr.html",
      "mediaType": "text/html"
    },
    {
      "type": "Link",
      "rel": "alternate",
      "hreflang": "ja",
      "href": "https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/index.ja.html",
      "mediaType": "text/html"
    }
  ]
}

Do you think this makes sense, and would it be appropriate to put Link objects in the attachment?

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

's 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.

github.com

Always show object `content`, regardless of object `type`, if `mediaType` is supported · Issue #24079 · mastodon/mastodon

Pitch Currently, Mastodon separates ActivityPub objects between “supported” and “converted”, based on object type. Converted objects will only display a title, spoiler text and URL. This is the cas...

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

Today @kopper shared a post on the fediverse titled how to not regret c2s, and I found it genuinely interesting to read, even if I'm not sure its proposed architecture actually solves what it sets out to solve.

The author's frustration with naïve implementations is well-founded. Slapping an facade onto an existing Mastodon-like server and calling it C2S doesn't buy you much—you end up with the rigidity of a bespoke API without any of the interoperability C2S is supposed to offer. The “JSON-LD flavored Mastodon API” framing is apt.

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.

But here's what bothers me. When you map this architecture onto familiar terms, it looks roughly like this:

  • C2S server ≈ a database (PostgreSQL, say)
  • “Client” ≈ an application server (Mastodon, Misskey)
  • “Frontend” ≈ the actual client app on your phone

That's not a new architecture. That's just the current architecture with the labels shifted. The interesting question is which interface gets standardized, and the author's answer is the one between the C2S server and the “client” layer—the bottom boundary.

The problem is that what people actually want from C2S is to connect any frontend to any server. The portability they're after lives at the top boundary, between the frontend and whatever is behind it. But the author explicitly argues against standardizing that layer: “we don't really need a standardized api,” they write, leaving each client free to expose whatever API it likes.

Which means frontends remain locked to specific clients, just as Mastodon apps are locked to the Mastodon API today. The interoperability promise of C2S—log in to any server with any app—isn't actually delivered. It's been pushed one layer down, out of reach of the end user.

There's real value in the post's thinking about data hosting vs. interpretation, and about the security implications of servers that understand too much. But as an answer to the question C2S is supposed to answer, I'm not convinced.

w.on-t.work

how to not regret c2s

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

Been thinking about fediverse wiki after @2chanhaeng mentioned it today. Some ideas:

  • Cross-instance page linking: [[Page Title@other-instance.wiki]]
  • Edit pages on other instances with your home account
  • Fork pages across instances: [[Page@instance-a.wiki]][[Page@instance-b.wiki]], sharing edit history up to the fork point
  • Merge forked pages later when needed

The fork/merge model feels natural for federated collaboration. Thoughts?

hackers.pub

Fediverse + Wiki

Fediverse + Wiki

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

Just opened an issue for a major new task for : building an smoke test suite.

To ensure Fedify-built servers federate correctly with the wider , we're planning to run automated E2E tests in against live instances of Mastodon, Misskey, and more. This is crucial for a framework's reliability.

You can see the full plan and discussion here:

https://github.com/fedify-dev/fedify/issues/481

github.com

Interoperability smoke test suite · Issue #481 · fedify-dev/fedify

Summary As a server framework, Fedify's core value lies in its ability to correctly interoperate with other ActivityPub implementations in the Fediverse. Currently, we rely on unit tests and manual...

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@hongminhee@hollo.social

One thing I keep coming back to when comparing and AT Protocol: ActivityPub is basically a convention on top of the 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 , 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.

@botkit@hackers.pub

We're pleased to announce BotKit 0.5.0. This release changes how both the docs site and every bot's own pages look, and it stops limiting a server to one bot: a single process can now host a whole fleet of them. Quoting, and being quoted, goes through a consent step under FEP-044f, and a Redis-backed repository joins the SQLite and PostgreSQL ones for shared production storage. A few of these changes are breaking; see below for what to check before you upgrade.

A new look for botkit.fedify.dev

Until this release, botkit.fedify.dev read like a stock VitePress site: a workable but generic shell wrapped around the docs, with none of BotKit's own personality showing through.

The theme and the landing page are both new. The palette now matches the real logo greens instead of a generic default, and headlines are set in Space Grotesk, paired with Inter for everything else; the display font is self-hosted, so no visitor's IP is handed to a font CDN. The new landing page frames BotKit's dinosaur mascot inside its signature unassembled-model-kit sprue frame, then leads with a tabbed installer for Deno, npm, pnpm, and Yarn and a one-file bot example before getting into what BotKit actually does: messages, events, multi-bot instances, and the pages it builds for a bot without any extra work from you.

The redesigned botkit.fedify.dev homepage: a framed dinosaur mascot in a model-kit sprue, a one-file install snippet, and a rotating code sample.

The deployment guides grew alongside the new landing page: they were split apart and fleshed out, and a new Cloudflare Workers guide joins the existing Deno Deploy, Docker, and self-hosting guides.

A new look for your bot's pages

The pages BotKit serves for your bot (its profile, its posts, its follower list) got the same attention, in the opposite direction. Until now they were built on Pico CSS pulled from an external CDN: a fine default, but a generic one that made every BotKit-hosted bot look like a demo of the same template, and that quietly sent every visitor's browser off to fetch a stylesheet from someone else's server.

That's gone. Bot pages now use a self-contained design system, bundled with the package and served from BotKit's own content-addressed, cache-forever path: no external CDN, no build step, on either Deno or Node.js. The whole look is driven by a single accent color you choose (twenty names, the same legend Pico CSS uses, so your existing choice of color still works), tinting links, the follow button, and small highlights, while everything else stays quiet so your bot's name, avatar, and posts are what a visitor actually notices. A new PagesOptions.theme option ("auto", "light", or "dark") controls the color scheme independently of the accent. A repost is now marked and attributed to its original author instead of blending into the bot's own timeline.

A bot's redesigned profile page: a banner and avatar, bio with a link and mention, custom properties, follower and post counts, and a follow button, all tinted in the bot's chosen accent color.

If you want to go further than the accent color allows, PagesOptions.css still lets you inject custom CSS on top of BotKit's own stylesheet.

Multi-bot instances

Until this release, a BotKit process could only ever be one bot. Running a second bot meant standing up a whole second server, even when the two bots could easily have shared the same infrastructure. That limitation, raised in #16, is gone: the new createInstance() function creates an Instance that owns the shared plumbing (the key–value store, the message queue, the repository, and HTTP handling), and any number of bots can live on it side by side, each with its own actor identity and event handlers.

For a fixed, known set of bots, Instance.createBot() takes an identifier and a profile:

import { createInstance, text } from "@fedify/botkit";
import { MemoryKvStore } from "@fedify/fedify";

const instance = createInstance<void>({ kv: new MemoryKvStore() });

const greetBot = instance.createBot("greet", {
  username: "greetbot",
  name: "Greeting Bot",
});

greetBot.onFollow = async (session, followRequest) => {
  await followRequest.accept();
  await session.publish(text`Welcome, ${followRequest.follower}!`);
};

For a family of bots resolved on demand (one per region, one per customer, thousands of them backed by a database), pass a dispatcher function instead of a fixed identifier, and BotKit resolves and federates each one lazily:

const weatherBots = instance.createBot(async (ctx, identifier) => {
  if (!identifier.startsWith("weather_")) return null;
  const region = await db.getRegion(identifier.slice("weather_".length));
  if (region == null) return null;
  return { username: identifier, name: `${region.name} Weather Bot` };
});

weatherBots.onMention = async (session, message) => {
  const code = session.bot.identifier.slice("weather_".length);
  await message.reply(text`Current weather: ${await db.getWeather(code)}`);
};

Incoming activities are routed only to the bots they actually concern: the followed bot, the owner of a liked or replied-to message, mentioned bots, and bots followed by the sender. Multi-bot instances also serve a list of hosted bots at the web root, with each bot's own pages moving to /@{username}; a reserved instance actor signs shared-inbox requests when there's no single bot whose key obviously should.

None of this touches single-bot deployments: createBot() keeps working exactly as it always has, with the bot's pages staying at the web root and its data migrated to the new storage layout automatically on startup. If you maintain a custom Repository implementation, though, this is a breaking change worth planning for: every method now takes the owning bot's identifier as its first parameter, Session.bot is a read-only ReadonlyBot instead of a mutable Bot, and local object URIs carry the owning bot's identifier (old-format URIs are still recognized and permanently redirected, so links other servers stored keep working). The full picture, including how to move an existing single-bot deployment onto a multi-bot instance later, is in the new Instance concept document.

Thanks to @moreal, whose early work-in-progress explorations of this problem surfaced its two hardest design questions (mapping usernames to identifiers for dynamic bots, and routing object URIs that used to carry no owner information) well before this implementation settled on its final shape.

BotKit has supported quoting since 0.2.0, but only in the Misskey family's style: a quoteUrl property and a Link tag, sent without ever asking the quoted author. Mastodon 4.4 and 4.5 do things differently: they verify quotes through FEP-044f's consent handshake before showing them as quotes at all. Without that handshake, a BotKit bot's quotes never rendered as quotes on Mastodon, and quotes of a BotKit bot showed up as unverifiable.

BotKit now handles the FEP-044f handshake in both directions. When you quote a message, it sets the FEP-044f quote property and sends a QuoteRequest to the quoted author, alongside the Create it already sent. Publishing stays non-blocking: the post goes out immediately, and the quote is upgraded once (or if) approval arrives:

const message = await session.publish(text`This message quotes another one.`, {
  quoteTarget: quoted,
});
console.log(message.quoteApprovalState); // "pending"

On the receiving side, a new quotePolicy option (on createBot(), and per message on Session.publish()) controls how your bot answers incoming quote requests: automatically for everyone ("public", the default), automatically for followers only, never ("nobody"), or held for manual review through the new Bot.onQuoteRequest event:

bot.onQuoteRequest = async (session, request) => {
  if (request.state === "pending") await request.accept();
};

Bot.onQuoteAccepted, Bot.onQuoteRejected, and Bot.onQuoteRevoked cover what happens next for quotes your own bot sent, Message.quoteApproved reports whether an incoming quote carries a valid authorization stamp, and AuthorizedMessage.unauthorizeQuote() lets you revoke one you previously granted. The legacy quoteUrl and Misskey-style tags are still sent alongside the new property, so nothing about quoting on Misskey and its relatives changes. The full design is spread across #27 through #33.

A Redis repository (@fedify/botkit-redis)

BotKit has had a SQLite repository since 0.3.0 and a PostgreSQL one since 0.4.0, but neither is the natural fit for a bot that runs as several worker processes sharing one store, which is exactly the shape a Redis-backed deployment usually takes. The new @fedify/botkit-redis package fills that gap with RedisRepository, built directly on Redis strings, sets, and sorted sets rather than going through a generic key–value abstraction:

import { createBot, MemoryKvStore } from "@fedify/botkit";
import { RedisRepository } from "@fedify/botkit-redis";

const bot = createBot({
  username: "mybot",
  kv: new MemoryKvStore(),
  repository: new RedisRepository({ url: "redis://localhost:6379/0" }),
});

Because several workers can share one Redis instance, the read-modify-write paths that matter most under concurrency (message updates, follower bookkeeping, quote authorization indexes) are protected by short-lived locks that get renewed while a slow update is still running, rather than by assuming only one process ever touches the data at a time. The package supports both a connection URL it manages itself and an existing node-redis client you inject and keep control of, and it's available for both Deno and Node.js. #12 and #35 cover the rest of it.

Smaller improvements

The npm package's TypeScript declaration files no longer accidentally include the runtime Temporal polyfill code, which had been leaking into consumers' .d.ts output. Fedify was upgraded to 2.3.1, Hono to 4.12.27, and LogTape to 2.2.3.


As always, the full list of changes is in CHANGES.md, and every API mentioned above is documented at botkit.fedify.dev. Thank you to everyone who filed issues, opened discussions, and tried BotKit out.

If you build something with BotKit, run into a rough edge, or just want to talk through an idea before opening an issue, GitHub Discussions is the place for exactly that. For something closer to real time, BotKit's chat now lives on Matrix at #fedify:matrix.org. Drop in and say hello.

matrix.to

You're invited to talk on Matrix

You're invited to talk on Matrix

@botkit@hackers.pub

We're pleased to announce BotKit 0.5.0. This release changes how both the docs site and every bot's own pages look, and it stops limiting a server to one bot: a single process can now host a whole fleet of them. Quoting, and being quoted, goes through a consent step under FEP-044f, and a Redis-backed repository joins the SQLite and PostgreSQL ones for shared production storage. A few of these changes are breaking; see below for what to check before you upgrade.

A new look for botkit.fedify.dev

Until this release, botkit.fedify.dev read like a stock VitePress site: a workable but generic shell wrapped around the docs, with none of BotKit's own personality showing through.

The theme and the landing page are both new. The palette now matches the real logo greens instead of a generic default, and headlines are set in Space Grotesk, paired with Inter for everything else; the display font is self-hosted, so no visitor's IP is handed to a font CDN. The new landing page frames BotKit's dinosaur mascot inside its signature unassembled-model-kit sprue frame, then leads with a tabbed installer for Deno, npm, pnpm, and Yarn and a one-file bot example before getting into what BotKit actually does: messages, events, multi-bot instances, and the pages it builds for a bot without any extra work from you.

The redesigned botkit.fedify.dev homepage: a framed dinosaur mascot in a model-kit sprue, a one-file install snippet, and a rotating code sample.

The deployment guides grew alongside the new landing page: they were split apart and fleshed out, and a new Cloudflare Workers guide joins the existing Deno Deploy, Docker, and self-hosting guides.

A new look for your bot's pages

The pages BotKit serves for your bot (its profile, its posts, its follower list) got the same attention, in the opposite direction. Until now they were built on Pico CSS pulled from an external CDN: a fine default, but a generic one that made every BotKit-hosted bot look like a demo of the same template, and that quietly sent every visitor's browser off to fetch a stylesheet from someone else's server.

That's gone. Bot pages now use a self-contained design system, bundled with the package and served from BotKit's own content-addressed, cache-forever path: no external CDN, no build step, on either Deno or Node.js. The whole look is driven by a single accent color you choose (twenty names, the same legend Pico CSS uses, so your existing choice of color still works), tinting links, the follow button, and small highlights, while everything else stays quiet so your bot's name, avatar, and posts are what a visitor actually notices. A new PagesOptions.theme option ("auto", "light", or "dark") controls the color scheme independently of the accent. A repost is now marked and attributed to its original author instead of blending into the bot's own timeline.

A bot's redesigned profile page: a banner and avatar, bio with a link and mention, custom properties, follower and post counts, and a follow button, all tinted in the bot's chosen accent color.

If you want to go further than the accent color allows, PagesOptions.css still lets you inject custom CSS on top of BotKit's own stylesheet.

Multi-bot instances

Until this release, a BotKit process could only ever be one bot. Running a second bot meant standing up a whole second server, even when the two bots could easily have shared the same infrastructure. That limitation, raised in #16, is gone: the new createInstance() function creates an Instance that owns the shared plumbing (the key–value store, the message queue, the repository, and HTTP handling), and any number of bots can live on it side by side, each with its own actor identity and event handlers.

For a fixed, known set of bots, Instance.createBot() takes an identifier and a profile:

import { createInstance, text } from "@fedify/botkit";
import { MemoryKvStore } from "@fedify/fedify";

const instance = createInstance<void>({ kv: new MemoryKvStore() });

const greetBot = instance.createBot("greet", {
  username: "greetbot",
  name: "Greeting Bot",
});

greetBot.onFollow = async (session, followRequest) => {
  await followRequest.accept();
  await session.publish(text`Welcome, ${followRequest.follower}!`);
};

For a family of bots resolved on demand (one per region, one per customer, thousands of them backed by a database), pass a dispatcher function instead of a fixed identifier, and BotKit resolves and federates each one lazily:

const weatherBots = instance.createBot(async (ctx, identifier) => {
  if (!identifier.startsWith("weather_")) return null;
  const region = await db.getRegion(identifier.slice("weather_".length));
  if (region == null) return null;
  return { username: identifier, name: `${region.name} Weather Bot` };
});

weatherBots.onMention = async (session, message) => {
  const code = session.bot.identifier.slice("weather_".length);
  await message.reply(text`Current weather: ${await db.getWeather(code)}`);
};

Incoming activities are routed only to the bots they actually concern: the followed bot, the owner of a liked or replied-to message, mentioned bots, and bots followed by the sender. Multi-bot instances also serve a list of hosted bots at the web root, with each bot's own pages moving to /@{username}; a reserved instance actor signs shared-inbox requests when there's no single bot whose key obviously should.

None of this touches single-bot deployments: createBot() keeps working exactly as it always has, with the bot's pages staying at the web root and its data migrated to the new storage layout automatically on startup. If you maintain a custom Repository implementation, though, this is a breaking change worth planning for: every method now takes the owning bot's identifier as its first parameter, Session.bot is a read-only ReadonlyBot instead of a mutable Bot, and local object URIs carry the owning bot's identifier (old-format URIs are still recognized and permanently redirected, so links other servers stored keep working). The full picture, including how to move an existing single-bot deployment onto a multi-bot instance later, is in the new Instance concept document.

Thanks to @moreal, whose early work-in-progress explorations of this problem surfaced its two hardest design questions (mapping usernames to identifiers for dynamic bots, and routing object URIs that used to carry no owner information) well before this implementation settled on its final shape.

BotKit has supported quoting since 0.2.0, but only in the Misskey family's style: a quoteUrl property and a Link tag, sent without ever asking the quoted author. Mastodon 4.4 and 4.5 do things differently: they verify quotes through FEP-044f's consent handshake before showing them as quotes at all. Without that handshake, a BotKit bot's quotes never rendered as quotes on Mastodon, and quotes of a BotKit bot showed up as unverifiable.

BotKit now handles the FEP-044f handshake in both directions. When you quote a message, it sets the FEP-044f quote property and sends a QuoteRequest to the quoted author, alongside the Create it already sent. Publishing stays non-blocking: the post goes out immediately, and the quote is upgraded once (or if) approval arrives:

const message = await session.publish(text`This message quotes another one.`, {
  quoteTarget: quoted,
});
console.log(message.quoteApprovalState); // "pending"

On the receiving side, a new quotePolicy option (on createBot(), and per message on Session.publish()) controls how your bot answers incoming quote requests: automatically for everyone ("public", the default), automatically for followers only, never ("nobody"), or held for manual review through the new Bot.onQuoteRequest event:

bot.onQuoteRequest = async (session, request) => {
  if (request.state === "pending") await request.accept();
};

Bot.onQuoteAccepted, Bot.onQuoteRejected, and Bot.onQuoteRevoked cover what happens next for quotes your own bot sent, Message.quoteApproved reports whether an incoming quote carries a valid authorization stamp, and AuthorizedMessage.unauthorizeQuote() lets you revoke one you previously granted. The legacy quoteUrl and Misskey-style tags are still sent alongside the new property, so nothing about quoting on Misskey and its relatives changes. The full design is spread across #27 through #33.

A Redis repository (@fedify/botkit-redis)

BotKit has had a SQLite repository since 0.3.0 and a PostgreSQL one since 0.4.0, but neither is the natural fit for a bot that runs as several worker processes sharing one store, which is exactly the shape a Redis-backed deployment usually takes. The new @fedify/botkit-redis package fills that gap with RedisRepository, built directly on Redis strings, sets, and sorted sets rather than going through a generic key–value abstraction:

import { createBot, MemoryKvStore } from "@fedify/botkit";
import { RedisRepository } from "@fedify/botkit-redis";

const bot = createBot({
  username: "mybot",
  kv: new MemoryKvStore(),
  repository: new RedisRepository({ url: "redis://localhost:6379/0" }),
});

Because several workers can share one Redis instance, the read-modify-write paths that matter most under concurrency (message updates, follower bookkeeping, quote authorization indexes) are protected by short-lived locks that get renewed while a slow update is still running, rather than by assuming only one process ever touches the data at a time. The package supports both a connection URL it manages itself and an existing node-redis client you inject and keep control of, and it's available for both Deno and Node.js. #12 and #35 cover the rest of it.

Smaller improvements

The npm package's TypeScript declaration files no longer accidentally include the runtime Temporal polyfill code, which had been leaking into consumers' .d.ts output. Fedify was upgraded to 2.3.1, Hono to 4.12.27, and LogTape to 2.2.3.


As always, the full list of changes is in CHANGES.md, and every API mentioned above is documented at botkit.fedify.dev. Thank you to everyone who filed issues, opened discussions, and tried BotKit out.

If you build something with BotKit, run into a rough edge, or just want to talk through an idea before opening an issue, GitHub Discussions is the place for exactly that. For something closer to real time, BotKit's chat now lives on Matrix at #fedify:matrix.org. Drop in and say hello.

matrix.to

You're invited to talk on Matrix

You're invited to talk on Matrix

@botkit@hackers.pub

We're pleased to announce BotKit 0.5.0. This release changes how both the docs site and every bot's own pages look, and it stops limiting a server to one bot: a single process can now host a whole fleet of them. Quoting, and being quoted, goes through a consent step under FEP-044f, and a Redis-backed repository joins the SQLite and PostgreSQL ones for shared production storage. A few of these changes are breaking; see below for what to check before you upgrade.

A new look for botkit.fedify.dev

Until this release, botkit.fedify.dev read like a stock VitePress site: a workable but generic shell wrapped around the docs, with none of BotKit's own personality showing through.

The theme and the landing page are both new. The palette now matches the real logo greens instead of a generic default, and headlines are set in Space Grotesk, paired with Inter for everything else; the display font is self-hosted, so no visitor's IP is handed to a font CDN. The new landing page frames BotKit's dinosaur mascot inside its signature unassembled-model-kit sprue frame, then leads with a tabbed installer for Deno, npm, pnpm, and Yarn and a one-file bot example before getting into what BotKit actually does: messages, events, multi-bot instances, and the pages it builds for a bot without any extra work from you.

The redesigned botkit.fedify.dev homepage: a framed dinosaur mascot in a model-kit sprue, a one-file install snippet, and a rotating code sample.

The deployment guides grew alongside the new landing page: they were split apart and fleshed out, and a new Cloudflare Workers guide joins the existing Deno Deploy, Docker, and self-hosting guides.

A new look for your bot's pages

The pages BotKit serves for your bot (its profile, its posts, its follower list) got the same attention, in the opposite direction. Until now they were built on Pico CSS pulled from an external CDN: a fine default, but a generic one that made every BotKit-hosted bot look like a demo of the same template, and that quietly sent every visitor's browser off to fetch a stylesheet from someone else's server.

That's gone. Bot pages now use a self-contained design system, bundled with the package and served from BotKit's own content-addressed, cache-forever path: no external CDN, no build step, on either Deno or Node.js. The whole look is driven by a single accent color you choose (twenty names, the same legend Pico CSS uses, so your existing choice of color still works), tinting links, the follow button, and small highlights, while everything else stays quiet so your bot's name, avatar, and posts are what a visitor actually notices. A new PagesOptions.theme option ("auto", "light", or "dark") controls the color scheme independently of the accent. A repost is now marked and attributed to its original author instead of blending into the bot's own timeline.

A bot's redesigned profile page: a banner and avatar, bio with a link and mention, custom properties, follower and post counts, and a follow button, all tinted in the bot's chosen accent color.

If you want to go further than the accent color allows, PagesOptions.css still lets you inject custom CSS on top of BotKit's own stylesheet.

Multi-bot instances

Until this release, a BotKit process could only ever be one bot. Running a second bot meant standing up a whole second server, even when the two bots could easily have shared the same infrastructure. That limitation, raised in #16, is gone: the new createInstance() function creates an Instance that owns the shared plumbing (the key–value store, the message queue, the repository, and HTTP handling), and any number of bots can live on it side by side, each with its own actor identity and event handlers.

For a fixed, known set of bots, Instance.createBot() takes an identifier and a profile:

import { createInstance, text } from "@fedify/botkit";
import { MemoryKvStore } from "@fedify/fedify";

const instance = createInstance<void>({ kv: new MemoryKvStore() });

const greetBot = instance.createBot("greet", {
  username: "greetbot",
  name: "Greeting Bot",
});

greetBot.onFollow = async (session, followRequest) => {
  await followRequest.accept();
  await session.publish(text`Welcome, ${followRequest.follower}!`);
};

For a family of bots resolved on demand (one per region, one per customer, thousands of them backed by a database), pass a dispatcher function instead of a fixed identifier, and BotKit resolves and federates each one lazily:

const weatherBots = instance.createBot(async (ctx, identifier) => {
  if (!identifier.startsWith("weather_")) return null;
  const region = await db.getRegion(identifier.slice("weather_".length));
  if (region == null) return null;
  return { username: identifier, name: `${region.name} Weather Bot` };
});

weatherBots.onMention = async (session, message) => {
  const code = session.bot.identifier.slice("weather_".length);
  await message.reply(text`Current weather: ${await db.getWeather(code)}`);
};

Incoming activities are routed only to the bots they actually concern: the followed bot, the owner of a liked or replied-to message, mentioned bots, and bots followed by the sender. Multi-bot instances also serve a list of hosted bots at the web root, with each bot's own pages moving to /@{username}; a reserved instance actor signs shared-inbox requests when there's no single bot whose key obviously should.

None of this touches single-bot deployments: createBot() keeps working exactly as it always has, with the bot's pages staying at the web root and its data migrated to the new storage layout automatically on startup. If you maintain a custom Repository implementation, though, this is a breaking change worth planning for: every method now takes the owning bot's identifier as its first parameter, Session.bot is a read-only ReadonlyBot instead of a mutable Bot, and local object URIs carry the owning bot's identifier (old-format URIs are still recognized and permanently redirected, so links other servers stored keep working). The full picture, including how to move an existing single-bot deployment onto a multi-bot instance later, is in the new Instance concept document.

Thanks to @moreal, whose early work-in-progress explorations of this problem surfaced its two hardest design questions (mapping usernames to identifiers for dynamic bots, and routing object URIs that used to carry no owner information) well before this implementation settled on its final shape.

BotKit has supported quoting since 0.2.0, but only in the Misskey family's style: a quoteUrl property and a Link tag, sent without ever asking the quoted author. Mastodon 4.4 and 4.5 do things differently: they verify quotes through FEP-044f's consent handshake before showing them as quotes at all. Without that handshake, a BotKit bot's quotes never rendered as quotes on Mastodon, and quotes of a BotKit bot showed up as unverifiable.

BotKit now handles the FEP-044f handshake in both directions. When you quote a message, it sets the FEP-044f quote property and sends a QuoteRequest to the quoted author, alongside the Create it already sent. Publishing stays non-blocking: the post goes out immediately, and the quote is upgraded once (or if) approval arrives:

const message = await session.publish(text`This message quotes another one.`, {
  quoteTarget: quoted,
});
console.log(message.quoteApprovalState); // "pending"

On the receiving side, a new quotePolicy option (on createBot(), and per message on Session.publish()) controls how your bot answers incoming quote requests: automatically for everyone ("public", the default), automatically for followers only, never ("nobody"), or held for manual review through the new Bot.onQuoteRequest event:

bot.onQuoteRequest = async (session, request) => {
  if (request.state === "pending") await request.accept();
};

Bot.onQuoteAccepted, Bot.onQuoteRejected, and Bot.onQuoteRevoked cover what happens next for quotes your own bot sent, Message.quoteApproved reports whether an incoming quote carries a valid authorization stamp, and AuthorizedMessage.unauthorizeQuote() lets you revoke one you previously granted. The legacy quoteUrl and Misskey-style tags are still sent alongside the new property, so nothing about quoting on Misskey and its relatives changes. The full design is spread across #27 through #33.

A Redis repository (@fedify/botkit-redis)

BotKit has had a SQLite repository since 0.3.0 and a PostgreSQL one since 0.4.0, but neither is the natural fit for a bot that runs as several worker processes sharing one store, which is exactly the shape a Redis-backed deployment usually takes. The new @fedify/botkit-redis package fills that gap with RedisRepository, built directly on Redis strings, sets, and sorted sets rather than going through a generic key–value abstraction:

import { createBot, MemoryKvStore } from "@fedify/botkit";
import { RedisRepository } from "@fedify/botkit-redis";

const bot = createBot({
  username: "mybot",
  kv: new MemoryKvStore(),
  repository: new RedisRepository({ url: "redis://localhost:6379/0" }),
});

Because several workers can share one Redis instance, the read-modify-write paths that matter most under concurrency (message updates, follower bookkeeping, quote authorization indexes) are protected by short-lived locks that get renewed while a slow update is still running, rather than by assuming only one process ever touches the data at a time. The package supports both a connection URL it manages itself and an existing node-redis client you inject and keep control of, and it's available for both Deno and Node.js. #12 and #35 cover the rest of it.

Smaller improvements

The npm package's TypeScript declaration files no longer accidentally include the runtime Temporal polyfill code, which had been leaking into consumers' .d.ts output. Fedify was upgraded to 2.3.1, Hono to 4.12.27, and LogTape to 2.2.3.


As always, the full list of changes is in CHANGES.md, and every API mentioned above is documented at botkit.fedify.dev. Thank you to everyone who filed issues, opened discussions, and tried BotKit out.

If you build something with BotKit, run into a rough edge, or just want to talk through an idea before opening an issue, GitHub Discussions is the place for exactly that. For something closer to real time, BotKit's chat now lives on Matrix at #fedify:matrix.org. Drop in and say hello.

matrix.to

You're invited to talk on Matrix

You're invited to talk on Matrix

@botkit@hackers.pub

We're pleased to announce BotKit 0.5.0. This release changes how both the docs site and every bot's own pages look, and it stops limiting a server to one bot: a single process can now host a whole fleet of them. Quoting, and being quoted, goes through a consent step under FEP-044f, and a Redis-backed repository joins the SQLite and PostgreSQL ones for shared production storage. A few of these changes are breaking; see below for what to check before you upgrade.

A new look for botkit.fedify.dev

Until this release, botkit.fedify.dev read like a stock VitePress site: a workable but generic shell wrapped around the docs, with none of BotKit's own personality showing through.

The theme and the landing page are both new. The palette now matches the real logo greens instead of a generic default, and headlines are set in Space Grotesk, paired with Inter for everything else; the display font is self-hosted, so no visitor's IP is handed to a font CDN. The new landing page frames BotKit's dinosaur mascot inside its signature unassembled-model-kit sprue frame, then leads with a tabbed installer for Deno, npm, pnpm, and Yarn and a one-file bot example before getting into what BotKit actually does: messages, events, multi-bot instances, and the pages it builds for a bot without any extra work from you.

The redesigned botkit.fedify.dev homepage: a framed dinosaur mascot in a model-kit sprue, a one-file install snippet, and a rotating code sample.

The deployment guides grew alongside the new landing page: they were split apart and fleshed out, and a new Cloudflare Workers guide joins the existing Deno Deploy, Docker, and self-hosting guides.

A new look for your bot's pages

The pages BotKit serves for your bot (its profile, its posts, its follower list) got the same attention, in the opposite direction. Until now they were built on Pico CSS pulled from an external CDN: a fine default, but a generic one that made every BotKit-hosted bot look like a demo of the same template, and that quietly sent every visitor's browser off to fetch a stylesheet from someone else's server.

That's gone. Bot pages now use a self-contained design system, bundled with the package and served from BotKit's own content-addressed, cache-forever path: no external CDN, no build step, on either Deno or Node.js. The whole look is driven by a single accent color you choose (twenty names, the same legend Pico CSS uses, so your existing choice of color still works), tinting links, the follow button, and small highlights, while everything else stays quiet so your bot's name, avatar, and posts are what a visitor actually notices. A new PagesOptions.theme option ("auto", "light", or "dark") controls the color scheme independently of the accent. A repost is now marked and attributed to its original author instead of blending into the bot's own timeline.

A bot's redesigned profile page: a banner and avatar, bio with a link and mention, custom properties, follower and post counts, and a follow button, all tinted in the bot's chosen accent color.

If you want to go further than the accent color allows, PagesOptions.css still lets you inject custom CSS on top of BotKit's own stylesheet.

Multi-bot instances

Until this release, a BotKit process could only ever be one bot. Running a second bot meant standing up a whole second server, even when the two bots could easily have shared the same infrastructure. That limitation, raised in #16, is gone: the new createInstance() function creates an Instance that owns the shared plumbing (the key–value store, the message queue, the repository, and HTTP handling), and any number of bots can live on it side by side, each with its own actor identity and event handlers.

For a fixed, known set of bots, Instance.createBot() takes an identifier and a profile:

import { createInstance, text } from "@fedify/botkit";
import { MemoryKvStore } from "@fedify/fedify";

const instance = createInstance<void>({ kv: new MemoryKvStore() });

const greetBot = instance.createBot("greet", {
  username: "greetbot",
  name: "Greeting Bot",
});

greetBot.onFollow = async (session, followRequest) => {
  await followRequest.accept();
  await session.publish(text`Welcome, ${followRequest.follower}!`);
};

For a family of bots resolved on demand (one per region, one per customer, thousands of them backed by a database), pass a dispatcher function instead of a fixed identifier, and BotKit resolves and federates each one lazily:

const weatherBots = instance.createBot(async (ctx, identifier) => {
  if (!identifier.startsWith("weather_")) return null;
  const region = await db.getRegion(identifier.slice("weather_".length));
  if (region == null) return null;
  return { username: identifier, name: `${region.name} Weather Bot` };
});

weatherBots.onMention = async (session, message) => {
  const code = session.bot.identifier.slice("weather_".length);
  await message.reply(text`Current weather: ${await db.getWeather(code)}`);
};

Incoming activities are routed only to the bots they actually concern: the followed bot, the owner of a liked or replied-to message, mentioned bots, and bots followed by the sender. Multi-bot instances also serve a list of hosted bots at the web root, with each bot's own pages moving to /@{username}; a reserved instance actor signs shared-inbox requests when there's no single bot whose key obviously should.

None of this touches single-bot deployments: createBot() keeps working exactly as it always has, with the bot's pages staying at the web root and its data migrated to the new storage layout automatically on startup. If you maintain a custom Repository implementation, though, this is a breaking change worth planning for: every method now takes the owning bot's identifier as its first parameter, Session.bot is a read-only ReadonlyBot instead of a mutable Bot, and local object URIs carry the owning bot's identifier (old-format URIs are still recognized and permanently redirected, so links other servers stored keep working). The full picture, including how to move an existing single-bot deployment onto a multi-bot instance later, is in the new Instance concept document.

Thanks to @moreal, whose early work-in-progress explorations of this problem surfaced its two hardest design questions (mapping usernames to identifiers for dynamic bots, and routing object URIs that used to carry no owner information) well before this implementation settled on its final shape.

BotKit has supported quoting since 0.2.0, but only in the Misskey family's style: a quoteUrl property and a Link tag, sent without ever asking the quoted author. Mastodon 4.4 and 4.5 do things differently: they verify quotes through FEP-044f's consent handshake before showing them as quotes at all. Without that handshake, a BotKit bot's quotes never rendered as quotes on Mastodon, and quotes of a BotKit bot showed up as unverifiable.

BotKit now handles the FEP-044f handshake in both directions. When you quote a message, it sets the FEP-044f quote property and sends a QuoteRequest to the quoted author, alongside the Create it already sent. Publishing stays non-blocking: the post goes out immediately, and the quote is upgraded once (or if) approval arrives:

const message = await session.publish(text`This message quotes another one.`, {
  quoteTarget: quoted,
});
console.log(message.quoteApprovalState); // "pending"

On the receiving side, a new quotePolicy option (on createBot(), and per message on Session.publish()) controls how your bot answers incoming quote requests: automatically for everyone ("public", the default), automatically for followers only, never ("nobody"), or held for manual review through the new Bot.onQuoteRequest event:

bot.onQuoteRequest = async (session, request) => {
  if (request.state === "pending") await request.accept();
};

Bot.onQuoteAccepted, Bot.onQuoteRejected, and Bot.onQuoteRevoked cover what happens next for quotes your own bot sent, Message.quoteApproved reports whether an incoming quote carries a valid authorization stamp, and AuthorizedMessage.unauthorizeQuote() lets you revoke one you previously granted. The legacy quoteUrl and Misskey-style tags are still sent alongside the new property, so nothing about quoting on Misskey and its relatives changes. The full design is spread across #27 through #33.

A Redis repository (@fedify/botkit-redis)

BotKit has had a SQLite repository since 0.3.0 and a PostgreSQL one since 0.4.0, but neither is the natural fit for a bot that runs as several worker processes sharing one store, which is exactly the shape a Redis-backed deployment usually takes. The new @fedify/botkit-redis package fills that gap with RedisRepository, built directly on Redis strings, sets, and sorted sets rather than going through a generic key–value abstraction:

import { createBot, MemoryKvStore } from "@fedify/botkit";
import { RedisRepository } from "@fedify/botkit-redis";

const bot = createBot({
  username: "mybot",
  kv: new MemoryKvStore(),
  repository: new RedisRepository({ url: "redis://localhost:6379/0" }),
});

Because several workers can share one Redis instance, the read-modify-write paths that matter most under concurrency (message updates, follower bookkeeping, quote authorization indexes) are protected by short-lived locks that get renewed while a slow update is still running, rather than by assuming only one process ever touches the data at a time. The package supports both a connection URL it manages itself and an existing node-redis client you inject and keep control of, and it's available for both Deno and Node.js. #12 and #35 cover the rest of it.

Smaller improvements

The npm package's TypeScript declaration files no longer accidentally include the runtime Temporal polyfill code, which had been leaking into consumers' .d.ts output. Fedify was upgraded to 2.3.1, Hono to 4.12.27, and LogTape to 2.2.3.


As always, the full list of changes is in CHANGES.md, and every API mentioned above is documented at botkit.fedify.dev. Thank you to everyone who filed issues, opened discussions, and tried BotKit out.

If you build something with BotKit, run into a rough edge, or just want to talk through an idea before opening an issue, GitHub Discussions is the place for exactly that. For something closer to real time, BotKit's chat now lives on Matrix at #fedify:matrix.org. Drop in and say hello.

matrix.to

You're invited to talk on Matrix

You're invited to talk on Matrix

@box464@mastodon.social
@fedify@hackers.pub

A quiet failure

Picture the moment your server sends its first Follow activity to Mastodon. You read the spec, built the JSON, signed the HTTP request, and POSTed it with care. What comes back is a single line: 401 Unauthorized. No body. No explanation.

What went wrong? Maybe the clock behind your Date header drifted a few minutes. Maybe the hash in your Digest header is off. Maybe you uppercased the (request-target) pseudo-header while building the signing string, or published your public key as PEM where the other side wanted multibase. The remote server won't tell you. So you start reading someone else's server code to debug your own.

I know, because I've been there. Fedify began as a casualty of another project. I set out to build a single-user microblogging server, the one that would later become Hollo, and started implementing ActivityPub from scratch. Somewhere between the signature specs and the JSON-LD, the protocol work swallowed the product, and I put the whole thing down. What I picked back up wasn't the app. It was the framework the app should have had. Fedify shipped first; only then could Hollo exist, built on top of it. (I've told this story at more length in A year with the fediverse.)

ActivityPub development gets hard in a few very specific places. In this post I want to walk through five of them, then show what each one looks like with Fedify. If you've spent time in the fediverse, you'll probably nod along. If you haven't, you may wonder why anyone would do all of this by hand. Either way, the conclusion is the same: nobody has to anymore.

Five scenes

Scene 1: there is more than one standard

ActivityPub servers authenticate each other with HTTP signatures. Except there isn't one signature spec. Most of the fediverse runs on draft-cavage-http-signatures-12, an expired draft that never became a standard. The actual standard exists too: RFC 9421, HTTP Message Signatures. The problem is that you can't know which one a given server accepts until you try.

A real-world implementation therefore has to sign with one spec, see whether it gets rejected, re-sign with the other, and remember per server which one worked so it can skip the dance next time. The fediverse calls this double-knocking. Yes, you get to implement it yourself.

That's still not the end. HTTP signatures only prove who sent a request. For situations like inbox forwarding, where you relay an activity you received to a third party, you need signatures that live on the document itself: Linked Data Signatures and Object Integrity Proofs. Four signature mechanisms in total, and two kinds of keys to manage: RSA and Ed25519.

Scene 2: one document, many shapes

ActivityPub's wire format is JSON-LD, and in JSON-LD the same document can take many shapes. This is easier to show than to explain. Here is a Create activity one server might send:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Create",
  "actor": "https://example.com/users/alice",
  "to": "https://www.w3.org/ns/activitystreams#Public",
  "object": {
    "type": "Note",
    "id": "https://example.com/notes/123",
    "content": "Hello, fediverse!"
  }
}

And here is a semantically identical activity from another server:

{
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "type": "Create",
  "actor": {
    "type": "Person",
    "id": "https://example.com/users/alice",
    "preferredUsername": "alice"
  },
  "to": ["as:Public"],
  "object": "https://example.com/notes/123"
}

actor turned from a URI string into an inline object. to turned from a string into an array. object went the other way, from an inline object to a URI. Even the address that means “public” has three valid spellings: https://www.w3.org/ns/activitystreams#Public, as:Public, and plain Public. Your parser has to accept every combination, and which one arrives depends on the sender's implementation.

The spec-compliant answer is to normalize every document with a JSON-LD processor, expansion followed by compaction. In practice many implementations treat it all as “just JSON” and quietly break on whatever shape some server happens to emit. Either way, you end up with defensive code smeared across the whole codebase: is this a string? An array? An object? A URI I have to fetch?

Scene 3: the zombie post

A user publishes a post, spots a typo, and deletes it right away. Your server sends a Create, then a Delete. Thanks to network weather, some receiving server gets the Delete first and the Create second. It ignores the deletion of a post that doesn't exist yet, then dutifully processes the creation of a post that was already deleted. That post now lives on that server forever, while its author believes it's gone.

Then there's scale. With five thousand followers, one post means thousands of HTTP deliveries. Do that inline in the request handler and your publish button takes half a minute to respond, or the server falls over. Fine, use a queue. Deliveries fail, so retry them. On what schedule? Exponential backoff. How many times? And is a 500 Internal Server Error the same kind of failure as a 410 Gone? When do you clean up three thousand followers on a server that no longer exists? Should you keep hammering a host that has been down for days?

At some point it dawns on you that this is no longer protocol implementation. It's distributed systems engineering.

Scene 4: it's not a spec, it's an ecosystem

Even perfect spec compliance doesn't buy you interoperability. A few examples from the field:

  • Mastodon's secure mode requires HTTP signatures on GET requests too (so-called authorized fetch). Now suppose both servers run in that mode. To fetch the other side's public key you must sign your request; to verify your signature, the other side must first fetch your key. Deadlock. The community's workaround is to sign with an “instance actor” that represents the server itself. You won't find that in the spec.
  • Threads can't parse activities whose actor is embedded as an inline object. When sending to Threads, the actor has to be a URI.
  • Lemmy silently rejects Group actors that lack fields Mastodon never asks for, such as a moderators collection linked via attributedTo and a featured collection.
  • Misskey carries vocabulary extensions of its own; quote posts alone go by three different property names across implementations.

The list keeps growing. Interoperability here is not something you finish once and stop thinking about. It's maintenance, forever.

Scene 5: insecure by default

Build it from scratch, and you start out wide open. Skip signature verification on incoming activities and anyone can inject a forged Follow or Delete. Leave the document loader unrestricted and a malicious activity can point it at http://169.254.169.254/ or your internal network, turning your server into an SSRF proxy. Skip origin checks on embedded objects and any server can hand out a document claiming “here's what the Mastodon lead developer said.”

What these traps share is that nothing happens when you fall into them. Everything appears to work. Until someone exploits it.

Ghost ran into this too

If you're thinking “surely our team would manage,” consider Ghost: a leading open-source publishing platform used by thousands of journalists and creators, and a team that set out to build its own ActivityPub support.

We can definitely attest to the problems that Fedify is working hard to solve, because even in just a few weeks of early prototyping we were running into the issues described above right away.

From Alright, let's Fedify

Ghost ended up building its ActivityPub layer on Fedify.

So I put all of it in a framework

Fedify is a TypeScript library for building federated server apps on ActivityPub and the standards around it. It runs on Deno, Node.js, and Bun, and supports edge runtimes like Cloudflare Workers. The design goal hasn't changed since the beginning: keep everything in those five scenes out of application code.

Here are the same five scenes again, this time with Fedify.

Scene 1, revisited: the signature war is the framework's job

Here is everything it takes to put one actor on the fediverse:

import { createFederation, generateCryptoKeyPair, MemoryKvStore } from "@fedify/fedify";
import { Endpoints, Person } from "@fedify/vocab";

const federation = createFederation<void>({
  kv: new MemoryKvStore(),  // Swap for Redis, PostgreSQL, etc. in production
});

federation
  .setActorDispatcher("/users/{identifier}", async (ctx, identifier) => {
    if (identifier !== "alice") return null;
    const keyPairs = await ctx.getActorKeyPairs(identifier);
    return new Person({
      id: ctx.getActorUri(identifier),
      preferredUsername: identifier,
      name: "Alice",
      inbox: ctx.getInboxUri(identifier),
      endpoints: new Endpoints({ sharedInbox: ctx.getInboxUri() }),
      publicKey: keyPairs[0].cryptographicKey,
      assertionMethods: keyPairs.map((keyPair) => keyPair.multikey),
    });
  })
  .setKeyPairsDispatcher(async (ctx, identifier) => {
    // In real code you'd persist these in a database; this shows the gist
    return [await generateCryptoKeyPair()];
  });

The moment this code runs:

  • Every outgoing request gets signed. With an RSA key, Fedify emits HTTP Signatures and Linked Data Signatures; add an Ed25519 key and it attaches Object Integrity Proofs as well. All four mechanisms coexist on a single activity, and each receiver verifies with the strongest one it understands.
  • Fedify does the double-knocking for you: first contact goes out as RFC 9421, a rejection triggers a draft-cavage retry, and the winning spec is cached per server. If the rejection carries an Accept-Signature challenge (RFC 9421 §5), Fedify reads it and re-signs with exactly the components the server asked for.
  • Incoming signatures are verified before your code sees anything. An activity that fails verification never reaches your listeners.
  • One bonus. Because you registered an actor dispatcher, you now have a WebFinger (RFC 7033) server, for free. Type @alice@example.com into Mastodon's search box and your actor comes up. You never wrote a line of WebFinger code.

Scene 2, revisited: types instead of JSON-LD

Fedify ships about eighty classes covering the whole Activity Vocabulary plus the major vendor extensions. The classes are typed and immutable, and their accessors absorb the shape differences that JSON-LD allows.

const actor = await ctx.lookupObject("@hongminhee@hollo.social");
if (actor instanceof Person) {
  console.log(actor.name);           // Safe whether it's a string or langString
  const followers = await actor.getFollowers();  // Fetches a URI, unwraps an object
}

lookupObject() takes a handle and runs the whole chain for you, WebFinger discovery included. Accessors like getFollowers() behave the same way whether the value is a URI reference or an inline object, and fetched values are cached.

Vendor fragmentation gets stitched up here too. The three competing quote properties (quoteUri, _misskey_quote, quoteUrl) are unified behind one API, next to the emerging FEP-044f quote. Misskey's isCat property exists as a type, so your server can determine cat-ness with full type safety. It sounds like a joke, but a few dozen details of exactly this kind are what interoperability is actually made of.

Scene 3, revisited: the zombie post dies in one line

Delivery infrastructure first. Plug a message queue into createFederation() and delivery moves to the background, with automatic retries under exponential backoff (up to ten attempts by default). When a post goes to thousands of followers, two-stage fan-out kicks in: a single consolidated message enters the queue, and a background worker splits it into per-server delivery tasks. The publish button responds immediately.

Retries create a problem of their own: the same activity can arrive twice. Fedify keeps a 24-hour idempotence cache of processed activities, so duplicates get detected and skipped before they reach your handlers.

As for the zombie post, the fix is one option:

await ctx.sendActivity(
  { identifier: "alice" },
  "followers",           // Collects recipients from your followers collection
  deleteActivity,
  { orderingKey: post.id },  // Same key = in-order delivery per server
);

Activities that share an orderingKey are delivered to each receiving server in the order they were sent. A Delete can no longer overtake its Create. Activities with different keys still go out in parallel, so throughput survives.

Fedify also handles dead servers. On a 404 Not Found or 410 Gone, it stops retrying and calls a handler you register. If the delivery went to a shared inbox, you also get the list of followers behind it, so you can prune vanished accounts on the spot. Hosts that fail repeatedly trip a per-host circuit breaker that holds deliveries and probes periodically until the host recovers. It's on by default; there's nothing to configure.

Scene 4, revisited: we track the quirks so you don't

Here is how Fedify disarms the traps from scene 4:

  • Authorized fetch: chain .authorize() onto a dispatcher and the verified identity of the requester lands in your callback. Blocklists, private collections, whatever your app needs is plain application logic. The instance-actor deadlock has a supported pattern as well.
  • Threads and inline actors: an activity transformer, enabled by default, rewrites inline actors into URIs on the way out. You don't need to know Threads has this problem.
  • Lemmy's requirements: the custom collection API exposes a moderators collection in a few lines, and Lemmy's JSON-LD context ships preloaded.

When a new quirk surfaces in the wild, the fix lands in Fedify, not in every application separately. Each interoperability lesson gets learned once.

Scene 5, revisited: becoming unsafe takes effort

Fedify's defaults point the other way.

  • Signature verification is something you turn off (for tests), not something you remember to turn on.
  • The document loader refuses private address ranges and loopback out of the box, with DNS rebinding accounted for. To open yourself up to SSRF you have to flip an option whose very name announces it's for testing.
  • When an embedded object's origin differs from its parent document's, the accessor refuses to trust it and re-fetches from the source (based on FEP-fe34). Content spoofing is stopped at the property access level.

In a from-scratch implementation, you have to keep remembering to do things safely. In Fedify, the unsafe path is the one that takes deliberate effort. For a federated server, with its tangle of trust boundaries, that's the right way around.

Your stack stays your stack

“Fine, but what if it doesn't fit our stack?” Fedify was built to fit the stack you already have. There are thirteen web framework integrations: servers like Express, Hono, Fastify, Koa, NestJS, and Elysia, and meta-frameworks like Next.js, Nuxt, SvelteKit, Astro, SolidStart, and Fresh. Middleware handles content negotiation, so the same URL in your existing app serves HTML to browsers and JSON-LD to the fediverse.

Fedify doesn't dictate your database either. For its own storage it asks for one key–value interface, with seven adapters available (Redis, PostgreSQL, MySQL/MariaDB, SQLite, Deno KV, Cloudflare Workers KV, in-memory). Message queues come in eight flavors (PostgreSQL, Redis, AMQP/RabbitMQ, and so on), and you can implement the interface yourself if none fits. Your domain data stays in whatever database and ORM you already use.

Already running federation on another library? There are migration guides with data migration scripts for moving from activitypub-express and friends without losing your existing followers.

The core isn't the ceiling, either. Higher-level packages build on it: @fedify/relay gives you a complete ActivityPub relay server in a single function call, and @fedify/backfill reconstructs incomplete conversation threads by walking the rest of the fediverse for you.

Tools for the whole development loop

A quieter misery of federated development has always been the missing tooling. Fedify comes with tools for every stage of the loop.

fedify init scaffolds a project in one line, and fedify tunnel exposes your local server over HTTPS so you can test against real Mastodon. Activities your server sends can be received by fedify inbox, a disposable inbox server spun up on the spot; whatever other servers publish, you can inspect with fedify lookup. My personal favorite is fedify lookup --authorized-fetch, which generates a one-off key pair and stands up a temporary ActivityPub server just to make a signed request for an object behind secure mode. The CLI is also useful to ActivityPub developers who don't use Fedify at all.

While you write code, an ActivityPub-specific linter (@fedify/lint) catches twenty kinds of interoperability bugs, like an actor missing its inbox. Tests run without the network using mocks from @fedify/testing. Once the server is up, attach the debug dashboard (@fedify/debugger) with one line and watch activities and signature verification results in your browser, live. In production there's built-in OpenTelemetry instrumentation (28 span types, 37 metrics) plus a monitoring guide, and when performance matters, fedify bench, a load-testing tool built for ActivityPub, catches regressions in CI.

As far as I know, no other ActivityPub framework ships even one of the tools in this section.

The documentation is part of the tooling. The official docs run to a thirty-chapter manual and five tutorials, and they go well past API listings. There's an operations chapter with ready-made PromQL queries and alerting rules for watching your queue backlog, and a field-guide chapter that documents de facto conventions, like which property makes your avatar show up in Mastodon, with screenshots. At two in the morning, when federation is broken and you don't know why, this is the difference between a bad night and a short one.

It's already running

Fedify is not a thought experiment. Ghost's ActivityPub service, mentioned above, is built on it. So are Encyclia, which bridges ORCID researcher records into the fediverse; SiliconBeest, running serverless on Cloudflare Workers; Typo Blue, a Korean blogging platform; Hollo, my own single-user microblogging platform; and Hackers' Pub, run by its community. Hollo, by the way, is the app from the beginning of this post: the project I once had to shelve, finished at last on the framework it forced into existence.

The tutorials give a concrete sense of scale. They walk you from a single-file server, a few dozen lines, that Mastodon can follow, through an image sharing service in roughly 750 lines that fully interoperates with Pixelfed (follows, likes, comments), up to a community platform federating both ways with the real lemmy.ml.

The fediverse needs more apps

I didn't build Fedify to mint more ActivityPub experts. Rather the opposite. I believe the fediverse will only grow beyond microblogging when developers can build federated apps without knowing ActivityPub's fine print. Signature spec transitions and JSON-LD compaction are problems that belong inside a framework, not barriers in front of someone with a new idea.

Starting takes one line:

npm init @fedify

Follow the first tutorial and by the end, Mastodon can find your server. If you get stuck, come find us in the Matrix room or GitHub Discussions. See you in the fediverse.

github.com

fedify-dev/fedify · Discussions

Explore the GitHub Discussions forum for fedify-dev fedify. Discuss code, ask questions & collaborate with the developer community.

@fedify@hackers.pub

A quiet failure

Picture the moment your server sends its first Follow activity to Mastodon. You read the spec, built the JSON, signed the HTTP request, and POSTed it with care. What comes back is a single line: 401 Unauthorized. No body. No explanation.

What went wrong? Maybe the clock behind your Date header drifted a few minutes. Maybe the hash in your Digest header is off. Maybe you uppercased the (request-target) pseudo-header while building the signing string, or published your public key as PEM where the other side wanted multibase. The remote server won't tell you. So you start reading someone else's server code to debug your own.

I know, because I've been there. Fedify began as a casualty of another project. I set out to build a single-user microblogging server, the one that would later become Hollo, and started implementing ActivityPub from scratch. Somewhere between the signature specs and the JSON-LD, the protocol work swallowed the product, and I put the whole thing down. What I picked back up wasn't the app. It was the framework the app should have had. Fedify shipped first; only then could Hollo exist, built on top of it. (I've told this story at more length in A year with the fediverse.)

ActivityPub development gets hard in a few very specific places. In this post I want to walk through five of them, then show what each one looks like with Fedify. If you've spent time in the fediverse, you'll probably nod along. If you haven't, you may wonder why anyone would do all of this by hand. Either way, the conclusion is the same: nobody has to anymore.

Five scenes

Scene 1: there is more than one standard

ActivityPub servers authenticate each other with HTTP signatures. Except there isn't one signature spec. Most of the fediverse runs on draft-cavage-http-signatures-12, an expired draft that never became a standard. The actual standard exists too: RFC 9421, HTTP Message Signatures. The problem is that you can't know which one a given server accepts until you try.

A real-world implementation therefore has to sign with one spec, see whether it gets rejected, re-sign with the other, and remember per server which one worked so it can skip the dance next time. The fediverse calls this double-knocking. Yes, you get to implement it yourself.

That's still not the end. HTTP signatures only prove who sent a request. For situations like inbox forwarding, where you relay an activity you received to a third party, you need signatures that live on the document itself: Linked Data Signatures and Object Integrity Proofs. Four signature mechanisms in total, and two kinds of keys to manage: RSA and Ed25519.

Scene 2: one document, many shapes

ActivityPub's wire format is JSON-LD, and in JSON-LD the same document can take many shapes. This is easier to show than to explain. Here is a Create activity one server might send:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Create",
  "actor": "https://example.com/users/alice",
  "to": "https://www.w3.org/ns/activitystreams#Public",
  "object": {
    "type": "Note",
    "id": "https://example.com/notes/123",
    "content": "Hello, fediverse!"
  }
}

And here is a semantically identical activity from another server:

{
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "type": "Create",
  "actor": {
    "type": "Person",
    "id": "https://example.com/users/alice",
    "preferredUsername": "alice"
  },
  "to": ["as:Public"],
  "object": "https://example.com/notes/123"
}

actor turned from a URI string into an inline object. to turned from a string into an array. object went the other way, from an inline object to a URI. Even the address that means “public” has three valid spellings: https://www.w3.org/ns/activitystreams#Public, as:Public, and plain Public. Your parser has to accept every combination, and which one arrives depends on the sender's implementation.

The spec-compliant answer is to normalize every document with a JSON-LD processor, expansion followed by compaction. In practice many implementations treat it all as “just JSON” and quietly break on whatever shape some server happens to emit. Either way, you end up with defensive code smeared across the whole codebase: is this a string? An array? An object? A URI I have to fetch?

Scene 3: the zombie post

A user publishes a post, spots a typo, and deletes it right away. Your server sends a Create, then a Delete. Thanks to network weather, some receiving server gets the Delete first and the Create second. It ignores the deletion of a post that doesn't exist yet, then dutifully processes the creation of a post that was already deleted. That post now lives on that server forever, while its author believes it's gone.

Then there's scale. With five thousand followers, one post means thousands of HTTP deliveries. Do that inline in the request handler and your publish button takes half a minute to respond, or the server falls over. Fine, use a queue. Deliveries fail, so retry them. On what schedule? Exponential backoff. How many times? And is a 500 Internal Server Error the same kind of failure as a 410 Gone? When do you clean up three thousand followers on a server that no longer exists? Should you keep hammering a host that has been down for days?

At some point it dawns on you that this is no longer protocol implementation. It's distributed systems engineering.

Scene 4: it's not a spec, it's an ecosystem

Even perfect spec compliance doesn't buy you interoperability. A few examples from the field:

  • Mastodon's secure mode requires HTTP signatures on GET requests too (so-called authorized fetch). Now suppose both servers run in that mode. To fetch the other side's public key you must sign your request; to verify your signature, the other side must first fetch your key. Deadlock. The community's workaround is to sign with an “instance actor” that represents the server itself. You won't find that in the spec.
  • Threads can't parse activities whose actor is embedded as an inline object. When sending to Threads, the actor has to be a URI.
  • Lemmy silently rejects Group actors that lack fields Mastodon never asks for, such as a moderators collection linked via attributedTo and a featured collection.
  • Misskey carries vocabulary extensions of its own; quote posts alone go by three different property names across implementations.

The list keeps growing. Interoperability here is not something you finish once and stop thinking about. It's maintenance, forever.

Scene 5: insecure by default

Build it from scratch, and you start out wide open. Skip signature verification on incoming activities and anyone can inject a forged Follow or Delete. Leave the document loader unrestricted and a malicious activity can point it at http://169.254.169.254/ or your internal network, turning your server into an SSRF proxy. Skip origin checks on embedded objects and any server can hand out a document claiming “here's what the Mastodon lead developer said.”

What these traps share is that nothing happens when you fall into them. Everything appears to work. Until someone exploits it.

Ghost ran into this too

If you're thinking “surely our team would manage,” consider Ghost: a leading open-source publishing platform used by thousands of journalists and creators, and a team that set out to build its own ActivityPub support.

We can definitely attest to the problems that Fedify is working hard to solve, because even in just a few weeks of early prototyping we were running into the issues described above right away.

From Alright, let's Fedify

Ghost ended up building its ActivityPub layer on Fedify.

So I put all of it in a framework

Fedify is a TypeScript library for building federated server apps on ActivityPub and the standards around it. It runs on Deno, Node.js, and Bun, and supports edge runtimes like Cloudflare Workers. The design goal hasn't changed since the beginning: keep everything in those five scenes out of application code.

Here are the same five scenes again, this time with Fedify.

Scene 1, revisited: the signature war is the framework's job

Here is everything it takes to put one actor on the fediverse:

import { createFederation, generateCryptoKeyPair, MemoryKvStore } from "@fedify/fedify";
import { Endpoints, Person } from "@fedify/vocab";

const federation = createFederation<void>({
  kv: new MemoryKvStore(),  // Swap for Redis, PostgreSQL, etc. in production
});

federation
  .setActorDispatcher("/users/{identifier}", async (ctx, identifier) => {
    if (identifier !== "alice") return null;
    const keyPairs = await ctx.getActorKeyPairs(identifier);
    return new Person({
      id: ctx.getActorUri(identifier),
      preferredUsername: identifier,
      name: "Alice",
      inbox: ctx.getInboxUri(identifier),
      endpoints: new Endpoints({ sharedInbox: ctx.getInboxUri() }),
      publicKey: keyPairs[0].cryptographicKey,
      assertionMethods: keyPairs.map((keyPair) => keyPair.multikey),
    });
  })
  .setKeyPairsDispatcher(async (ctx, identifier) => {
    // In real code you'd persist these in a database; this shows the gist
    return [await generateCryptoKeyPair()];
  });

The moment this code runs:

  • Every outgoing request gets signed. With an RSA key, Fedify emits HTTP Signatures and Linked Data Signatures; add an Ed25519 key and it attaches Object Integrity Proofs as well. All four mechanisms coexist on a single activity, and each receiver verifies with the strongest one it understands.
  • Fedify does the double-knocking for you: first contact goes out as RFC 9421, a rejection triggers a draft-cavage retry, and the winning spec is cached per server. If the rejection carries an Accept-Signature challenge (RFC 9421 §5), Fedify reads it and re-signs with exactly the components the server asked for.
  • Incoming signatures are verified before your code sees anything. An activity that fails verification never reaches your listeners.
  • One bonus. Because you registered an actor dispatcher, you now have a WebFinger (RFC 7033) server, for free. Type @alice@example.com into Mastodon's search box and your actor comes up. You never wrote a line of WebFinger code.

Scene 2, revisited: types instead of JSON-LD

Fedify ships about eighty classes covering the whole Activity Vocabulary plus the major vendor extensions. The classes are typed and immutable, and their accessors absorb the shape differences that JSON-LD allows.

const actor = await ctx.lookupObject("@hongminhee@hollo.social");
if (actor instanceof Person) {
  console.log(actor.name);           // Safe whether it's a string or langString
  const followers = await actor.getFollowers();  // Fetches a URI, unwraps an object
}

lookupObject() takes a handle and runs the whole chain for you, WebFinger discovery included. Accessors like getFollowers() behave the same way whether the value is a URI reference or an inline object, and fetched values are cached.

Vendor fragmentation gets stitched up here too. The three competing quote properties (quoteUri, _misskey_quote, quoteUrl) are unified behind one API, next to the emerging FEP-044f quote. Misskey's isCat property exists as a type, so your server can determine cat-ness with full type safety. It sounds like a joke, but a few dozen details of exactly this kind are what interoperability is actually made of.

Scene 3, revisited: the zombie post dies in one line

Delivery infrastructure first. Plug a message queue into createFederation() and delivery moves to the background, with automatic retries under exponential backoff (up to ten attempts by default). When a post goes to thousands of followers, two-stage fan-out kicks in: a single consolidated message enters the queue, and a background worker splits it into per-server delivery tasks. The publish button responds immediately.

Retries create a problem of their own: the same activity can arrive twice. Fedify keeps a 24-hour idempotence cache of processed activities, so duplicates get detected and skipped before they reach your handlers.

As for the zombie post, the fix is one option:

await ctx.sendActivity(
  { identifier: "alice" },
  "followers",           // Collects recipients from your followers collection
  deleteActivity,
  { orderingKey: post.id },  // Same key = in-order delivery per server
);

Activities that share an orderingKey are delivered to each receiving server in the order they were sent. A Delete can no longer overtake its Create. Activities with different keys still go out in parallel, so throughput survives.

Fedify also handles dead servers. On a 404 Not Found or 410 Gone, it stops retrying and calls a handler you register. If the delivery went to a shared inbox, you also get the list of followers behind it, so you can prune vanished accounts on the spot. Hosts that fail repeatedly trip a per-host circuit breaker that holds deliveries and probes periodically until the host recovers. It's on by default; there's nothing to configure.

Scene 4, revisited: we track the quirks so you don't

Here is how Fedify disarms the traps from scene 4:

  • Authorized fetch: chain .authorize() onto a dispatcher and the verified identity of the requester lands in your callback. Blocklists, private collections, whatever your app needs is plain application logic. The instance-actor deadlock has a supported pattern as well.
  • Threads and inline actors: an activity transformer, enabled by default, rewrites inline actors into URIs on the way out. You don't need to know Threads has this problem.
  • Lemmy's requirements: the custom collection API exposes a moderators collection in a few lines, and Lemmy's JSON-LD context ships preloaded.

When a new quirk surfaces in the wild, the fix lands in Fedify, not in every application separately. Each interoperability lesson gets learned once.

Scene 5, revisited: becoming unsafe takes effort

Fedify's defaults point the other way.

  • Signature verification is something you turn off (for tests), not something you remember to turn on.
  • The document loader refuses private address ranges and loopback out of the box, with DNS rebinding accounted for. To open yourself up to SSRF you have to flip an option whose very name announces it's for testing.
  • When an embedded object's origin differs from its parent document's, the accessor refuses to trust it and re-fetches from the source (based on FEP-fe34). Content spoofing is stopped at the property access level.

In a from-scratch implementation, you have to keep remembering to do things safely. In Fedify, the unsafe path is the one that takes deliberate effort. For a federated server, with its tangle of trust boundaries, that's the right way around.

Your stack stays your stack

“Fine, but what if it doesn't fit our stack?” Fedify was built to fit the stack you already have. There are thirteen web framework integrations: servers like Express, Hono, Fastify, Koa, NestJS, and Elysia, and meta-frameworks like Next.js, Nuxt, SvelteKit, Astro, SolidStart, and Fresh. Middleware handles content negotiation, so the same URL in your existing app serves HTML to browsers and JSON-LD to the fediverse.

Fedify doesn't dictate your database either. For its own storage it asks for one key–value interface, with seven adapters available (Redis, PostgreSQL, MySQL/MariaDB, SQLite, Deno KV, Cloudflare Workers KV, in-memory). Message queues come in eight flavors (PostgreSQL, Redis, AMQP/RabbitMQ, and so on), and you can implement the interface yourself if none fits. Your domain data stays in whatever database and ORM you already use.

Already running federation on another library? There are migration guides with data migration scripts for moving from activitypub-express and friends without losing your existing followers.

The core isn't the ceiling, either. Higher-level packages build on it: @fedify/relay gives you a complete ActivityPub relay server in a single function call, and @fedify/backfill reconstructs incomplete conversation threads by walking the rest of the fediverse for you.

Tools for the whole development loop

A quieter misery of federated development has always been the missing tooling. Fedify comes with tools for every stage of the loop.

fedify init scaffolds a project in one line, and fedify tunnel exposes your local server over HTTPS so you can test against real Mastodon. Activities your server sends can be received by fedify inbox, a disposable inbox server spun up on the spot; whatever other servers publish, you can inspect with fedify lookup. My personal favorite is fedify lookup --authorized-fetch, which generates a one-off key pair and stands up a temporary ActivityPub server just to make a signed request for an object behind secure mode. The CLI is also useful to ActivityPub developers who don't use Fedify at all.

While you write code, an ActivityPub-specific linter (@fedify/lint) catches twenty kinds of interoperability bugs, like an actor missing its inbox. Tests run without the network using mocks from @fedify/testing. Once the server is up, attach the debug dashboard (@fedify/debugger) with one line and watch activities and signature verification results in your browser, live. In production there's built-in OpenTelemetry instrumentation (28 span types, 37 metrics) plus a monitoring guide, and when performance matters, fedify bench, a load-testing tool built for ActivityPub, catches regressions in CI.

As far as I know, no other ActivityPub framework ships even one of the tools in this section.

The documentation is part of the tooling. The official docs run to a thirty-chapter manual and five tutorials, and they go well past API listings. There's an operations chapter with ready-made PromQL queries and alerting rules for watching your queue backlog, and a field-guide chapter that documents de facto conventions, like which property makes your avatar show up in Mastodon, with screenshots. At two in the morning, when federation is broken and you don't know why, this is the difference between a bad night and a short one.

It's already running

Fedify is not a thought experiment. Ghost's ActivityPub service, mentioned above, is built on it. So are Encyclia, which bridges ORCID researcher records into the fediverse; SiliconBeest, running serverless on Cloudflare Workers; Typo Blue, a Korean blogging platform; Hollo, my own single-user microblogging platform; and Hackers' Pub, run by its community. Hollo, by the way, is the app from the beginning of this post: the project I once had to shelve, finished at last on the framework it forced into existence.

The tutorials give a concrete sense of scale. They walk you from a single-file server, a few dozen lines, that Mastodon can follow, through an image sharing service in roughly 750 lines that fully interoperates with Pixelfed (follows, likes, comments), up to a community platform federating both ways with the real lemmy.ml.

The fediverse needs more apps

I didn't build Fedify to mint more ActivityPub experts. Rather the opposite. I believe the fediverse will only grow beyond microblogging when developers can build federated apps without knowing ActivityPub's fine print. Signature spec transitions and JSON-LD compaction are problems that belong inside a framework, not barriers in front of someone with a new idea.

Starting takes one line:

npm init @fedify

Follow the first tutorial and by the end, Mastodon can find your server. If you get stuck, come find us in the Matrix room or GitHub Discussions. See you in the fediverse.

github.com

fedify-dev/fedify · Discussions

Explore the GitHub Discussions forum for fedify-dev fedify. Discuss code, ask questions & collaborate with the developer community.

@fedify@hackers.pub

A quiet failure

Picture the moment your server sends its first Follow activity to Mastodon. You read the spec, built the JSON, signed the HTTP request, and POSTed it with care. What comes back is a single line: 401 Unauthorized. No body. No explanation.

What went wrong? Maybe the clock behind your Date header drifted a few minutes. Maybe the hash in your Digest header is off. Maybe you uppercased the (request-target) pseudo-header while building the signing string, or published your public key as PEM where the other side wanted multibase. The remote server won't tell you. So you start reading someone else's server code to debug your own.

I know, because I've been there. Fedify began as a casualty of another project. I set out to build a single-user microblogging server, the one that would later become Hollo, and started implementing ActivityPub from scratch. Somewhere between the signature specs and the JSON-LD, the protocol work swallowed the product, and I put the whole thing down. What I picked back up wasn't the app. It was the framework the app should have had. Fedify shipped first; only then could Hollo exist, built on top of it. (I've told this story at more length in A year with the fediverse.)

ActivityPub development gets hard in a few very specific places. In this post I want to walk through five of them, then show what each one looks like with Fedify. If you've spent time in the fediverse, you'll probably nod along. If you haven't, you may wonder why anyone would do all of this by hand. Either way, the conclusion is the same: nobody has to anymore.

Five scenes

Scene 1: there is more than one standard

ActivityPub servers authenticate each other with HTTP signatures. Except there isn't one signature spec. Most of the fediverse runs on draft-cavage-http-signatures-12, an expired draft that never became a standard. The actual standard exists too: RFC 9421, HTTP Message Signatures. The problem is that you can't know which one a given server accepts until you try.

A real-world implementation therefore has to sign with one spec, see whether it gets rejected, re-sign with the other, and remember per server which one worked so it can skip the dance next time. The fediverse calls this double-knocking. Yes, you get to implement it yourself.

That's still not the end. HTTP signatures only prove who sent a request. For situations like inbox forwarding, where you relay an activity you received to a third party, you need signatures that live on the document itself: Linked Data Signatures and Object Integrity Proofs. Four signature mechanisms in total, and two kinds of keys to manage: RSA and Ed25519.

Scene 2: one document, many shapes

ActivityPub's wire format is JSON-LD, and in JSON-LD the same document can take many shapes. This is easier to show than to explain. Here is a Create activity one server might send:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Create",
  "actor": "https://example.com/users/alice",
  "to": "https://www.w3.org/ns/activitystreams#Public",
  "object": {
    "type": "Note",
    "id": "https://example.com/notes/123",
    "content": "Hello, fediverse!"
  }
}

And here is a semantically identical activity from another server:

{
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "type": "Create",
  "actor": {
    "type": "Person",
    "id": "https://example.com/users/alice",
    "preferredUsername": "alice"
  },
  "to": ["as:Public"],
  "object": "https://example.com/notes/123"
}

actor turned from a URI string into an inline object. to turned from a string into an array. object went the other way, from an inline object to a URI. Even the address that means “public” has three valid spellings: https://www.w3.org/ns/activitystreams#Public, as:Public, and plain Public. Your parser has to accept every combination, and which one arrives depends on the sender's implementation.

The spec-compliant answer is to normalize every document with a JSON-LD processor, expansion followed by compaction. In practice many implementations treat it all as “just JSON” and quietly break on whatever shape some server happens to emit. Either way, you end up with defensive code smeared across the whole codebase: is this a string? An array? An object? A URI I have to fetch?

Scene 3: the zombie post

A user publishes a post, spots a typo, and deletes it right away. Your server sends a Create, then a Delete. Thanks to network weather, some receiving server gets the Delete first and the Create second. It ignores the deletion of a post that doesn't exist yet, then dutifully processes the creation of a post that was already deleted. That post now lives on that server forever, while its author believes it's gone.

Then there's scale. With five thousand followers, one post means thousands of HTTP deliveries. Do that inline in the request handler and your publish button takes half a minute to respond, or the server falls over. Fine, use a queue. Deliveries fail, so retry them. On what schedule? Exponential backoff. How many times? And is a 500 Internal Server Error the same kind of failure as a 410 Gone? When do you clean up three thousand followers on a server that no longer exists? Should you keep hammering a host that has been down for days?

At some point it dawns on you that this is no longer protocol implementation. It's distributed systems engineering.

Scene 4: it's not a spec, it's an ecosystem

Even perfect spec compliance doesn't buy you interoperability. A few examples from the field:

  • Mastodon's secure mode requires HTTP signatures on GET requests too (so-called authorized fetch). Now suppose both servers run in that mode. To fetch the other side's public key you must sign your request; to verify your signature, the other side must first fetch your key. Deadlock. The community's workaround is to sign with an “instance actor” that represents the server itself. You won't find that in the spec.
  • Threads can't parse activities whose actor is embedded as an inline object. When sending to Threads, the actor has to be a URI.
  • Lemmy silently rejects Group actors that lack fields Mastodon never asks for, such as a moderators collection linked via attributedTo and a featured collection.
  • Misskey carries vocabulary extensions of its own; quote posts alone go by three different property names across implementations.

The list keeps growing. Interoperability here is not something you finish once and stop thinking about. It's maintenance, forever.

Scene 5: insecure by default

Build it from scratch, and you start out wide open. Skip signature verification on incoming activities and anyone can inject a forged Follow or Delete. Leave the document loader unrestricted and a malicious activity can point it at http://169.254.169.254/ or your internal network, turning your server into an SSRF proxy. Skip origin checks on embedded objects and any server can hand out a document claiming “here's what the Mastodon lead developer said.”

What these traps share is that nothing happens when you fall into them. Everything appears to work. Until someone exploits it.

Ghost ran into this too

If you're thinking “surely our team would manage,” consider Ghost: a leading open-source publishing platform used by thousands of journalists and creators, and a team that set out to build its own ActivityPub support.

We can definitely attest to the problems that Fedify is working hard to solve, because even in just a few weeks of early prototyping we were running into the issues described above right away.

From Alright, let's Fedify

Ghost ended up building its ActivityPub layer on Fedify.

So I put all of it in a framework

Fedify is a TypeScript library for building federated server apps on ActivityPub and the standards around it. It runs on Deno, Node.js, and Bun, and supports edge runtimes like Cloudflare Workers. The design goal hasn't changed since the beginning: keep everything in those five scenes out of application code.

Here are the same five scenes again, this time with Fedify.

Scene 1, revisited: the signature war is the framework's job

Here is everything it takes to put one actor on the fediverse:

import { createFederation, generateCryptoKeyPair, MemoryKvStore } from "@fedify/fedify";
import { Endpoints, Person } from "@fedify/vocab";

const federation = createFederation<void>({
  kv: new MemoryKvStore(),  // Swap for Redis, PostgreSQL, etc. in production
});

federation
  .setActorDispatcher("/users/{identifier}", async (ctx, identifier) => {
    if (identifier !== "alice") return null;
    const keyPairs = await ctx.getActorKeyPairs(identifier);
    return new Person({
      id: ctx.getActorUri(identifier),
      preferredUsername: identifier,
      name: "Alice",
      inbox: ctx.getInboxUri(identifier),
      endpoints: new Endpoints({ sharedInbox: ctx.getInboxUri() }),
      publicKey: keyPairs[0].cryptographicKey,
      assertionMethods: keyPairs.map((keyPair) => keyPair.multikey),
    });
  })
  .setKeyPairsDispatcher(async (ctx, identifier) => {
    // In real code you'd persist these in a database; this shows the gist
    return [await generateCryptoKeyPair()];
  });

The moment this code runs:

  • Every outgoing request gets signed. With an RSA key, Fedify emits HTTP Signatures and Linked Data Signatures; add an Ed25519 key and it attaches Object Integrity Proofs as well. All four mechanisms coexist on a single activity, and each receiver verifies with the strongest one it understands.
  • Fedify does the double-knocking for you: first contact goes out as RFC 9421, a rejection triggers a draft-cavage retry, and the winning spec is cached per server. If the rejection carries an Accept-Signature challenge (RFC 9421 §5), Fedify reads it and re-signs with exactly the components the server asked for.
  • Incoming signatures are verified before your code sees anything. An activity that fails verification never reaches your listeners.
  • One bonus. Because you registered an actor dispatcher, you now have a WebFinger (RFC 7033) server, for free. Type @alice@example.com into Mastodon's search box and your actor comes up. You never wrote a line of WebFinger code.

Scene 2, revisited: types instead of JSON-LD

Fedify ships about eighty classes covering the whole Activity Vocabulary plus the major vendor extensions. The classes are typed and immutable, and their accessors absorb the shape differences that JSON-LD allows.

const actor = await ctx.lookupObject("@hongminhee@hollo.social");
if (actor instanceof Person) {
  console.log(actor.name);           // Safe whether it's a string or langString
  const followers = await actor.getFollowers();  // Fetches a URI, unwraps an object
}

lookupObject() takes a handle and runs the whole chain for you, WebFinger discovery included. Accessors like getFollowers() behave the same way whether the value is a URI reference or an inline object, and fetched values are cached.

Vendor fragmentation gets stitched up here too. The three competing quote properties (quoteUri, _misskey_quote, quoteUrl) are unified behind one API, next to the emerging FEP-044f quote. Misskey's isCat property exists as a type, so your server can determine cat-ness with full type safety. It sounds like a joke, but a few dozen details of exactly this kind are what interoperability is actually made of.

Scene 3, revisited: the zombie post dies in one line

Delivery infrastructure first. Plug a message queue into createFederation() and delivery moves to the background, with automatic retries under exponential backoff (up to ten attempts by default). When a post goes to thousands of followers, two-stage fan-out kicks in: a single consolidated message enters the queue, and a background worker splits it into per-server delivery tasks. The publish button responds immediately.

Retries create a problem of their own: the same activity can arrive twice. Fedify keeps a 24-hour idempotence cache of processed activities, so duplicates get detected and skipped before they reach your handlers.

As for the zombie post, the fix is one option:

await ctx.sendActivity(
  { identifier: "alice" },
  "followers",           // Collects recipients from your followers collection
  deleteActivity,
  { orderingKey: post.id },  // Same key = in-order delivery per server
);

Activities that share an orderingKey are delivered to each receiving server in the order they were sent. A Delete can no longer overtake its Create. Activities with different keys still go out in parallel, so throughput survives.

Fedify also handles dead servers. On a 404 Not Found or 410 Gone, it stops retrying and calls a handler you register. If the delivery went to a shared inbox, you also get the list of followers behind it, so you can prune vanished accounts on the spot. Hosts that fail repeatedly trip a per-host circuit breaker that holds deliveries and probes periodically until the host recovers. It's on by default; there's nothing to configure.

Scene 4, revisited: we track the quirks so you don't

Here is how Fedify disarms the traps from scene 4:

  • Authorized fetch: chain .authorize() onto a dispatcher and the verified identity of the requester lands in your callback. Blocklists, private collections, whatever your app needs is plain application logic. The instance-actor deadlock has a supported pattern as well.
  • Threads and inline actors: an activity transformer, enabled by default, rewrites inline actors into URIs on the way out. You don't need to know Threads has this problem.
  • Lemmy's requirements: the custom collection API exposes a moderators collection in a few lines, and Lemmy's JSON-LD context ships preloaded.

When a new quirk surfaces in the wild, the fix lands in Fedify, not in every application separately. Each interoperability lesson gets learned once.

Scene 5, revisited: becoming unsafe takes effort

Fedify's defaults point the other way.

  • Signature verification is something you turn off (for tests), not something you remember to turn on.
  • The document loader refuses private address ranges and loopback out of the box, with DNS rebinding accounted for. To open yourself up to SSRF you have to flip an option whose very name announces it's for testing.
  • When an embedded object's origin differs from its parent document's, the accessor refuses to trust it and re-fetches from the source (based on FEP-fe34). Content spoofing is stopped at the property access level.

In a from-scratch implementation, you have to keep remembering to do things safely. In Fedify, the unsafe path is the one that takes deliberate effort. For a federated server, with its tangle of trust boundaries, that's the right way around.

Your stack stays your stack

“Fine, but what if it doesn't fit our stack?” Fedify was built to fit the stack you already have. There are thirteen web framework integrations: servers like Express, Hono, Fastify, Koa, NestJS, and Elysia, and meta-frameworks like Next.js, Nuxt, SvelteKit, Astro, SolidStart, and Fresh. Middleware handles content negotiation, so the same URL in your existing app serves HTML to browsers and JSON-LD to the fediverse.

Fedify doesn't dictate your database either. For its own storage it asks for one key–value interface, with seven adapters available (Redis, PostgreSQL, MySQL/MariaDB, SQLite, Deno KV, Cloudflare Workers KV, in-memory). Message queues come in eight flavors (PostgreSQL, Redis, AMQP/RabbitMQ, and so on), and you can implement the interface yourself if none fits. Your domain data stays in whatever database and ORM you already use.

Already running federation on another library? There are migration guides with data migration scripts for moving from activitypub-express and friends without losing your existing followers.

The core isn't the ceiling, either. Higher-level packages build on it: @fedify/relay gives you a complete ActivityPub relay server in a single function call, and @fedify/backfill reconstructs incomplete conversation threads by walking the rest of the fediverse for you.

Tools for the whole development loop

A quieter misery of federated development has always been the missing tooling. Fedify comes with tools for every stage of the loop.

fedify init scaffolds a project in one line, and fedify tunnel exposes your local server over HTTPS so you can test against real Mastodon. Activities your server sends can be received by fedify inbox, a disposable inbox server spun up on the spot; whatever other servers publish, you can inspect with fedify lookup. My personal favorite is fedify lookup --authorized-fetch, which generates a one-off key pair and stands up a temporary ActivityPub server just to make a signed request for an object behind secure mode. The CLI is also useful to ActivityPub developers who don't use Fedify at all.

While you write code, an ActivityPub-specific linter (@fedify/lint) catches twenty kinds of interoperability bugs, like an actor missing its inbox. Tests run without the network using mocks from @fedify/testing. Once the server is up, attach the debug dashboard (@fedify/debugger) with one line and watch activities and signature verification results in your browser, live. In production there's built-in OpenTelemetry instrumentation (28 span types, 37 metrics) plus a monitoring guide, and when performance matters, fedify bench, a load-testing tool built for ActivityPub, catches regressions in CI.

As far as I know, no other ActivityPub framework ships even one of the tools in this section.

The documentation is part of the tooling. The official docs run to a thirty-chapter manual and five tutorials, and they go well past API listings. There's an operations chapter with ready-made PromQL queries and alerting rules for watching your queue backlog, and a field-guide chapter that documents de facto conventions, like which property makes your avatar show up in Mastodon, with screenshots. At two in the morning, when federation is broken and you don't know why, this is the difference between a bad night and a short one.

It's already running

Fedify is not a thought experiment. Ghost's ActivityPub service, mentioned above, is built on it. So are Encyclia, which bridges ORCID researcher records into the fediverse; SiliconBeest, running serverless on Cloudflare Workers; Typo Blue, a Korean blogging platform; Hollo, my own single-user microblogging platform; and Hackers' Pub, run by its community. Hollo, by the way, is the app from the beginning of this post: the project I once had to shelve, finished at last on the framework it forced into existence.

The tutorials give a concrete sense of scale. They walk you from a single-file server, a few dozen lines, that Mastodon can follow, through an image sharing service in roughly 750 lines that fully interoperates with Pixelfed (follows, likes, comments), up to a community platform federating both ways with the real lemmy.ml.

The fediverse needs more apps

I didn't build Fedify to mint more ActivityPub experts. Rather the opposite. I believe the fediverse will only grow beyond microblogging when developers can build federated apps without knowing ActivityPub's fine print. Signature spec transitions and JSON-LD compaction are problems that belong inside a framework, not barriers in front of someone with a new idea.

Starting takes one line:

npm init @fedify

Follow the first tutorial and by the end, Mastodon can find your server. If you get stuck, come find us in the Matrix room or GitHub Discussions. See you in the fediverse.

github.com

fedify-dev/fedify · Discussions

Explore the GitHub Discussions forum for fedify-dev fedify. Discuss code, ask questions & collaborate with the developer community.

@fedify@hackers.pub

A quiet failure

Picture the moment your server sends its first Follow activity to Mastodon. You read the spec, built the JSON, signed the HTTP request, and POSTed it with care. What comes back is a single line: 401 Unauthorized. No body. No explanation.

What went wrong? Maybe the clock behind your Date header drifted a few minutes. Maybe the hash in your Digest header is off. Maybe you uppercased the (request-target) pseudo-header while building the signing string, or published your public key as PEM where the other side wanted multibase. The remote server won't tell you. So you start reading someone else's server code to debug your own.

I know, because I've been there. Fedify began as a casualty of another project. I set out to build a single-user microblogging server, the one that would later become Hollo, and started implementing ActivityPub from scratch. Somewhere between the signature specs and the JSON-LD, the protocol work swallowed the product, and I put the whole thing down. What I picked back up wasn't the app. It was the framework the app should have had. Fedify shipped first; only then could Hollo exist, built on top of it. (I've told this story at more length in A year with the fediverse.)

ActivityPub development gets hard in a few very specific places. In this post I want to walk through five of them, then show what each one looks like with Fedify. If you've spent time in the fediverse, you'll probably nod along. If you haven't, you may wonder why anyone would do all of this by hand. Either way, the conclusion is the same: nobody has to anymore.

Five scenes

Scene 1: there is more than one standard

ActivityPub servers authenticate each other with HTTP signatures. Except there isn't one signature spec. Most of the fediverse runs on draft-cavage-http-signatures-12, an expired draft that never became a standard. The actual standard exists too: RFC 9421, HTTP Message Signatures. The problem is that you can't know which one a given server accepts until you try.

A real-world implementation therefore has to sign with one spec, see whether it gets rejected, re-sign with the other, and remember per server which one worked so it can skip the dance next time. The fediverse calls this double-knocking. Yes, you get to implement it yourself.

That's still not the end. HTTP signatures only prove who sent a request. For situations like inbox forwarding, where you relay an activity you received to a third party, you need signatures that live on the document itself: Linked Data Signatures and Object Integrity Proofs. Four signature mechanisms in total, and two kinds of keys to manage: RSA and Ed25519.

Scene 2: one document, many shapes

ActivityPub's wire format is JSON-LD, and in JSON-LD the same document can take many shapes. This is easier to show than to explain. Here is a Create activity one server might send:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Create",
  "actor": "https://example.com/users/alice",
  "to": "https://www.w3.org/ns/activitystreams#Public",
  "object": {
    "type": "Note",
    "id": "https://example.com/notes/123",
    "content": "Hello, fediverse!"
  }
}

And here is a semantically identical activity from another server:

{
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "type": "Create",
  "actor": {
    "type": "Person",
    "id": "https://example.com/users/alice",
    "preferredUsername": "alice"
  },
  "to": ["as:Public"],
  "object": "https://example.com/notes/123"
}

actor turned from a URI string into an inline object. to turned from a string into an array. object went the other way, from an inline object to a URI. Even the address that means “public” has three valid spellings: https://www.w3.org/ns/activitystreams#Public, as:Public, and plain Public. Your parser has to accept every combination, and which one arrives depends on the sender's implementation.

The spec-compliant answer is to normalize every document with a JSON-LD processor, expansion followed by compaction. In practice many implementations treat it all as “just JSON” and quietly break on whatever shape some server happens to emit. Either way, you end up with defensive code smeared across the whole codebase: is this a string? An array? An object? A URI I have to fetch?

Scene 3: the zombie post

A user publishes a post, spots a typo, and deletes it right away. Your server sends a Create, then a Delete. Thanks to network weather, some receiving server gets the Delete first and the Create second. It ignores the deletion of a post that doesn't exist yet, then dutifully processes the creation of a post that was already deleted. That post now lives on that server forever, while its author believes it's gone.

Then there's scale. With five thousand followers, one post means thousands of HTTP deliveries. Do that inline in the request handler and your publish button takes half a minute to respond, or the server falls over. Fine, use a queue. Deliveries fail, so retry them. On what schedule? Exponential backoff. How many times? And is a 500 Internal Server Error the same kind of failure as a 410 Gone? When do you clean up three thousand followers on a server that no longer exists? Should you keep hammering a host that has been down for days?

At some point it dawns on you that this is no longer protocol implementation. It's distributed systems engineering.

Scene 4: it's not a spec, it's an ecosystem

Even perfect spec compliance doesn't buy you interoperability. A few examples from the field:

  • Mastodon's secure mode requires HTTP signatures on GET requests too (so-called authorized fetch). Now suppose both servers run in that mode. To fetch the other side's public key you must sign your request; to verify your signature, the other side must first fetch your key. Deadlock. The community's workaround is to sign with an “instance actor” that represents the server itself. You won't find that in the spec.
  • Threads can't parse activities whose actor is embedded as an inline object. When sending to Threads, the actor has to be a URI.
  • Lemmy silently rejects Group actors that lack fields Mastodon never asks for, such as a moderators collection linked via attributedTo and a featured collection.
  • Misskey carries vocabulary extensions of its own; quote posts alone go by three different property names across implementations.

The list keeps growing. Interoperability here is not something you finish once and stop thinking about. It's maintenance, forever.

Scene 5: insecure by default

Build it from scratch, and you start out wide open. Skip signature verification on incoming activities and anyone can inject a forged Follow or Delete. Leave the document loader unrestricted and a malicious activity can point it at http://169.254.169.254/ or your internal network, turning your server into an SSRF proxy. Skip origin checks on embedded objects and any server can hand out a document claiming “here's what the Mastodon lead developer said.”

What these traps share is that nothing happens when you fall into them. Everything appears to work. Until someone exploits it.

Ghost ran into this too

If you're thinking “surely our team would manage,” consider Ghost: a leading open-source publishing platform used by thousands of journalists and creators, and a team that set out to build its own ActivityPub support.

We can definitely attest to the problems that Fedify is working hard to solve, because even in just a few weeks of early prototyping we were running into the issues described above right away.

From Alright, let's Fedify

Ghost ended up building its ActivityPub layer on Fedify.

So I put all of it in a framework

Fedify is a TypeScript library for building federated server apps on ActivityPub and the standards around it. It runs on Deno, Node.js, and Bun, and supports edge runtimes like Cloudflare Workers. The design goal hasn't changed since the beginning: keep everything in those five scenes out of application code.

Here are the same five scenes again, this time with Fedify.

Scene 1, revisited: the signature war is the framework's job

Here is everything it takes to put one actor on the fediverse:

import { createFederation, generateCryptoKeyPair, MemoryKvStore } from "@fedify/fedify";
import { Endpoints, Person } from "@fedify/vocab";

const federation = createFederation<void>({
  kv: new MemoryKvStore(),  // Swap for Redis, PostgreSQL, etc. in production
});

federation
  .setActorDispatcher("/users/{identifier}", async (ctx, identifier) => {
    if (identifier !== "alice") return null;
    const keyPairs = await ctx.getActorKeyPairs(identifier);
    return new Person({
      id: ctx.getActorUri(identifier),
      preferredUsername: identifier,
      name: "Alice",
      inbox: ctx.getInboxUri(identifier),
      endpoints: new Endpoints({ sharedInbox: ctx.getInboxUri() }),
      publicKey: keyPairs[0].cryptographicKey,
      assertionMethods: keyPairs.map((keyPair) => keyPair.multikey),
    });
  })
  .setKeyPairsDispatcher(async (ctx, identifier) => {
    // In real code you'd persist these in a database; this shows the gist
    return [await generateCryptoKeyPair()];
  });

The moment this code runs:

  • Every outgoing request gets signed. With an RSA key, Fedify emits HTTP Signatures and Linked Data Signatures; add an Ed25519 key and it attaches Object Integrity Proofs as well. All four mechanisms coexist on a single activity, and each receiver verifies with the strongest one it understands.
  • Fedify does the double-knocking for you: first contact goes out as RFC 9421, a rejection triggers a draft-cavage retry, and the winning spec is cached per server. If the rejection carries an Accept-Signature challenge (RFC 9421 §5), Fedify reads it and re-signs with exactly the components the server asked for.
  • Incoming signatures are verified before your code sees anything. An activity that fails verification never reaches your listeners.
  • One bonus. Because you registered an actor dispatcher, you now have a WebFinger (RFC 7033) server, for free. Type @alice@example.com into Mastodon's search box and your actor comes up. You never wrote a line of WebFinger code.

Scene 2, revisited: types instead of JSON-LD

Fedify ships about eighty classes covering the whole Activity Vocabulary plus the major vendor extensions. The classes are typed and immutable, and their accessors absorb the shape differences that JSON-LD allows.

const actor = await ctx.lookupObject("@hongminhee@hollo.social");
if (actor instanceof Person) {
  console.log(actor.name);           // Safe whether it's a string or langString
  const followers = await actor.getFollowers();  // Fetches a URI, unwraps an object
}

lookupObject() takes a handle and runs the whole chain for you, WebFinger discovery included. Accessors like getFollowers() behave the same way whether the value is a URI reference or an inline object, and fetched values are cached.

Vendor fragmentation gets stitched up here too. The three competing quote properties (quoteUri, _misskey_quote, quoteUrl) are unified behind one API, next to the emerging FEP-044f quote. Misskey's isCat property exists as a type, so your server can determine cat-ness with full type safety. It sounds like a joke, but a few dozen details of exactly this kind are what interoperability is actually made of.

Scene 3, revisited: the zombie post dies in one line

Delivery infrastructure first. Plug a message queue into createFederation() and delivery moves to the background, with automatic retries under exponential backoff (up to ten attempts by default). When a post goes to thousands of followers, two-stage fan-out kicks in: a single consolidated message enters the queue, and a background worker splits it into per-server delivery tasks. The publish button responds immediately.

Retries create a problem of their own: the same activity can arrive twice. Fedify keeps a 24-hour idempotence cache of processed activities, so duplicates get detected and skipped before they reach your handlers.

As for the zombie post, the fix is one option:

await ctx.sendActivity(
  { identifier: "alice" },
  "followers",           // Collects recipients from your followers collection
  deleteActivity,
  { orderingKey: post.id },  // Same key = in-order delivery per server
);

Activities that share an orderingKey are delivered to each receiving server in the order they were sent. A Delete can no longer overtake its Create. Activities with different keys still go out in parallel, so throughput survives.

Fedify also handles dead servers. On a 404 Not Found or 410 Gone, it stops retrying and calls a handler you register. If the delivery went to a shared inbox, you also get the list of followers behind it, so you can prune vanished accounts on the spot. Hosts that fail repeatedly trip a per-host circuit breaker that holds deliveries and probes periodically until the host recovers. It's on by default; there's nothing to configure.

Scene 4, revisited: we track the quirks so you don't

Here is how Fedify disarms the traps from scene 4:

  • Authorized fetch: chain .authorize() onto a dispatcher and the verified identity of the requester lands in your callback. Blocklists, private collections, whatever your app needs is plain application logic. The instance-actor deadlock has a supported pattern as well.
  • Threads and inline actors: an activity transformer, enabled by default, rewrites inline actors into URIs on the way out. You don't need to know Threads has this problem.
  • Lemmy's requirements: the custom collection API exposes a moderators collection in a few lines, and Lemmy's JSON-LD context ships preloaded.

When a new quirk surfaces in the wild, the fix lands in Fedify, not in every application separately. Each interoperability lesson gets learned once.

Scene 5, revisited: becoming unsafe takes effort

Fedify's defaults point the other way.

  • Signature verification is something you turn off (for tests), not something you remember to turn on.
  • The document loader refuses private address ranges and loopback out of the box, with DNS rebinding accounted for. To open yourself up to SSRF you have to flip an option whose very name announces it's for testing.
  • When an embedded object's origin differs from its parent document's, the accessor refuses to trust it and re-fetches from the source (based on FEP-fe34). Content spoofing is stopped at the property access level.

In a from-scratch implementation, you have to keep remembering to do things safely. In Fedify, the unsafe path is the one that takes deliberate effort. For a federated server, with its tangle of trust boundaries, that's the right way around.

Your stack stays your stack

“Fine, but what if it doesn't fit our stack?” Fedify was built to fit the stack you already have. There are thirteen web framework integrations: servers like Express, Hono, Fastify, Koa, NestJS, and Elysia, and meta-frameworks like Next.js, Nuxt, SvelteKit, Astro, SolidStart, and Fresh. Middleware handles content negotiation, so the same URL in your existing app serves HTML to browsers and JSON-LD to the fediverse.

Fedify doesn't dictate your database either. For its own storage it asks for one key–value interface, with seven adapters available (Redis, PostgreSQL, MySQL/MariaDB, SQLite, Deno KV, Cloudflare Workers KV, in-memory). Message queues come in eight flavors (PostgreSQL, Redis, AMQP/RabbitMQ, and so on), and you can implement the interface yourself if none fits. Your domain data stays in whatever database and ORM you already use.

Already running federation on another library? There are migration guides with data migration scripts for moving from activitypub-express and friends without losing your existing followers.

The core isn't the ceiling, either. Higher-level packages build on it: @fedify/relay gives you a complete ActivityPub relay server in a single function call, and @fedify/backfill reconstructs incomplete conversation threads by walking the rest of the fediverse for you.

Tools for the whole development loop

A quieter misery of federated development has always been the missing tooling. Fedify comes with tools for every stage of the loop.

fedify init scaffolds a project in one line, and fedify tunnel exposes your local server over HTTPS so you can test against real Mastodon. Activities your server sends can be received by fedify inbox, a disposable inbox server spun up on the spot; whatever other servers publish, you can inspect with fedify lookup. My personal favorite is fedify lookup --authorized-fetch, which generates a one-off key pair and stands up a temporary ActivityPub server just to make a signed request for an object behind secure mode. The CLI is also useful to ActivityPub developers who don't use Fedify at all.

While you write code, an ActivityPub-specific linter (@fedify/lint) catches twenty kinds of interoperability bugs, like an actor missing its inbox. Tests run without the network using mocks from @fedify/testing. Once the server is up, attach the debug dashboard (@fedify/debugger) with one line and watch activities and signature verification results in your browser, live. In production there's built-in OpenTelemetry instrumentation (28 span types, 37 metrics) plus a monitoring guide, and when performance matters, fedify bench, a load-testing tool built for ActivityPub, catches regressions in CI.

As far as I know, no other ActivityPub framework ships even one of the tools in this section.

The documentation is part of the tooling. The official docs run to a thirty-chapter manual and five tutorials, and they go well past API listings. There's an operations chapter with ready-made PromQL queries and alerting rules for watching your queue backlog, and a field-guide chapter that documents de facto conventions, like which property makes your avatar show up in Mastodon, with screenshots. At two in the morning, when federation is broken and you don't know why, this is the difference between a bad night and a short one.

It's already running

Fedify is not a thought experiment. Ghost's ActivityPub service, mentioned above, is built on it. So are Encyclia, which bridges ORCID researcher records into the fediverse; SiliconBeest, running serverless on Cloudflare Workers; Typo Blue, a Korean blogging platform; Hollo, my own single-user microblogging platform; and Hackers' Pub, run by its community. Hollo, by the way, is the app from the beginning of this post: the project I once had to shelve, finished at last on the framework it forced into existence.

The tutorials give a concrete sense of scale. They walk you from a single-file server, a few dozen lines, that Mastodon can follow, through an image sharing service in roughly 750 lines that fully interoperates with Pixelfed (follows, likes, comments), up to a community platform federating both ways with the real lemmy.ml.

The fediverse needs more apps

I didn't build Fedify to mint more ActivityPub experts. Rather the opposite. I believe the fediverse will only grow beyond microblogging when developers can build federated apps without knowing ActivityPub's fine print. Signature spec transitions and JSON-LD compaction are problems that belong inside a framework, not barriers in front of someone with a new idea.

Starting takes one line:

npm init @fedify

Follow the first tutorial and by the end, Mastodon can find your server. If you get stuck, come find us in the Matrix room or GitHub Discussions. See you in the fediverse.

github.com

fedify-dev/fedify · Discussions

Explore the GitHub Discussions forum for fedify-dev fedify. Discuss code, ask questions & collaborate with the developer community.

@fedify@hackers.pub

A quiet failure

Picture the moment your server sends its first Follow activity to Mastodon. You read the spec, built the JSON, signed the HTTP request, and POSTed it with care. What comes back is a single line: 401 Unauthorized. No body. No explanation.

What went wrong? Maybe the clock behind your Date header drifted a few minutes. Maybe the hash in your Digest header is off. Maybe you uppercased the (request-target) pseudo-header while building the signing string, or published your public key as PEM where the other side wanted multibase. The remote server won't tell you. So you start reading someone else's server code to debug your own.

I know, because I've been there. Fedify began as a casualty of another project. I set out to build a single-user microblogging server, the one that would later become Hollo, and started implementing ActivityPub from scratch. Somewhere between the signature specs and the JSON-LD, the protocol work swallowed the product, and I put the whole thing down. What I picked back up wasn't the app. It was the framework the app should have had. Fedify shipped first; only then could Hollo exist, built on top of it. (I've told this story at more length in A year with the fediverse.)

ActivityPub development gets hard in a few very specific places. In this post I want to walk through five of them, then show what each one looks like with Fedify. If you've spent time in the fediverse, you'll probably nod along. If you haven't, you may wonder why anyone would do all of this by hand. Either way, the conclusion is the same: nobody has to anymore.

Five scenes

Scene 1: there is more than one standard

ActivityPub servers authenticate each other with HTTP signatures. Except there isn't one signature spec. Most of the fediverse runs on draft-cavage-http-signatures-12, an expired draft that never became a standard. The actual standard exists too: RFC 9421, HTTP Message Signatures. The problem is that you can't know which one a given server accepts until you try.

A real-world implementation therefore has to sign with one spec, see whether it gets rejected, re-sign with the other, and remember per server which one worked so it can skip the dance next time. The fediverse calls this double-knocking. Yes, you get to implement it yourself.

That's still not the end. HTTP signatures only prove who sent a request. For situations like inbox forwarding, where you relay an activity you received to a third party, you need signatures that live on the document itself: Linked Data Signatures and Object Integrity Proofs. Four signature mechanisms in total, and two kinds of keys to manage: RSA and Ed25519.

Scene 2: one document, many shapes

ActivityPub's wire format is JSON-LD, and in JSON-LD the same document can take many shapes. This is easier to show than to explain. Here is a Create activity one server might send:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Create",
  "actor": "https://example.com/users/alice",
  "to": "https://www.w3.org/ns/activitystreams#Public",
  "object": {
    "type": "Note",
    "id": "https://example.com/notes/123",
    "content": "Hello, fediverse!"
  }
}

And here is a semantically identical activity from another server:

{
  "@context": ["https://www.w3.org/ns/activitystreams"],
  "type": "Create",
  "actor": {
    "type": "Person",
    "id": "https://example.com/users/alice",
    "preferredUsername": "alice"
  },
  "to": ["as:Public"],
  "object": "https://example.com/notes/123"
}

actor turned from a URI string into an inline object. to turned from a string into an array. object went the other way, from an inline object to a URI. Even the address that means “public” has three valid spellings: https://www.w3.org/ns/activitystreams#Public, as:Public, and plain Public. Your parser has to accept every combination, and which one arrives depends on the sender's implementation.

The spec-compliant answer is to normalize every document with a JSON-LD processor, expansion followed by compaction. In practice many implementations treat it all as “just JSON” and quietly break on whatever shape some server happens to emit. Either way, you end up with defensive code smeared across the whole codebase: is this a string? An array? An object? A URI I have to fetch?

Scene 3: the zombie post

A user publishes a post, spots a typo, and deletes it right away. Your server sends a Create, then a Delete. Thanks to network weather, some receiving server gets the Delete first and the Create second. It ignores the deletion of a post that doesn't exist yet, then dutifully processes the creation of a post that was already deleted. That post now lives on that server forever, while its author believes it's gone.

Then there's scale. With five thousand followers, one post means thousands of HTTP deliveries. Do that inline in the request handler and your publish button takes half a minute to respond, or the server falls over. Fine, use a queue. Deliveries fail, so retry them. On what schedule? Exponential backoff. How many times? And is a 500 Internal Server Error the same kind of failure as a 410 Gone? When do you clean up three thousand followers on a server that no longer exists? Should you keep hammering a host that has been down for days?

At some point it dawns on you that this is no longer protocol implementation. It's distributed systems engineering.

Scene 4: it's not a spec, it's an ecosystem

Even perfect spec compliance doesn't buy you interoperability. A few examples from the field:

  • Mastodon's secure mode requires HTTP signatures on GET requests too (so-called authorized fetch). Now suppose both servers run in that mode. To fetch the other side's public key you must sign your request; to verify your signature, the other side must first fetch your key. Deadlock. The community's workaround is to sign with an “instance actor” that represents the server itself. You won't find that in the spec.
  • Threads can't parse activities whose actor is embedded as an inline object. When sending to Threads, the actor has to be a URI.
  • Lemmy silently rejects Group actors that lack fields Mastodon never asks for, such as a moderators collection linked via attributedTo and a featured collection.
  • Misskey carries vocabulary extensions of its own; quote posts alone go by three different property names across implementations.

The list keeps growing. Interoperability here is not something you finish once and stop thinking about. It's maintenance, forever.

Scene 5: insecure by default

Build it from scratch, and you start out wide open. Skip signature verification on incoming activities and anyone can inject a forged Follow or Delete. Leave the document loader unrestricted and a malicious activity can point it at http://169.254.169.254/ or your internal network, turning your server into an SSRF proxy. Skip origin checks on embedded objects and any server can hand out a document claiming “here's what the Mastodon lead developer said.”

What these traps share is that nothing happens when you fall into them. Everything appears to work. Until someone exploits it.

Ghost ran into this too

If you're thinking “surely our team would manage,” consider Ghost: a leading open-source publishing platform used by thousands of journalists and creators, and a team that set out to build its own ActivityPub support.

We can definitely attest to the problems that Fedify is working hard to solve, because even in just a few weeks of early prototyping we were running into the issues described above right away.

From Alright, let's Fedify

Ghost ended up building its ActivityPub layer on Fedify.

So I put all of it in a framework

Fedify is a TypeScript library for building federated server apps on ActivityPub and the standards around it. It runs on Deno, Node.js, and Bun, and supports edge runtimes like Cloudflare Workers. The design goal hasn't changed since the beginning: keep everything in those five scenes out of application code.

Here are the same five scenes again, this time with Fedify.

Scene 1, revisited: the signature war is the framework's job

Here is everything it takes to put one actor on the fediverse:

import { createFederation, generateCryptoKeyPair, MemoryKvStore } from "@fedify/fedify";
import { Endpoints, Person } from "@fedify/vocab";

const federation = createFederation<void>({
  kv: new MemoryKvStore(),  // Swap for Redis, PostgreSQL, etc. in production
});

federation
  .setActorDispatcher("/users/{identifier}", async (ctx, identifier) => {
    if (identifier !== "alice") return null;
    const keyPairs = await ctx.getActorKeyPairs(identifier);
    return new Person({
      id: ctx.getActorUri(identifier),
      preferredUsername: identifier,
      name: "Alice",
      inbox: ctx.getInboxUri(identifier),
      endpoints: new Endpoints({ sharedInbox: ctx.getInboxUri() }),
      publicKey: keyPairs[0].cryptographicKey,
      assertionMethods: keyPairs.map((keyPair) => keyPair.multikey),
    });
  })
  .setKeyPairsDispatcher(async (ctx, identifier) => {
    // In real code you'd persist these in a database; this shows the gist
    return [await generateCryptoKeyPair()];
  });

The moment this code runs:

  • Every outgoing request gets signed. With an RSA key, Fedify emits HTTP Signatures and Linked Data Signatures; add an Ed25519 key and it attaches Object Integrity Proofs as well. All four mechanisms coexist on a single activity, and each receiver verifies with the strongest one it understands.
  • Fedify does the double-knocking for you: first contact goes out as RFC 9421, a rejection triggers a draft-cavage retry, and the winning spec is cached per server. If the rejection carries an Accept-Signature challenge (RFC 9421 §5), Fedify reads it and re-signs with exactly the components the server asked for.
  • Incoming signatures are verified before your code sees anything. An activity that fails verification never reaches your listeners.
  • One bonus. Because you registered an actor dispatcher, you now have a WebFinger (RFC 7033) server, for free. Type @alice@example.com into Mastodon's search box and your actor comes up. You never wrote a line of WebFinger code.

Scene 2, revisited: types instead of JSON-LD

Fedify ships about eighty classes covering the whole Activity Vocabulary plus the major vendor extensions. The classes are typed and immutable, and their accessors absorb the shape differences that JSON-LD allows.

const actor = await ctx.lookupObject("@hongminhee@hollo.social");
if (actor instanceof Person) {
  console.log(actor.name);           // Safe whether it's a string or langString
  const followers = await actor.getFollowers();  // Fetches a URI, unwraps an object
}

lookupObject() takes a handle and runs the whole chain for you, WebFinger discovery included. Accessors like getFollowers() behave the same way whether the value is a URI reference or an inline object, and fetched values are cached.

Vendor fragmentation gets stitched up here too. The three competing quote properties (quoteUri, _misskey_quote, quoteUrl) are unified behind one API, next to the emerging FEP-044f quote. Misskey's isCat property exists as a type, so your server can determine cat-ness with full type safety. It sounds like a joke, but a few dozen details of exactly this kind are what interoperability is actually made of.

Scene 3, revisited: the zombie post dies in one line

Delivery infrastructure first. Plug a message queue into createFederation() and delivery moves to the background, with automatic retries under exponential backoff (up to ten attempts by default). When a post goes to thousands of followers, two-stage fan-out kicks in: a single consolidated message enters the queue, and a background worker splits it into per-server delivery tasks. The publish button responds immediately.

Retries create a problem of their own: the same activity can arrive twice. Fedify keeps a 24-hour idempotence cache of processed activities, so duplicates get detected and skipped before they reach your handlers.

As for the zombie post, the fix is one option:

await ctx.sendActivity(
  { identifier: "alice" },
  "followers",           // Collects recipients from your followers collection
  deleteActivity,
  { orderingKey: post.id },  // Same key = in-order delivery per server
);

Activities that share an orderingKey are delivered to each receiving server in the order they were sent. A Delete can no longer overtake its Create. Activities with different keys still go out in parallel, so throughput survives.

Fedify also handles dead servers. On a 404 Not Found or 410 Gone, it stops retrying and calls a handler you register. If the delivery went to a shared inbox, you also get the list of followers behind it, so you can prune vanished accounts on the spot. Hosts that fail repeatedly trip a per-host circuit breaker that holds deliveries and probes periodically until the host recovers. It's on by default; there's nothing to configure.

Scene 4, revisited: we track the quirks so you don't

Here is how Fedify disarms the traps from scene 4:

  • Authorized fetch: chain .authorize() onto a dispatcher and the verified identity of the requester lands in your callback. Blocklists, private collections, whatever your app needs is plain application logic. The instance-actor deadlock has a supported pattern as well.
  • Threads and inline actors: an activity transformer, enabled by default, rewrites inline actors into URIs on the way out. You don't need to know Threads has this problem.
  • Lemmy's requirements: the custom collection API exposes a moderators collection in a few lines, and Lemmy's JSON-LD context ships preloaded.

When a new quirk surfaces in the wild, the fix lands in Fedify, not in every application separately. Each interoperability lesson gets learned once.

Scene 5, revisited: becoming unsafe takes effort

Fedify's defaults point the other way.

  • Signature verification is something you turn off (for tests), not something you remember to turn on.
  • The document loader refuses private address ranges and loopback out of the box, with DNS rebinding accounted for. To open yourself up to SSRF you have to flip an option whose very name announces it's for testing.
  • When an embedded object's origin differs from its parent document's, the accessor refuses to trust it and re-fetches from the source (based on FEP-fe34). Content spoofing is stopped at the property access level.

In a from-scratch implementation, you have to keep remembering to do things safely. In Fedify, the unsafe path is the one that takes deliberate effort. For a federated server, with its tangle of trust boundaries, that's the right way around.

Your stack stays your stack

“Fine, but what if it doesn't fit our stack?” Fedify was built to fit the stack you already have. There are thirteen web framework integrations: servers like Express, Hono, Fastify, Koa, NestJS, and Elysia, and meta-frameworks like Next.js, Nuxt, SvelteKit, Astro, SolidStart, and Fresh. Middleware handles content negotiation, so the same URL in your existing app serves HTML to browsers and JSON-LD to the fediverse.

Fedify doesn't dictate your database either. For its own storage it asks for one key–value interface, with seven adapters available (Redis, PostgreSQL, MySQL/MariaDB, SQLite, Deno KV, Cloudflare Workers KV, in-memory). Message queues come in eight flavors (PostgreSQL, Redis, AMQP/RabbitMQ, and so on), and you can implement the interface yourself if none fits. Your domain data stays in whatever database and ORM you already use.

Already running federation on another library? There are migration guides with data migration scripts for moving from activitypub-express and friends without losing your existing followers.

The core isn't the ceiling, either. Higher-level packages build on it: @fedify/relay gives you a complete ActivityPub relay server in a single function call, and @fedify/backfill reconstructs incomplete conversation threads by walking the rest of the fediverse for you.

Tools for the whole development loop

A quieter misery of federated development has always been the missing tooling. Fedify comes with tools for every stage of the loop.

fedify init scaffolds a project in one line, and fedify tunnel exposes your local server over HTTPS so you can test against real Mastodon. Activities your server sends can be received by fedify inbox, a disposable inbox server spun up on the spot; whatever other servers publish, you can inspect with fedify lookup. My personal favorite is fedify lookup --authorized-fetch, which generates a one-off key pair and stands up a temporary ActivityPub server just to make a signed request for an object behind secure mode. The CLI is also useful to ActivityPub developers who don't use Fedify at all.

While you write code, an ActivityPub-specific linter (@fedify/lint) catches twenty kinds of interoperability bugs, like an actor missing its inbox. Tests run without the network using mocks from @fedify/testing. Once the server is up, attach the debug dashboard (@fedify/debugger) with one line and watch activities and signature verification results in your browser, live. In production there's built-in OpenTelemetry instrumentation (28 span types, 37 metrics) plus a monitoring guide, and when performance matters, fedify bench, a load-testing tool built for ActivityPub, catches regressions in CI.

As far as I know, no other ActivityPub framework ships even one of the tools in this section.

The documentation is part of the tooling. The official docs run to a thirty-chapter manual and five tutorials, and they go well past API listings. There's an operations chapter with ready-made PromQL queries and alerting rules for watching your queue backlog, and a field-guide chapter that documents de facto conventions, like which property makes your avatar show up in Mastodon, with screenshots. At two in the morning, when federation is broken and you don't know why, this is the difference between a bad night and a short one.

It's already running

Fedify is not a thought experiment. Ghost's ActivityPub service, mentioned above, is built on it. So are Encyclia, which bridges ORCID researcher records into the fediverse; SiliconBeest, running serverless on Cloudflare Workers; Typo Blue, a Korean blogging platform; Hollo, my own single-user microblogging platform; and Hackers' Pub, run by its community. Hollo, by the way, is the app from the beginning of this post: the project I once had to shelve, finished at last on the framework it forced into existence.

The tutorials give a concrete sense of scale. They walk you from a single-file server, a few dozen lines, that Mastodon can follow, through an image sharing service in roughly 750 lines that fully interoperates with Pixelfed (follows, likes, comments), up to a community platform federating both ways with the real lemmy.ml.

The fediverse needs more apps

I didn't build Fedify to mint more ActivityPub experts. Rather the opposite. I believe the fediverse will only grow beyond microblogging when developers can build federated apps without knowing ActivityPub's fine print. Signature spec transitions and JSON-LD compaction are problems that belong inside a framework, not barriers in front of someone with a new idea.

Starting takes one line:

npm init @fedify

Follow the first tutorial and by the end, Mastodon can find your server. If you get stuck, come find us in the Matrix room or GitHub Discussions. See you in the fediverse.

github.com

fedify-dev/fedify · Discussions

Explore the GitHub Discussions forum for fedify-dev fedify. Discuss code, ask questions & collaborate with the developer community.

@Profpatsch@mastodon.xyz

# Month of the Fediverse

* Whole-month decentralized hackathon
* Twice a week sync & demo day
* “Fediverse Direct” for video announcements (3 minute segments)
* Everybody encouraged to Stream on Owncast when they dev ( ), with page showing live feeds

@Profpatsch@mastodon.xyz

# Month of the Fediverse

* Whole-month decentralized hackathon
* Twice a week sync & demo day
* “Fediverse Direct” for video announcements (3 minute segments)
* Everybody encouraged to Stream on Owncast when they dev ( ), with page showing live feeds

@pppond@mastodon.social

The absolute most important and crucial update of all the updates across all the apps ever created on this planet since the beginning of time landed today on pond:

Left side of sign-in screen now has an ASCII pond animation background!

@prismo@mastodon.social

Do you think there is still a room for Prismo in fediverse? We have couple of amazing projects already, doing something similar or much more (lemmy and piefed as an examples). Would love to hear your thoughts in the comments!

  • Yes, there is still a room3 (100%)
  • No, move on to something else0 (0%)
@prismo@mastodon.social

Do you think there is still a room for Prismo in fediverse? We have couple of amazing projects already, doing something similar or much more (lemmy and piefed as an examples). Would love to hear your thoughts in the comments!

  • Yes, there is still a room3 (100%)
  • No, move on to something else0 (0%)
@prismo@mastodon.social

Do you think there is still a room for Prismo in fediverse? We have couple of amazing projects already, doing something similar or much more (lemmy and piefed as an examples). Would love to hear your thoughts in the comments!

  • Yes, there is still a room3 (100%)
  • No, move on to something else0 (0%)
@prismo@mastodon.social

Do you think there is still a room for Prismo in fediverse? We have couple of amazing projects already, doing something similar or much more (lemmy and piefed as an examples). Would love to hear your thoughts in the comments!

  • Yes, there is still a room3 (100%)
  • No, move on to something else0 (0%)
@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@lauti@bonfire.cafe

Our next two #activitypub pull requests are ready for review:

bonfire.cafe

Log in · bonfire.cafe

A space for Bonfire maintainers and contributors to communicate

@lauti@bonfire.cafe

Our next two #activitypub pull requests are ready for review:

bonfire.cafe

Log in · bonfire.cafe

A space for Bonfire maintainers and contributors to communicate

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@Profpatsch@mastodon.xyz

So we are going to have the Email-Problem sooner or later. Sending Spam is for free and infinitely scalable.

In order to combat this, we need to add friction to posting. The most obvious solution here is to add transaction cost in addition to moderation.

“you can only send me a message if you pay me 1ct” for example.

In systems like Twitter this was a hidden cost layer that active background moderation fixed, which is why Musk’s X is overrun by spam.

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

DrFed is our sister project, built alongside to tackle the debugging side of development. It just received @nlnet funding and now has its own account here: @drfed.

drfed.org

DrFed — The ActivityPub debugging platform

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify.

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@drfed@hackers.pub

Some of you have already heard of us as Studio. We now have a proper name: DrFed, short for “Doctor Fed.” We've also just received funding from @nlnet, through the NGI0 Commons Fund.

is a web app for debugging interoperability failures. 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 job is to show where it failed.

We're the team behind @fedify: @2chanhaeng, @gaebalgom, @hongminhee, and @z9mb1. We'll post updates when there's something to try.

nlnet.nl

NLnet; DrFed

@reiver@mastodon.social

Linked Data in HTTP Headers rather than in JSON (i.e., JSON-LD), etc

Many Fediverse servers will give you different content depending on the "Accept" header in the HTTP request.

If "application/activity+json" you get ActivityPub/ActivityStreams JSON-LD metadata. If something else, you get actual file/payload.

If we encoded Linked Data as HTTP headers (key-value pairs), we could include the Linked Data with the actual file/payload.

@reiver@mastodon.social

Fediverse Object Storage

With an obj-URI, one has the addressing mechanism for an Object Storage.

Fediverse Servers replicate data from one server onto another server.

That means that an obj-URI addressed Object Storage on the Fediverse is a replicated Object Storage.

A replicated Object Storage is almost a Fediverse-native CDN. Almost.

You could build a FediCDN on this.

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

acct-URI like URI for content ⁂ We have acct-URI for referring to actors. Ex: acct:bahmankas@example.com We resolve this to an HTTP-URI using WebFinger. ⁂ We don't have an acct-URI like URI for referring to an actor's content. Which would also be resolved with WebFinger. Ex: obj:bahmankas@example.com/file.ext ⁂ I think there are many advantages to being able to refer to content separate from where it is stored. #acctURI #ActivityPub #ActivityStreams #FediDev #objURI

@reiver@mastodon.social

acct-URI like URI for content

We have acct-URI for referring to actors.

Ex: acct:bahmankas@example.com

We resolve this to an HTTP-URI using WebFinger.

We don't have an acct-URI like URI for referring to an actor's content.

Which would also be resolved with WebFinger.

Ex: obj:bahmankas@example.com/file.ext

I think there are many advantages to being able to refer to content separate from where it is stored.

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

3/

[Fediverse CDN]

Once you have Fediverse Caching servers — you have the basis to create a Fediverse content-distribution-network (CDN).

A (Fediverse-native) Fediverse content-distribution-network (CDN) could bring a new level of robustness and scalability to the Fediverse — while still maintaining the properties of decentralization, federation, and localization.

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

2/

[Fediverse CDN]

One way to increase the robustness of the Fediverse is — to introduce the concept of a Fediverse Caching server.

It (the Fediverse Cachine server) caches stuff from the Fediverse rather than the regular Fediverse servers (that house local users and local content).

...

@reiver@mastodon.social

1/

[Fediverse CDN]

One thing that crashes Fediverse servers (maybe the most) is — caching.

And, in particular, their storage drivers filling up (due to caching), which crashes the server.

Fediverse servers cache profiles, posts, images, and other servers on the Fediverse.

...

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

User profiles, posts, images, and other content is cached across the various servers on the Fediverse. Conceptually, software could access any of that from any server that cached it (and not just the origin server). You could have a type of Fediverse content-distribution-network (CDN) if you did. #CDN #ContentDeliveryNetwork #ContentDistributionNetwork #DeSo #FediCDN #FediDev #FediDevs #Fediverse

@reiver@mastodon.social

acct-URI like URI for content

We have acct-URI for referring to actors.

Ex: acct:bahmankas@example.com

We resolve this to an HTTP-URI using WebFinger.

We don't have an acct-URI like URI for referring to an actor's content.

Which would also be resolved with WebFinger.

Ex: obj:bahmankas@example.com/file.ext

I think there are many advantages to being able to refer to content separate from where it is stored.

@lauti@bonfire.cafe

The next step in our #activitypub implementation is ready! This brings a simple instance actor object along with #webfinger support for it and a #nodeinfo endpoint.

We highly appreciate reviews from any #fedidev 🙏

codeberg.org/Klasse-Methode/...


We are really greatfull for @nlnet@social.nlnet.nl to fund this work and for @linos@graz.social for being such a great mentor!

codeberg.org

feat(activitypub): add nodeinfo, webfinger and instance actor object

lauti - Open Source Community Calendar for events, groups and places

@reiver@mastodon.social

acct-URI like URI for content

We have acct-URI for referring to actors.

Ex: acct:bahmankas@example.com

We resolve this to an HTTP-URI using WebFinger.

We don't have an acct-URI like URI for referring to an actor's content.

Which would also be resolved with WebFinger.

Ex: obj:bahmankas@example.com/file.ext

I think there are many advantages to being able to refer to content separate from where it is stored.

@reiver@mastodon.social

acct-URI like URI for content

We have acct-URI for referring to actors.

Ex: acct:bahmankas@example.com

We resolve this to an HTTP-URI using WebFinger.

We don't have an acct-URI like URI for referring to an actor's content.

Which would also be resolved with WebFinger.

Ex: obj:bahmankas@example.com/file.ext

I think there are many advantages to being able to refer to content separate from where it is stored.

@box464@mastodon.social

I guess a little known fact is that Mastodon has a feature that allows you to schedule your posts. The default app doesn’t have this built in, but there are plenty of third party apps that do.
Mona
Trunks (long press on the post button)
Phanpy
Nicolium
Radiant
Fedicat
Elk
Coho
Tusky 
Fedilab
Moshidon 
SoraSNS
Pachli

@lauti@bonfire.cafe

The next step in our #activitypub implementation is ready! This brings a simple instance actor object along with #webfinger support for it and a #nodeinfo endpoint.

We highly appreciate reviews from any #fedidev 🙏

codeberg.org/Klasse-Methode/...


We are really greatfull for @nlnet@social.nlnet.nl to fund this work and for @linos@graz.social for being such a great mentor!

codeberg.org

feat(activitypub): add nodeinfo, webfinger and instance actor object

lauti - Open Source Community Calendar for events, groups and places

@reiver@mastodon.social

Merging ActivityStreams Core & Vocabulary

It looks like there is an effort to try to merge the ActivityStreams Core specification with the ActivityStreams Vocabulary specification into a single specification 🎉

github.com/w3c/activitystreams

...

(I think this merged specification should also rename "Activity Streams" (with a space) to "ActivityStreams" (without a space).)

github.com

Combine Activity Streams 2.0 Core and Activity Vocabulary into one document · Issue #707 · w3c/activitystreams

The division between AS2 Core and the Activity Vocabulary goes back to Activity Streams 1.0 and the AS1 base schema. Does this division still serve a purpose for us in 2026? Would there be a benefi...

@lauti@bonfire.cafe

The next step in our #activitypub implementation is ready! This brings a simple instance actor object along with #webfinger support for it and a #nodeinfo endpoint.

We highly appreciate reviews from any #fedidev 🙏

codeberg.org/Klasse-Methode/...


We are really greatfull for @nlnet@social.nlnet.nl to fund this work and for @linos@graz.social for being such a great mentor!

codeberg.org

feat(activitypub): add nodeinfo, webfinger and instance actor object

lauti - Open Source Community Calendar for events, groups and places

@reiver@mastodon.social

Merging ActivityStreams Core & Vocabulary

It looks like there is an effort to try to merge the ActivityStreams Core specification with the ActivityStreams Vocabulary specification into a single specification 🎉

github.com/w3c/activitystreams

...

(I think this merged specification should also rename "Activity Streams" (with a space) to "ActivityStreams" (without a space).)

github.com

Combine Activity Streams 2.0 Core and Activity Vocabulary into one document · Issue #707 · w3c/activitystreams

The division between AS2 Core and the Activity Vocabulary goes back to Activity Streams 1.0 and the AS1 base schema. Does this division still serve a purpose for us in 2026? Would there be a benefi...

@lauti@bonfire.cafe

The next step in our #activitypub implementation is ready! This brings a simple instance actor object along with #webfinger support for it and a #nodeinfo endpoint.

We highly appreciate reviews from any #fedidev 🙏

codeberg.org/Klasse-Methode/...


We are really greatfull for @nlnet@social.nlnet.nl to fund this work and for @linos@graz.social for being such a great mentor!

codeberg.org

feat(activitypub): add nodeinfo, webfinger and instance actor object

lauti - Open Source Community Calendar for events, groups and places

@lauti@bonfire.cafe

The next step in our #activitypub implementation is ready! This brings a simple instance actor object along with #webfinger support for it and a #nodeinfo endpoint.

We highly appreciate reviews from any #fedidev 🙏

codeberg.org/Klasse-Methode/...


We are really greatfull for @nlnet@social.nlnet.nl to fund this work and for @linos@graz.social for being such a great mentor!

codeberg.org

feat(activitypub): add nodeinfo, webfinger and instance actor object

lauti - Open Source Community Calendar for events, groups and places

@lauti@bonfire.cafe

The next step in our #activitypub implementation is ready! This brings a simple instance actor object along with #webfinger support for it and a #nodeinfo endpoint.

We highly appreciate reviews from any #fedidev 🙏

codeberg.org/Klasse-Methode/...


We are really greatfull for @nlnet@social.nlnet.nl to fund this work and for @linos@graz.social for being such a great mentor!

codeberg.org

feat(activitypub): add nodeinfo, webfinger and instance actor object

lauti - Open Source Community Calendar for events, groups and places

@maddyunderstars@aus.social

FEP-bebd: Follow Invites

This is the discussion thread for the draft FEP-bebd: Follow Invites

> This document describes an alternative method of accepting follow requests via an 'invite code' intended to be used with Private FEP-1b12 Groups, although it is applicable to any Actor. It further defines an extension of Webfinger to resolve an InviteCode to its corresponding Actor.

Full text here:
codeberg.org/MaddyUnderStars/f

codeberg.org

Cookie monster!

@box464@mastodon.social

I guess a little known fact is that Mastodon has a feature that allows you to schedule your posts. The default app doesn’t have this built in, but there are plenty of third party apps that do.
Mona
Trunks (long press on the post button)
Phanpy
Nicolium
Radiant
Fedicat
Elk
Coho
Tusky 
Fedilab
Moshidon 
SoraSNS
Pachli

@hongminhee@hollo.social

A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a server built on Workers, D1, R2, and Queues, using Fedify.

I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

I'm glad to see Fedify put to use for something like this. Worth checking out.

The source code is on GitHub under AGPL 3.0.

github.com

GitHub - SJang1/siliconbeest: Fediverse in Cloudflare Workers + live serverless code

Fediverse in Cloudflare Workers + live serverless code - SJang1/siliconbeest

@siliconsjang@hackers.pub

안녕하세요! Hello everyone!

SiliconBeest v1.0.0 공개

마스토돈 API 호환을 목표로 하는 Cloudflare 엣지 컴퓨팅 기반 서버리스 연합우주 소프트웨어, SiliconBeest v1.0.0을 공개하게 되어 기쁩니다.

I'm pleased to announce SiliconBeest v1.0.0, a serverless fediverse software project built on Cloudflare edge computing, aiming for Mastodon API compatibility.

SiliconBeest Logo - a wildebeest with silicon on it


설명 (Description)

ko

  • SiliconBeest는 Cloudflare Workers 환경에서 동작하는 연합우주 프로젝트입니다.
  • Cloudflare 장애가 발생했을 때 다수의 연합우주 서버가 함께 접속 불가 상태가 되는 것을 보며, 연합우주 역시 Cloudflare 인프라에 상당히 의존하고 있다는 점에 착안했습니다.
  • 그렇다면 아예 Cloudflare 위에서 동작하는 연합우주 소프트웨어를 만들어보자는 생각에서 시작했습니다.
  • Cloudflare Inc.에서 개발했던 Wildebeest 프로젝트의 아이디어와 일부 코드를 참고했습니다.
  • 프로젝트 이름은 제 닉네임인 silicon(sjang) 이랑 Cloudflare의 Wildebeest를 조합해 SiliconBeest로 정했습니다.
  • 적은 사용자 수와 작은 규모의 연합을 기준으로는 Cloudflare 무료 플랜에서도 운영할 수 있도록, 조금 더 큰 규모의 연합에서는 월 $5 플랜으로도 감당할 수 있도록 만드는 것을 목표로 하고 있습니다.
  • API 측면에서 SiliconBeest의 목표는 Mastodon 및 Misskey API와의 호환입니다. 다만 이론적으로 가능한 것과 실제 구현은 별개의 문제이기 때문에, 해당 부분은 아직 개발 중이며 장기적인 목표로 보고 있습니다.

en

  • SiliconBeest is a fediverse project designed to run on Cloudflare Workers.
  • After seeing many fediverse servers become unavailable when Cloudflare had outages, I realized that the fediverse already relies heavily on Cloudflare infrastructure.
  • So I thought: why not build fediverse software directly on top of Cloudflare?
  • This project was inspired by Cloudflare Inc.’s Wildebeest project, and it also references some of its ideas and code.
  • The project name, SiliconBeest, comes from my nickname silicon(sjang) combined with Cloudflare’s Wildebeest.
  • I’m still working on making it as inexpensive to run as possible. For now, the goal is to support a small number of users with a small federation footprint on the free plan, and a medium federation footprint on the $5 plan.
  • From an API perspective, SiliconBeest aims to be compatible with both Mastodon and Misskey APIs. However, as many people know, full compatibility is difficult in practice, so this remains a long-term goal rather than something fully implemented today.

아직은 초기 버전이라 구현되지 않은 부분도 많지만, Cloudflare Workers, D1, R2, Queues 등 Cloudflare의 서버리스 인프라 위에서 연합우주 소프트웨어를 얼마나 가볍고 저렴하게 운영할 수 있는지 실험하고 있습니다.

This is still an early version, and many parts are not implemented yet. However, SiliconBeest is an experiment in how lightweight and affordable fediverse software can be when built on top of Cloudflare’s serverless infrastructure, such as Workers, D1, R2, and Queues.

현재 v1.0.0에서는 기본적인 구조와 핵심 기능을 먼저 정리하는 데 집중했으며, 앞으로 Mastodon API 호환성, federation 안정성, 관리 도구, 문서화 등을 점진적으로 개선해나갈 예정입니다.

In v1.0.0, I focused on organizing the basic architecture and core functionality first. Going forward, I plan to gradually improve Mastodon API compatibility, federation stability, admin tooling, and documentation.

관심 있으신 분들은 GitHub 저장소를 확인해주시고, 이슈나 피드백도 언제든 환영합니다.

If you’re interested, please check out the GitHub repository. Issues, feedback, and suggestions are always welcome.

https://github.com/SJang1/siliconbeest


설치 및 배포 방법 (Installation and Deployment)

SiliconBeest는 GitHub 템플릿과 Cloudflare를 이용해 비교적 간단하게 배포할 수 있습니다.

  1. GitHub 템플릿에서 새 저장소를 생성합니다.
  2. Cloudflare에서 필요한 리소스와 환경을 설정합니다.
  3. Cloudflare API 토큰과 필요한 환경변수를 GitHub Secrets에 저장합니다.
  4. GitHub Actions를 통해 자동 배포를 진행합니다.
  5. 배포가 완료되면 인스턴스 설정을 마무리합니다.

아직 설치 과정은 계속 다듬고 있으며, 개선사항이 많음을 알고 있습니다. 추후 보강해 나갈 예정이며, 이에 대한 PR도 환영입니다.

SiliconBeest can be deployed relatively easily using a GitHub template and Cloudflare.

  1. Create a new repository from the GitHub template.
  2. Set up the required resources and environment on Cloudflare.
  3. Store the Cloudflare API token and required environment variables in GitHub Secrets.
  4. Deploy automatically using GitHub Actions.
  5. Once deployment is complete, finish configuring your instance.

The installation process is still being refined, and I’m aware that there is plenty of room for improvement. I plan to keep improving the documentation and deployment flow over time, and related PRs are always welcome.

@box464@mastodon.social

I guess a little known fact is that Mastodon has a feature that allows you to schedule your posts. The default app doesn’t have this built in, but there are plenty of third party apps that do.
Mona
Trunks (long press on the post button)
Phanpy
Nicolium
Radiant
Fedicat
Elk
Coho
Tusky 
Fedilab
Moshidon 
SoraSNS
Pachli

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

P2P CDN for Low-Cost Video and File Delivery

5/

Some that we should look at are:

• DC++ Hubs
• TorrentBytes
• TBDev / Early Trackers
• TBDev codebases / PureTNA
• What.CD / PassThePopcorn
• Empornium / BroadcastheNet
• RED (Redacted) / Orpheus (OPS)
• GGn (GazelleGames) / Modern Trackers
• Cross-Seed / Autobrr / BTT

(Ignore the type of content they served)

Each of these iterated on social technologies — and created P2P CDNs.

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

P2P CDN for Low-Cost Video and File Delivery

4/

These created technical and social technologies to create P2P CDNs.

And note that I (also) said "social technologies". The social technologies were as important as the software.

P2P CDNs can hugely reduce the cost of serving files, including videos. (There is a long history of them working.)

P2P CDNs can make serving large files on the Fediverse much more viable.

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

P2P CDN for Low-Cost Video and File Delivery

3/

There are techniques for creating a CDN that can support a community while keeping costs down.

You can trace the history of these techniques back to at least the 1990s.

Broadly speaking, these techniques were use with:

BitTorrent, Private BitTorrent Trackers, and Direct Connect.

I think the Fediverse can and should learn from these techniques, and put them to use.

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

P2P CDN for Low-Cost Video and File Delivery

2/

There are definitely affordable commercial choices for CDNs for smaller sites and home-labers.

But, if you are trying to build a community (with many, many users) — a CDN can become expensive. Even very expensive.

(Electronic Arts (EA) has a whole team that takes up half a floor whose job iis to negotiate pricing from the Akamai CDN company.)

@reiver@mastodon.social

P2P CDN for Low-Cost Video and File Delivery

1/

A CDN is a service that stores copies of your website's files in many locations around the world so visitors can download them from a nearby server instead of one far away. This makes your website load faster and stay available even when lots of people are using it at the same time.

CDNs are not only important for Fediverse servers but they are important for the Web in general

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

PeerTube P2P protocol + HLS 1/ PeerTube uses a P2P protocol with HLS to distribute videos — and to reduce costs for serving videos. (It is somewhat BitTorrent / WebTorrent like.) I wonder how often how often P2P downloads tend to happen. It probably depends on a number of things — but it would be interesting try to understand it better. ... #FediDev #PeerTube

@reiver@mastodon.social

PeerTube P2P protocol + HLS

1/

PeerTube uses a P2P protocol with HLS to distribute videos — and to reduce costs for serving videos.

(It is somewhat BitTorrent / WebTorrent like.)

I wonder how often how often P2P downloads tend to happen.

It probably depends on a number of things — but it would be interesting try to understand it better.

...

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

PeerTube P2P protocol + HLS

2/

I imagine P2P downloads could be made more common (than they currently are) if people were encouraged to save videos locally — because they could then serve chunks of that saved video to others.

And, if people were rewarded somehow for serving video chunks to others — that could further make P2P downloads more common.

(These incentives existed for some BitTorrent sites decades ago.)

@reiver@mastodon.social

PeerTube P2P protocol + HLS

1/

PeerTube uses a P2P protocol with HLS to distribute videos — and to reduce costs for serving videos.

(It is somewhat BitTorrent / WebTorrent like.)

I wonder how often how often P2P downloads tend to happen.

It probably depends on a number of things — but it would be interesting try to understand it better.

...

@reiver@mastodon.social

Self-Hosting an ActivityPub Video Podcast Is Surprisingly Affordable

1/

Imagine this.

You want to launch your own video podcast.

A new episode every week.
Each episode is 1 hour long.
Full HD (1080p), 60 fps video.

What would it cost to host it yourself?

Before I ran the numbers, I assumed it would be expensive — maybe even impractical.

I was wrong.

The reality is surprisingly affordable.

Here is why.

...

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

Self-Hosting an ActivityPub Video Podcast Is Surprisingly Affordable

4/

When you look at the actual storage requirements, self-hosting a video podcast on the Fediverse starts to look a lot less intimidating — and a lot more realistic.

It is affordable — especially with your own HomeLab (where you buy your own hard drives rather than rent them).

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

Self-Hosting an ActivityPub Video Podcast Is Surprisingly Affordable

3/

A 2 TB hard drive is often available for around $50–$60, which is enough space for five years of weekly episodes.

Need more room?

4 TB, 8 TB, 12 TB, and even 16 TB drives are widely available and far more affordable than most people expect. (Ex: 8TB is about $130 to $170.)

...

@reiver@mastodon.social

Self-Hosting an ActivityPub Video Podcast Is Surprisingly Affordable

1/

Imagine this.

You want to launch your own video podcast.

A new episode every week.
Each episode is 1 hour long.
Full HD (1080p), 60 fps video.

What would it cost to host it yourself?

Before I ran the numbers, I assumed it would be expensive — maybe even impractical.

I was wrong.

The reality is surprisingly affordable.

Here is why.

...

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

Stable Outbox Collection Pages

3/

If the page with 3 items contains the 3 oldest items, then —

Every time a new items is added to the collection, then every single collection page will change. I.e., they all churn.

Which means that all cached copies of any collection pages will be invalidated.

Which means a static site generator will have to regenerate all of them again.

Etc.

BUT, if instead —

@reiver@mastodon.social

Stable Outbox Collection Pages

1/

ActivityPub uses collections for a number of things:

• followers
• following
• inbox
• outbox

And, rather than dump everything in the collection into a single document, ActivityPub paginates using collection pages.

That's great.

But, how you divide up a collection into pages matters and affects things. Such as: caching.

I'll explain.

@reiver@mastodon.social

Stable Outbox Collection Pages

1/

ActivityPub uses collections for a number of things:

• followers
• following
• inbox
• outbox

And, rather than dump everything in the collection into a single document, ActivityPub paginates using collection pages.

That's great.

But, how you divide up a collection into pages matters and affects things. Such as: caching.

I'll explain.

@reiver@mastodon.social

Something missing from 'followers' and 'following' collections.

1/

ActivityPub 'followers' and 'following' collections tend to be missing an important piece of information —

The date-time when person A followed person B.

There are certain use-cases where this matters.

You can see an example of this information missing in what Mastodon includes in the attached screen-shot.

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://mastodon.social/users/reiver/following?page=20",
  "type": "OrderedCollectionPage",
  "totalItems": 1394,
  "next": "https://mastodon.social/users/reiver/following?page=21",
  "prev": "https://mastodon.social/users/reiver/following?page=19",
  "partOf": "https://mastodon.social/users/reiver/following",
  "orderedItems": [
    "https://mastodon.social/users/georgiagemo",
    "https://spectra.video/accounts/fedicon",
    "https://indieweb.social/users/KarenKeiller",
    "https://toot.wales/users/jaz",
    "https://hachyderm.io/users/cyberlyra",
    "https://mstdn.cool/users/fedijedi",
    "https://thecanadian.social/users/mike",
    "https://badges.fedicon.ca/actors/badges.fedicon.ca/fedicon",
    "https://social.linux.pizza/users/chocodum",
    "https://mastodon.social/users/pojntfx",
    "https://cosocial.ca/users/kgw",
    "https://social.anoxinon.de/users/Codeberg"
  ]
}
ALT text

{ "@context": "https://www.w3.org/ns/activitystreams", "id": "https://mastodon.social/users/reiver/following?page=20", "type": "OrderedCollectionPage", "totalItems": 1394, "next": "https://mastodon.social/users/reiver/following?page=21", "prev": "https://mastodon.social/users/reiver/following?page=19", "partOf": "https://mastodon.social/users/reiver/following", "orderedItems": [ "https://mastodon.social/users/georgiagemo", "https://spectra.video/accounts/fedicon", "https://indieweb.social/users/KarenKeiller", "https://toot.wales/users/jaz", "https://hachyderm.io/users/cyberlyra", "https://mstdn.cool/users/fedijedi", "https://thecanadian.social/users/mike", "https://badges.fedicon.ca/actors/badges.fedicon.ca/fedicon", "https://social.linux.pizza/users/chocodum", "https://mastodon.social/users/pojntfx", "https://cosocial.ca/users/kgw", "https://social.anoxinon.de/users/Codeberg" ] }

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

Something missing from 'followers' and 'following' collections.

2/

I think this could be addressed by using the ActivityPub 'published' field:

w3.org/TR/activitystreams-voca

Such as what is shown in the (new) attached screen-shot.

So that the date-time when person A followed person B is included.

{"@context":"https://www.w3.org/ns/activitystreams","id":"https://mastodon.social/users/reiver/following?page=20","type":"OrderedCollectionPage","totalItems":1394,"next":"https://mastodon.social/users/reiver/following?page=21","prev":"https://mastodon.social/users/reiver/following?page=19","partOf":"https://mastodon.social/users/reiver/following","orderedItems":[{"url":"https://mastodon.social/users/georgiagemo","published":"2025-08-01T12:12:12Z"},{"url":"https://spectra.video/accounts/fedicon","published":"2025-07-25T13:04:12Z"},{"url":"https://indieweb.social/users/KarenKeiller","published":"2025-07-25T02:55:18Z"},{"url":"https://toot.wales/users/jaz","published":"2025-07-25T02:55:18Z"},{"url":"https://hachyderm.io/users/cyberlyra","published":"2025-07-23T17:20:02Z"},{"url":"https://mstdn.cool/users/fedijedi","published":"2025-07-23T17:20:02Z"},{"url":"https://thecanadian.social/users/mike","published":"2025-07-21T14:02:02Z"},{"url":"https://badges.fedicon.ca/actors/badges.fedicon.ca/fedicon","published":"2025-07-14T09:03:04Z"},{"url":"https://social.linux.pizza/users/chocodum","published":"2025-07-13T13:13:13Z"},{"url":"https://mastodon.social/users/pojntfx","published":"2025-07-11T19:20:21Z"},{"url":"https://cosocial.ca/users/kgw","published":"2025-07-10T11:12:13Z"},{"url":"https://social.anoxinon.de/users/Codeberg","published":"2025-07-09T10:11:12Z"}]}
ALT text

{"@context":"https://www.w3.org/ns/activitystreams","id":"https://mastodon.social/users/reiver/following?page=20","type":"OrderedCollectionPage","totalItems":1394,"next":"https://mastodon.social/users/reiver/following?page=21","prev":"https://mastodon.social/users/reiver/following?page=19","partOf":"https://mastodon.social/users/reiver/following","orderedItems":[{"url":"https://mastodon.social/users/georgiagemo","published":"2025-08-01T12:12:12Z"},{"url":"https://spectra.video/accounts/fedicon","published":"2025-07-25T13:04:12Z"},{"url":"https://indieweb.social/users/KarenKeiller","published":"2025-07-25T02:55:18Z"},{"url":"https://toot.wales/users/jaz","published":"2025-07-25T02:55:18Z"},{"url":"https://hachyderm.io/users/cyberlyra","published":"2025-07-23T17:20:02Z"},{"url":"https://mstdn.cool/users/fedijedi","published":"2025-07-23T17:20:02Z"},{"url":"https://thecanadian.social/users/mike","published":"2025-07-21T14:02:02Z"},{"url":"https://badges.fedicon.ca/actors/badges.fedicon.ca/fedicon","published":"2025-07-14T09:03:04Z"},{"url":"https://social.linux.pizza/users/chocodum","published":"2025-07-13T13:13:13Z"},{"url":"https://mastodon.social/users/pojntfx","published":"2025-07-11T19:20:21Z"},{"url":"https://cosocial.ca/users/kgw","published":"2025-07-10T11:12:13Z"},{"url":"https://social.anoxinon.de/users/Codeberg","published":"2025-07-09T10:11:12Z"}]}

{"@context":"https://www.w3.org/ns/activitystreams","id":"https://mastodon.social/users/reiver/following?page=20","type":"OrderedCollectionPage","totalItems":1394,"next":"https://mastodon.social/users/reiver/following?page=21","prev":"https://mastodon.social/users/reiver/following?page=19","partOf":"https://mastodon.social/users/reiver/following","orderedItems":[{"url":"https://mastodon.social/users/georgiagemo","published":"2025-08-01T12:12:12Z"},{"url":"https://spectra.video/accounts/fedicon","published":"2025-07-25T13:04:12Z"},{"url":"https://indieweb.social/users/KarenKeiller","published":"2025-07-25T02:55:18Z"},{"url":"https://toot.wales/users/jaz","published":"2025-07-25T02:55:18Z"},{"url":"https://hachyderm.io/users/cyberlyra","published":"2025-07-23T17:20:02Z"},{"url":"https://mstdn.cool/users/fedijedi","published":"2025-07-23T17:20:02Z"},{"url":"https://thecanadian.social/users/mike","published":"2025-07-21T14:02:02Z"},{"url":"https://badges.fedicon.ca/actors/badges.fedicon.ca/fedicon","published":"2025-07-14T09:03:04Z"},{"url":"https://social.linux.pizza/users/chocodum","published":"2025-07-13T13:13:13Z"},{"url":"https://mastodon.social/users/pojntfx","published":"2025-07-11T19:20:21Z"},{"url":"https://cosocial.ca/users/kgw","published":"2025-07-10T11:12:13Z"},{"url":"https://social.anoxinon.de/users/Codeberg","published":"2025-07-09T10:11:12Z"}]}
ALT text

{"@context":"https://www.w3.org/ns/activitystreams","id":"https://mastodon.social/users/reiver/following?page=20","type":"OrderedCollectionPage","totalItems":1394,"next":"https://mastodon.social/users/reiver/following?page=21","prev":"https://mastodon.social/users/reiver/following?page=19","partOf":"https://mastodon.social/users/reiver/following","orderedItems":[{"url":"https://mastodon.social/users/georgiagemo","published":"2025-08-01T12:12:12Z"},{"url":"https://spectra.video/accounts/fedicon","published":"2025-07-25T13:04:12Z"},{"url":"https://indieweb.social/users/KarenKeiller","published":"2025-07-25T02:55:18Z"},{"url":"https://toot.wales/users/jaz","published":"2025-07-25T02:55:18Z"},{"url":"https://hachyderm.io/users/cyberlyra","published":"2025-07-23T17:20:02Z"},{"url":"https://mstdn.cool/users/fedijedi","published":"2025-07-23T17:20:02Z"},{"url":"https://thecanadian.social/users/mike","published":"2025-07-21T14:02:02Z"},{"url":"https://badges.fedicon.ca/actors/badges.fedicon.ca/fedicon","published":"2025-07-14T09:03:04Z"},{"url":"https://social.linux.pizza/users/chocodum","published":"2025-07-13T13:13:13Z"},{"url":"https://mastodon.social/users/pojntfx","published":"2025-07-11T19:20:21Z"},{"url":"https://cosocial.ca/users/kgw","published":"2025-07-10T11:12:13Z"},{"url":"https://social.anoxinon.de/users/Codeberg","published":"2025-07-09T10:11:12Z"}]}

@reiver@mastodon.social

Something missing from 'followers' and 'following' collections.

1/

ActivityPub 'followers' and 'following' collections tend to be missing an important piece of information —

The date-time when person A followed person B.

There are certain use-cases where this matters.

You can see an example of this information missing in what Mastodon includes in the attached screen-shot.

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://mastodon.social/users/reiver/following?page=20",
  "type": "OrderedCollectionPage",
  "totalItems": 1394,
  "next": "https://mastodon.social/users/reiver/following?page=21",
  "prev": "https://mastodon.social/users/reiver/following?page=19",
  "partOf": "https://mastodon.social/users/reiver/following",
  "orderedItems": [
    "https://mastodon.social/users/georgiagemo",
    "https://spectra.video/accounts/fedicon",
    "https://indieweb.social/users/KarenKeiller",
    "https://toot.wales/users/jaz",
    "https://hachyderm.io/users/cyberlyra",
    "https://mstdn.cool/users/fedijedi",
    "https://thecanadian.social/users/mike",
    "https://badges.fedicon.ca/actors/badges.fedicon.ca/fedicon",
    "https://social.linux.pizza/users/chocodum",
    "https://mastodon.social/users/pojntfx",
    "https://cosocial.ca/users/kgw",
    "https://social.anoxinon.de/users/Codeberg"
  ]
}
ALT text

{ "@context": "https://www.w3.org/ns/activitystreams", "id": "https://mastodon.social/users/reiver/following?page=20", "type": "OrderedCollectionPage", "totalItems": 1394, "next": "https://mastodon.social/users/reiver/following?page=21", "prev": "https://mastodon.social/users/reiver/following?page=19", "partOf": "https://mastodon.social/users/reiver/following", "orderedItems": [ "https://mastodon.social/users/georgiagemo", "https://spectra.video/accounts/fedicon", "https://indieweb.social/users/KarenKeiller", "https://toot.wales/users/jaz", "https://hachyderm.io/users/cyberlyra", "https://mstdn.cool/users/fedijedi", "https://thecanadian.social/users/mike", "https://badges.fedicon.ca/actors/badges.fedicon.ca/fedicon", "https://social.linux.pizza/users/chocodum", "https://mastodon.social/users/pojntfx", "https://cosocial.ca/users/kgw", "https://social.anoxinon.de/users/Codeberg" ] }

@fedicon@techhub.social

🎟️ Today is the last day to get DISCOUNTED EARLY BIRD tickets for FediCon 2026 — don't miss your chance to grab a discounted pass!

(Tickets will be regularly priced after today.)

FediCon is a conference about the Fediverse and the Open Social Web

Come be part of a community gathering focused on the Fediverse, the Social Web, and the people building the future of open social platforms.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@fedicon@techhub.social

🎟️ Today is the last day to get DISCOUNTED EARLY BIRD tickets for FediCon 2026 — don't miss your chance to grab a discounted pass!

(Tickets will be regularly priced after today.)

FediCon is a conference about the Fediverse and the Open Social Web

Come be part of a community gathering focused on the Fediverse, the Social Web, and the people building the future of open social platforms.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@reiver@mastodon.social

🎟️ Today is the last day to get DISCOUNTED EARLY BIRD tickets for FediCon 2026 — don't miss your chance to grab a discounted pass!

(Tickets will be regularly priced after today.)

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@fedicon@techhub.social

🎟️ Today is the last day to get DISCOUNTED EARLY BIRD tickets for FediCon 2026 — don't miss your chance to grab a discounted pass!

(Tickets will be regularly priced after today.)

FediCon is a conference about the Fediverse and the Open Social Web

Come be part of a community gathering focused on the Fediverse, the Social Web, and the people building the future of open social platforms.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@fedicon@techhub.social

🎟️ Today is the last day to get DISCOUNTED EARLY BIRD tickets for FediCon 2026 — don't miss your chance to grab a discounted pass!

(Tickets will be regularly priced after today.)

FediCon is a conference about the Fediverse and the Open Social Web

Come be part of a community gathering focused on the Fediverse, the Social Web, and the people building the future of open social platforms.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@fedicon@techhub.social

🎟️ Today is the last day to get DISCOUNTED EARLY BIRD tickets for FediCon 2026 — don't miss your chance to grab a discounted pass!

(Tickets will be regularly priced after today.)

FediCon is a conference about the Fediverse and the Open Social Web

Come be part of a community gathering focused on the Fediverse, the Social Web, and the people building the future of open social platforms.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

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

Remote Inbox Architecture

2/

The Remote Inbox server deals with incoming activities, objects, etc, from other users..

The front-end can get the inbox (and other feeds') data from the Remote Inbox server.

(You'd probably want to store cached data from the Fediverse elsewhere from these two servers, as I've said before. But, that is a separate thread.)

@reiver@mastodon.social

Remote Inbox Architecture

1/

This, the Remote Inbox Architecture, is an architecture for a Fediverse back-end server that I think could be useful.

Here is how it works — there are (at least) 2 servers involved: (1) the main back-end server, and (2) a remote inbox server.

The actor file on main back-end server "points" the inbox to the remote server.

It separates the user's content from the front-end related functionality

...

@box464@mastodon.social

My Hollo instance has been updated to 0.9.1 if you wanna take a peek. It's shaking off the early UI look and feel for something more professional.

A lot of extra configurations that I didn't have time to review or enable, but some of it looks interesting, like more efficient handling of remote media.

hollo.box464.social/@hollo464

hollo.box464.social

Hollo There

A weekend fiddler of all things fediverse.

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

Here is my work-in-progress FEP for using JSON Resume with ActivityPub:

FEP-6158: ActivityPub 'Resume' Object: JSON Resume expressed as JSON-LD

codeberg.org/reiver/fep/src/br

I prefer to write for clarity, so it still needs work.

codeberg.org

Cookie monster!

@box464@mastodon.social

My Hollo instance has been updated to 0.9.1 if you wanna take a peek. It's shaking off the early UI look and feel for something more professional.

A lot of extra configurations that I didn't have time to review or enable, but some of it looks interesting, like more efficient handling of remote media.

hollo.box464.social/@hollo464

hollo.box464.social

Hollo There

A weekend fiddler of all things fediverse.

@silverpill@mitra.social
@silverpill@mitra.social
@silverpill@mitra.social
@reiver@mastodon.social · Reply to @reiver ⊼ (Charles) :batman:

Here is my work-in-progress FEP for using JSON Resume with ActivityPub:

FEP-6158: ActivityPub 'Resume' Object: JSON Resume expressed as JSON-LD

codeberg.org/reiver/fep/src/br

I prefer to write for clarity, so it still needs work.

codeberg.org

Cookie monster!

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

Here is my work-in-progress FEP for using JSON Resume with ActivityPub:

FEP-6158: ActivityPub 'Resume' Object: JSON Resume expressed as JSON-LD

codeberg.org/reiver/fep/src/br

I prefer to write for clarity, so it still needs work.

codeberg.org

Cookie monster!

@box464@mastodon.social

@hollo releases a new major version update, 0.90. Too many changes to hit in a single post! Skimming, the most notable to users will be the switch from Pico CSS (my weekend hobbyist fave) to Uno CSS. At least in screenshots, the new UI is taking on a polished look.

Planning to upgrade, but need to review this a bit more before flipping the switch.

github.com/fedify-dev/hollo/di

github.com

Hollo 0.9.0: Redesigned UI, passkey authentication, FEP-044f quote authorization, and major performance improvements · fedify-dev/hollo · Discussion #496

Hollo is a single-user, headless ActivityPub server. It exposes a Mastodon-compatible API with no built-in frontend, so you can connect any Mastodon client of your choice. It's built on Fedify and ...

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

I may have written a JSON-LD schema for JSON Resume.

It is defined in terms of ActivityPub.
For example:

'Resume' is a sub-type of an ActivityPub 'Object'. There are some new fields defined. Etc.

...

Now the question is — where do I put it?

Do I create a pull-request to the JSON Resume resume-schema repo?

Do I create a FEP?

Do I put it somewhere else?

@hongminhee@hollo.social

I have deeply mixed feelings about 's adoption of JSON-LD, as someone who's spent way too long dealing with it while building .

Part of me wishes it had never happened. A lot of developers jump into ActivityPub development without really understanding JSON-LD, and honestly, can you blame them? The result is a growing number of implementations producing technically invalid JSON-LD. It works, sort of, because everyone's just pattern-matching against what Mastodon does, but it's not correct. And even developers who do take the time to understand JSON-LD often end up hardcoding their documents anyway, because proper JSON-LD processor libraries simply don't exist for many languages. No safety net, no validation, just vibes and hoping you got the @context right. Naturally, mistakes creep in.

But then the other part of me thinks: well, we're stuck with JSON-LD now. There's no going back. So wouldn't it be nice if people actually used it properly? Process the documents, normalize them, do the compaction and expansion dance the way the spec intended. That's what Fedify does.

Here's the part that really gets to me, though. Because Fedify actually processes JSON-LD correctly, it's more likely to break when talking to implementations that produce malformed documents. From the end user's perspective, Fedify looks like the fragile one. “Why can't I follow this person?” Well, because their server is emitting garbage JSON-LD that happens to work with implementations that just treat it as a regular JSON blob. Every time I get one of these bug reports, I feel a certain injustice. Like being the only person in the group project who actually read the assignment.

To be fair, there are real practical reasons why most people don't bother with proper JSON-LD processing. Implementing a full processor is genuinely a lot of work. It leans on the entire Linked Data stack, which is bigger than most people expect going in. And the performance cost isn't trivial either. Fedify uses some tricks to keep things fast, and I'll be honest, that code isn't my proudest work.

Anyway, none of this is going anywhere. Just me grumbling into the void. If you're building an ActivityPub implementation, maybe consider using a JSON-LD processor if one's available for your language. And if you're not going to, at least test your output against implementations that do.

@hongminhee@hollo.social

I have deeply mixed feelings about 's adoption of JSON-LD, as someone who's spent way too long dealing with it while building .

Part of me wishes it had never happened. A lot of developers jump into ActivityPub development without really understanding JSON-LD, and honestly, can you blame them? The result is a growing number of implementations producing technically invalid JSON-LD. It works, sort of, because everyone's just pattern-matching against what Mastodon does, but it's not correct. And even developers who do take the time to understand JSON-LD often end up hardcoding their documents anyway, because proper JSON-LD processor libraries simply don't exist for many languages. No safety net, no validation, just vibes and hoping you got the @context right. Naturally, mistakes creep in.

But then the other part of me thinks: well, we're stuck with JSON-LD now. There's no going back. So wouldn't it be nice if people actually used it properly? Process the documents, normalize them, do the compaction and expansion dance the way the spec intended. That's what Fedify does.

Here's the part that really gets to me, though. Because Fedify actually processes JSON-LD correctly, it's more likely to break when talking to implementations that produce malformed documents. From the end user's perspective, Fedify looks like the fragile one. “Why can't I follow this person?” Well, because their server is emitting garbage JSON-LD that happens to work with implementations that just treat it as a regular JSON blob. Every time I get one of these bug reports, I feel a certain injustice. Like being the only person in the group project who actually read the assignment.

To be fair, there are real practical reasons why most people don't bother with proper JSON-LD processing. Implementing a full processor is genuinely a lot of work. It leans on the entire Linked Data stack, which is bigger than most people expect going in. And the performance cost isn't trivial either. Fedify uses some tricks to keep things fast, and I'll be honest, that code isn't my proudest work.

Anyway, none of this is going anywhere. Just me grumbling into the void. If you're building an ActivityPub implementation, maybe consider using a JSON-LD processor if one's available for your language. And if you're not going to, at least test your output against implementations that do.

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

I may have written a JSON-LD schema for JSON Resume.

It is defined in terms of ActivityPub.
For example:

'Resume' is a sub-type of an ActivityPub 'Object'. There are some new fields defined. Etc.

...

Now the question is — where do I put it?

Do I create a pull-request to the JSON Resume resume-schema repo?

Do I create a FEP?

Do I put it somewhere else?

@box464@mastodon.social

@hollo releases a new major version update, 0.90. Too many changes to hit in a single post! Skimming, the most notable to users will be the switch from Pico CSS (my weekend hobbyist fave) to Uno CSS. At least in screenshots, the new UI is taking on a polished look.

Planning to upgrade, but need to review this a bit more before flipping the switch.

github.com/fedify-dev/hollo/di

github.com

Hollo 0.9.0: Redesigned UI, passkey authentication, FEP-044f quote authorization, and major performance improvements · fedify-dev/hollo · Discussion #496

Hollo is a single-user, headless ActivityPub server. It exposes a Mastodon-compatible API with no built-in frontend, so you can connect any Mastodon client of your choice. It's built on Fedify and ...

@box464@mastodon.social

@hollo releases a new major version update, 0.90. Too many changes to hit in a single post! Skimming, the most notable to users will be the switch from Pico CSS (my weekend hobbyist fave) to Uno CSS. At least in screenshots, the new UI is taking on a polished look.

Planning to upgrade, but need to review this a bit more before flipping the switch.

github.com/fedify-dev/hollo/di

github.com

Hollo 0.9.0: Redesigned UI, passkey authentication, FEP-044f quote authorization, and major performance improvements · fedify-dev/hollo · Discussion #496

Hollo is a single-user, headless ActivityPub server. It exposes a Mastodon-compatible API with no built-in frontend, so you can connect any Mastodon client of your choice. It's built on Fedify and ...

@box464@mastodon.social

@hollo releases a new major version update, 0.90. Too many changes to hit in a single post! Skimming, the most notable to users will be the switch from Pico CSS (my weekend hobbyist fave) to Uno CSS. At least in screenshots, the new UI is taking on a polished look.

Planning to upgrade, but need to review this a bit more before flipping the switch.

github.com/fedify-dev/hollo/di

github.com

Hollo 0.9.0: Redesigned UI, passkey authentication, FEP-044f quote authorization, and major performance improvements · fedify-dev/hollo · Discussion #496

Hollo is a single-user, headless ActivityPub server. It exposes a Mastodon-compatible API with no built-in frontend, so you can connect any Mastodon client of your choice. It's built on Fedify and ...

@box464@mastodon.social

@hollo releases a new major version update, 0.90. Too many changes to hit in a single post! Skimming, the most notable to users will be the switch from Pico CSS (my weekend hobbyist fave) to Uno CSS. At least in screenshots, the new UI is taking on a polished look.

Planning to upgrade, but need to review this a bit more before flipping the switch.

github.com/fedify-dev/hollo/di

github.com

Hollo 0.9.0: Redesigned UI, passkey authentication, FEP-044f quote authorization, and major performance improvements · fedify-dev/hollo · Discussion #496

Hollo is a single-user, headless ActivityPub server. It exposes a Mastodon-compatible API with no built-in frontend, so you can connect any Mastodon client of your choice. It's built on Fedify and ...

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

My personal desire would be to create a format from scratch (because you are in control, you get something bespoke to your needs, and it is personally satisfying), but —

I think there is probably an advantage to using something (such as JSON resume) that already has wide adoption.

I guess that makes me inclined towards the latter.

...

So, if I go that way, I would have to decide: plain JSON or JSON-LD.

@reiver@mastodon.social

More on a resume / CV on the Fediverse on Social Web.

Another option could be to use something like "JSON resume":

jsonresume.org/

github.com/jsonresume/resume-s

It seems to be popular.

It isn't JSON-LD. Although I think it would be straightforward to translate it to JSON-LD, if that was desired.

github.com

resume-schema/job-schema.json at master · jsonresume/resume-schema

JSON-Schema is used here to define and validate our proposed resume json - jsonresume/resume-schema

@reiver@mastodon.social

More on a resume / CV on the Fediverse on Social Web.

Another option could be to use something like "JSON resume":

jsonresume.org/

github.com/jsonresume/resume-s

It seems to be popular.

It isn't JSON-LD. Although I think it would be straightforward to translate it to JSON-LD, if that was desired.

github.com

resume-schema/job-schema.json at master · jsonresume/resume-schema

JSON-Schema is used here to define and validate our proposed resume json - jsonresume/resume-schema

@reiver@mastodon.social

On Tags (including Hash-Tags) in ActivityPub.

1/

I think new developers coming to ActivityPub want to write something like:

"tag": ["apple", "banana", "cherry"]

It is unfortunate that that isn't valid ActivityPub. But, that it must instead be:

"tag": [
{
"type": "Hashtag",
"name": "#apple"
},
{
"type": "Hashtag",
"name": "#banana"
},
{
"type": "Hashtag",
"name": "#cherry"
}
]

...

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

On Tags (including Hash-Tags) in ActivityPub.

2/

A new version of ActivityPub could extend the type of "tag" from:

Object | Link

to:

Object | Link | xsd:string

And that would make the following valid ActivityPub:

"tag": ["apple", "banana", "cherry"]

Of course, it would have to be specified how to interpret this. (Ex: as "type":"Hashtag", or whatever.)

@reiver@mastodon.social

On Tags (including Hash-Tags) in ActivityPub.

1/

I think new developers coming to ActivityPub want to write something like:

"tag": ["apple", "banana", "cherry"]

It is unfortunate that that isn't valid ActivityPub. But, that it must instead be:

"tag": [
{
"type": "Hashtag",
"name": "#apple"
},
{
"type": "Hashtag",
"name": "#banana"
},
{
"type": "Hashtag",
"name": "#cherry"
}
]

...

@reiver@mastodon.social

There is also the other question of — would the resume / CV be JSON-LD.

On one hand, if it was in JSON-LD, it would make it machine-legible similar to ActivityPub.

On the other hand, I don't think anyone is going to write JSON-LD (especially HTML embedded in a JSON string value) by hand. But, I do think some people will want to write their resume by hand.

It feels like user-experience is fighting with JSON-LD based machine-legibility.

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

How could you represent a resume / CV on the Fediverse and Social Web? Where would you put it? Etc? I think it is temping to put the whole resume in the Actor document. But, it is probably better for the Actor document to point (rather than include) it. And, have the resume / CV live somewhere else. It should probably be done in a way that let's people have multiple resumes / CV. For example, for different roles / career tracks, etc. #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD

@reiver@mastodon.social

How could you represent a resume / CV on the Fediverse and Social Web? Where would you put it? Etc?

I think it is tempting to put the whole resume in the Actor document.

But, it is probably better for the Actor document to point (rather than include) it. And, have the resume / CV live somewhere else.

It should probably be done in a way that let's people have multiple resumes / CV. For example, for different roles / career tracks, etc.

@reiver@mastodon.social

How could you represent a resume / CV on the Fediverse and Social Web? Where would you put it? Etc?

I think it is tempting to put the whole resume in the Actor document.

But, it is probably better for the Actor document to point (rather than include) it. And, have the resume / CV live somewhere else.

It should probably be done in a way that let's people have multiple resumes / CV. For example, for different roles / career tracks, etc.

@reiver@mastodon.social

There is also the other question of — would the resume / CV be JSON-LD.

On one hand, if it was in JSON-LD, it would make it machine-legible similar to ActivityPub.

On the other hand, I don't think anyone is going to write JSON-LD (especially HTML embedded in a JSON string value) by hand. But, I do think some people will want to write their resume by hand.

It feels like user-experience is fighting with JSON-LD based machine-legibility.

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

How could you represent a resume / CV on the Fediverse and Social Web? Where would you put it? Etc? I think it is temping to put the whole resume in the Actor document. But, it is probably better for the Actor document to point (rather than include) it. And, have the resume / CV live somewhere else. It should probably be done in a way that let's people have multiple resumes / CV. For example, for different roles / career tracks, etc. #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD

@reiver@mastodon.social

How could you represent a resume / CV on the Fediverse and Social Web? Where would you put it? Etc?

I think it is tempting to put the whole resume in the Actor document.

But, it is probably better for the Actor document to point (rather than include) it. And, have the resume / CV live somewhere else.

It should probably be done in a way that let's people have multiple resumes / CV. For example, for different roles / career tracks, etc.

@reiver@mastodon.social

How could you represent a resume / CV on the Fediverse and Social Web? Where would you put it? Etc?

I think it is tempting to put the whole resume in the Actor document.

But, it is probably better for the Actor document to point (rather than include) it. And, have the resume / CV live somewhere else.

It should probably be done in a way that let's people have multiple resumes / CV. For example, for different roles / career tracks, etc.

@reiver@mastodon.social

"A new challenger appears!"

RE: bitsocial.net/

...

Memes aside, if you are a Fediverse developer, it can be useful to pay attention to what others are doing. Notice what works for them and what doesn't. What their trade-offs are. Etc. And, if there is anything we can learn from them. And, perhaps even find ways to cooperate towards shared goals.

@reiver@mastodon.social

Remote Inbox Architecture

1/

This, the Remote Inbox Architecture, is an architecture for a Fediverse back-end server that I think could be useful.

Here is how it works — there are (at least) 2 servers involved: (1) the main back-end server, and (2) a remote inbox server.

The actor file on main back-end server "points" the inbox to the remote server.

It separates the user's content from the front-end related functionality

...

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

Remote Inbox Architecture

2/

The Remote Inbox server deals with incoming activities, objects, etc, from other users..

The front-end can get the inbox (and other feeds') data from the Remote Inbox server.

(You'd probably want to store cached data from the Fediverse elsewhere from these two servers, as I've said before. But, that is a separate thread.)

@reiver@mastodon.social

Remote Inbox Architecture

1/

This, the Remote Inbox Architecture, is an architecture for a Fediverse back-end server that I think could be useful.

Here is how it works — there are (at least) 2 servers involved: (1) the main back-end server, and (2) a remote inbox server.

The actor file on main back-end server "points" the inbox to the remote server.

It separates the user's content from the front-end related functionality

...

@reiver@mastodon.social

I wish ActivityPub extensions would stop putting stuff in "attachment".

When new developers come to ActivityPub they expect dot-notation to work when working with JSON. Ex:

actor.publicKey.publicKeyPem

Some of them later discover that JSON-LD is not JSON (despite having "JSON" in its name). And, while dot-notation sometimes works, arrays can appear in unexpected places, etc.

Putting stuff in "attachment" makes it so dot-notation never works. It is worse than the JSON-LD problem.

@fedicon@techhub.social

🎟️ Early Bird tickets for FediCon 2026 are still on sale — don't miss your chance to grab a discounted pass!

Early Bird tickets are only available for a limited time.

We want this event to be accessible to as many people as possible, so we’re also offering a reduced-fare (early bird) ticket option for attendees who need an even lower-cost option.

Join us for a gathering all about the Fediverse, the Social Web, and the people building what comes next.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@fedicon@techhub.social

🎟️ Early Bird tickets for FediCon 2026 are still on sale — don't miss your chance to grab a discounted pass!

Early Bird tickets are only available for a limited time.

We want this event to be accessible to as many people as possible, so we’re also offering a reduced-fare (early bird) ticket option for attendees who need an even lower-cost option.

Join us for a gathering all about the Fediverse, the Social Web, and the people building what comes next.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

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

On moving an actor's content.

4/

Or, instead of using the ActivityPub 'Update' activity —

Couldn't we use the ActivityPub 'Move' activity.

w3.org/TR/activitystreams-voca

With the "origin" and "target" fields.

Where "origin" contains the old ID URL, and "target" contains the new ID URL.

.

        {
            "@context": "https://www.w3.org/ns/activitystreams",

            "origin":   "htps://example.com/users/joeblow/objects/150197",
            "target":   "http://host.example/~/objects/019e37",
        }
ALT text

{ "@context": "https://www.w3.org/ns/activitystreams", "origin": "htps://example.com/users/joeblow/objects/150197", "target": "http://host.example/~/objects/019e37", }

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

On moving an actor's content.

3/

There a many different conventions we could come up with to allow an ActvityPub 'Update' activity to be used to change an object's "id" field.

We (the Fediverse developer community) just need to pick one that everyone is willing to implement.

For example, perhaps the "origin", "result", or "target" field should be used:

w3.org/TR/activitystreams-voca

w3.org/TR/activitystreams-voca

w3.org/TR/activitystreams-voca

Or —

...

w3.org

Activity Vocabulary

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

On moving an actor's content.

2/

Could an ActivityPub 'Update' activity be used to move objects from one server to another server?

Could an 'Update' activity be used to change an object's "id" field?

After all, the "id" is used to identity what is being changed. It is the targeting mechanism.

How can you provide the old "id" to target the (old) object you want to change the "id" of, while also providing a new "id"?

w3.org/TR/activitypub/#update-

...

7.3 Update Activity

For server to server interactions, an Update activity means that the receiving server SHOULD update its copy of the object of the same id to the copy supplied in the Update activity. Unlike the client to server handling of the Update activity, this is not a partial update but a complete replacement of the object.

The receiving server MUST take care to be sure that the Update is authorized to modify its object. At minimum, this may be done by ensuring that the Update and its object are of same origin.
ALT text

7.3 Update Activity For server to server interactions, an Update activity means that the receiving server SHOULD update its copy of the object of the same id to the copy supplied in the Update activity. Unlike the client to server handling of the Update activity, this is not a partial update but a complete replacement of the object. The receiving server MUST take care to be sure that the Update is authorized to modify its object. At minimum, this may be done by ensuring that the Update and its object are of same origin.

7.3 Update Activity

For server to server interactions, an Update activity means that the receiving server SHOULD update its copy of the object of the same id to the copy supplied in the Update activity. Unlike the client to server handling of the Update activity, this is not a partial update but a complete replacement of the object.

The receiving server MUST take care to be sure that the Update is authorized to modify its object. At minimum, this may be done by ensuring that the Update and its object are of same origin.
ALT text

7.3 Update Activity For server to server interactions, an Update activity means that the receiving server SHOULD update its copy of the object of the same id to the copy supplied in the Update activity. Unlike the client to server handling of the Update activity, this is not a partial update but a complete replacement of the object. The receiving server MUST take care to be sure that the Update is authorized to modify its object. At minimum, this may be done by ensuring that the Update and its object are of same origin.

@reiver@mastodon.social

On moving an actor's content.

1/

One of the things that comes up on the Fediverse from time to time — is the ability for people to move their accounts.

For example, someone started off at:

@joeblow@example.com

But, now wants to "move" to:

@misterx@host.example

There is a mechanism to do that.

That mechanism moves their followers, their followees, BUT —

It does NOT move their content over!

That is a problem. Could we address this‽

...

@reiver@mastodon.social

ActivityPub being treated as JSON is a good thing.

1/

Some of us are old enough to remember RSS and blogs.

Some of us are old enough to remember the absurd levels of hype that blogs and RSS attracted — similar to the modern AI hype and recent crypto hype. During that era, it felt like everyone any their pet cat wanted a blog with an RSS feed. During that era, there was a get-rich-quick fever around blogs and RSS.

Web-Browsers even added built-in support for RSS.

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

ActivityPub being treated as JSON is a good thing.

5/

JSON-LD has similar complexity to RDF. They are actually related formats.

ActivityPub uses JSON-LD, and thus has the potential for the same type of developer user-experience problems as RSS 1.0.

But I think ActivityPub is its own "RSS 2.0".

Why‽ Because people can and do treat ActivityPub as JSON (rather than JSON-LD).

That is a strength. It makes ActivityPub much simpler and easier to understand than JSON-LD.

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

ActivityPub being treated as JSON is a good thing.

5/

JSON-LD has similar complexity to RDF. They are actually related formats.

ActivityPub uses JSON-LD, and thus has the potential for the same type of developer user-experience problems as RSS 1.0.

But I think ActivityPub is its own "RSS 2.0".

Why‽ Because people can and do treat ActivityPub as JSON (rather than JSON-LD).

That is a strength. It makes ActivityPub much simpler and easier to understand than JSON-LD.

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

ActivityPub being treated as JSON is a good thing.

4/

RSS 2.0 won the RSS war.

I think the reason RSS 2.0 beat RSS 1.0 is because the RDF-based syntax of RSS 1.0 made it complex. It made it too complex.

While both RSS 1.0 and RSS 2.0 were XML-based, RSS 2.0 wasn't RDF-based. RSS 2.0's syntax was much simpler and easier to understand.

I think that was a big reason why RSS 2.0 won — it had a better developer user-experience.

...

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

ActivityPub being treated as JSON is a good thing.

3/

It would be reasonable for anyone to assume that RSS 2.0 is a newer version of RSS 1.0. And there were many who tried to promote that view.

But, really they were completely different formats.

The "RSS" in 1.0 and 2.0 didn't even stand for the same thing.

1.0 RSS = RDF Site Summary

2.0 RSS = Really Simple Syndication

...

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

ActivityPub being treated as JSON is a good thing.

2/

There are different versions of RSS.

Most people who know of RSS (if they even know it at all) know of RSS 2.0. But, it wasn't the only version of RSS.

(RSS isn't even the first technology of its kind.)

When the online developer community became aware of RSS, there was a fight between two version of RSS:

RSS 1.0 versus RSS 2.0

...

@reiver@mastodon.social

ActivityPub being treated as JSON is a good thing.

1/

Some of us are old enough to remember RSS and blogs.

Some of us are old enough to remember the absurd levels of hype that blogs and RSS attracted — similar to the modern AI hype and recent crypto hype. During that era, it felt like everyone any their pet cat wanted a blog with an RSS feed. During that era, there was a get-rich-quick fever around blogs and RSS.

Web-Browsers even added built-in support for RSS.

@reiver@mastodon.social

ActivityPub being treated as JSON is a good thing.

1/

Some of us are old enough to remember RSS and blogs.

Some of us are old enough to remember the absurd levels of hype that blogs and RSS attracted — similar to the modern AI hype and recent crypto hype. During that era, it felt like everyone any their pet cat wanted a blog with an RSS feed. During that era, there was a get-rich-quick fever around blogs and RSS.

Web-Browsers even added built-in support for RSS.

@reiver@mastodon.social

I think ActivityPub Partial Updates won't work well with attachments or tags.

Not unless there is a way to reliably just target the item in the attachments or tags array that you want to modify. AFAIK, there isn't.

You have to download the old version of the whole attachments or tags array first, update it locally, and then upload the whole (updated) thing. This creates a race-condition.

See also: mastodon.social/@reiver/116446

@hongminhee@hollo.social

A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a server built on Workers, D1, R2, and Queues, using Fedify.

I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

I'm glad to see Fedify put to use for something like this. Worth checking out.

The source code is on GitHub under AGPL 3.0.

github.com

GitHub - SJang1/siliconbeest: Fediverse in Cloudflare Workers + live serverless code

Fediverse in Cloudflare Workers + live serverless code - SJang1/siliconbeest

@siliconsjang@hackers.pub

안녕하세요! Hello everyone!

SiliconBeest v1.0.0 공개

마스토돈 API 호환을 목표로 하는 Cloudflare 엣지 컴퓨팅 기반 서버리스 연합우주 소프트웨어, SiliconBeest v1.0.0을 공개하게 되어 기쁩니다.

I'm pleased to announce SiliconBeest v1.0.0, a serverless fediverse software project built on Cloudflare edge computing, aiming for Mastodon API compatibility.

SiliconBeest Logo - a wildebeest with silicon on it


설명 (Description)

ko

  • SiliconBeest는 Cloudflare Workers 환경에서 동작하는 연합우주 프로젝트입니다.
  • Cloudflare 장애가 발생했을 때 다수의 연합우주 서버가 함께 접속 불가 상태가 되는 것을 보며, 연합우주 역시 Cloudflare 인프라에 상당히 의존하고 있다는 점에 착안했습니다.
  • 그렇다면 아예 Cloudflare 위에서 동작하는 연합우주 소프트웨어를 만들어보자는 생각에서 시작했습니다.
  • Cloudflare Inc.에서 개발했던 Wildebeest 프로젝트의 아이디어와 일부 코드를 참고했습니다.
  • 프로젝트 이름은 제 닉네임인 silicon(sjang) 이랑 Cloudflare의 Wildebeest를 조합해 SiliconBeest로 정했습니다.
  • 적은 사용자 수와 작은 규모의 연합을 기준으로는 Cloudflare 무료 플랜에서도 운영할 수 있도록, 조금 더 큰 규모의 연합에서는 월 $5 플랜으로도 감당할 수 있도록 만드는 것을 목표로 하고 있습니다.
  • API 측면에서 SiliconBeest의 목표는 Mastodon 및 Misskey API와의 호환입니다. 다만 이론적으로 가능한 것과 실제 구현은 별개의 문제이기 때문에, 해당 부분은 아직 개발 중이며 장기적인 목표로 보고 있습니다.

en

  • SiliconBeest is a fediverse project designed to run on Cloudflare Workers.
  • After seeing many fediverse servers become unavailable when Cloudflare had outages, I realized that the fediverse already relies heavily on Cloudflare infrastructure.
  • So I thought: why not build fediverse software directly on top of Cloudflare?
  • This project was inspired by Cloudflare Inc.’s Wildebeest project, and it also references some of its ideas and code.
  • The project name, SiliconBeest, comes from my nickname silicon(sjang) combined with Cloudflare’s Wildebeest.
  • I’m still working on making it as inexpensive to run as possible. For now, the goal is to support a small number of users with a small federation footprint on the free plan, and a medium federation footprint on the $5 plan.
  • From an API perspective, SiliconBeest aims to be compatible with both Mastodon and Misskey APIs. However, as many people know, full compatibility is difficult in practice, so this remains a long-term goal rather than something fully implemented today.

아직은 초기 버전이라 구현되지 않은 부분도 많지만, Cloudflare Workers, D1, R2, Queues 등 Cloudflare의 서버리스 인프라 위에서 연합우주 소프트웨어를 얼마나 가볍고 저렴하게 운영할 수 있는지 실험하고 있습니다.

This is still an early version, and many parts are not implemented yet. However, SiliconBeest is an experiment in how lightweight and affordable fediverse software can be when built on top of Cloudflare’s serverless infrastructure, such as Workers, D1, R2, and Queues.

현재 v1.0.0에서는 기본적인 구조와 핵심 기능을 먼저 정리하는 데 집중했으며, 앞으로 Mastodon API 호환성, federation 안정성, 관리 도구, 문서화 등을 점진적으로 개선해나갈 예정입니다.

In v1.0.0, I focused on organizing the basic architecture and core functionality first. Going forward, I plan to gradually improve Mastodon API compatibility, federation stability, admin tooling, and documentation.

관심 있으신 분들은 GitHub 저장소를 확인해주시고, 이슈나 피드백도 언제든 환영합니다.

If you’re interested, please check out the GitHub repository. Issues, feedback, and suggestions are always welcome.

https://github.com/SJang1/siliconbeest


설치 및 배포 방법 (Installation and Deployment)

SiliconBeest는 GitHub 템플릿과 Cloudflare를 이용해 비교적 간단하게 배포할 수 있습니다.

  1. GitHub 템플릿에서 새 저장소를 생성합니다.
  2. Cloudflare에서 필요한 리소스와 환경을 설정합니다.
  3. Cloudflare API 토큰과 필요한 환경변수를 GitHub Secrets에 저장합니다.
  4. GitHub Actions를 통해 자동 배포를 진행합니다.
  5. 배포가 완료되면 인스턴스 설정을 마무리합니다.

아직 설치 과정은 계속 다듬고 있으며, 개선사항이 많음을 알고 있습니다. 추후 보강해 나갈 예정이며, 이에 대한 PR도 환영입니다.

SiliconBeest can be deployed relatively easily using a GitHub template and Cloudflare.

  1. Create a new repository from the GitHub template.
  2. Set up the required resources and environment on Cloudflare.
  3. Store the Cloudflare API token and required environment variables in GitHub Secrets.
  4. Deploy automatically using GitHub Actions.
  5. Once deployment is complete, finish configuring your instance.

The installation process is still being refined, and I’m aware that there is plenty of room for improvement. I plan to keep improving the documentation and deployment flow over time, and related PRs are always welcome.

@reiver@mastodon.social

Internet domain name (ex: example.com) are a reasonable option for making identity on the Internet more human-friendly.

But, Internet domain names are a poor choice as the base primitive for identity.

At best you rent an Internet domain name. But, they can be lost if you don't pay the rent. They can even be seized — even if you do pay.

There are many examples of this this, but — consider Sci-Hub.

How many times has Sci-Hub had its Internet domain names seized. Numerous!

@reiver@mastodon.social

I wonder how much Fediverse software would be able to handle an "OrderedCollectionPage" with a "orderedItems" of "Link" IRIs?

...

From the back-end point-of-view it is easier.

From the front-end point-of-view it is more work.

From a performance point-of-view, network calls can be costly, so perhaps it is better for the back-end to fetch the data (rather than the client).

  "orderedItems": [
    "https://localhost:8080/-/019e26f4-456a-77b3-bb80-8ecc8b1a24c9/activity.jsonld",
    "https://localhost:8080/-/019e26f4-b6e9-7936-b1cf-5be9dd2c2129/activity.jsonld",
    "https://localhost:8080/-/019e26fb-206e-7861-a303-4d88428c8842/activity.jsonld"
  ]
ALT text

"orderedItems": [ "https://localhost:8080/-/019e26f4-456a-77b3-bb80-8ecc8b1a24c9/activity.jsonld", "https://localhost:8080/-/019e26f4-b6e9-7936-b1cf-5be9dd2c2129/activity.jsonld", "https://localhost:8080/-/019e26fb-206e-7861-a303-4d88428c8842/activity.jsonld" ]

@hongminhee@hollo.social

A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a server built on Workers, D1, R2, and Queues, using Fedify.

I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

I'm glad to see Fedify put to use for something like this. Worth checking out.

The source code is on GitHub under AGPL 3.0.

github.com

GitHub - SJang1/siliconbeest: Fediverse in Cloudflare Workers + live serverless code

Fediverse in Cloudflare Workers + live serverless code - SJang1/siliconbeest

@siliconsjang@hackers.pub

안녕하세요! Hello everyone!

SiliconBeest v1.0.0 공개

마스토돈 API 호환을 목표로 하는 Cloudflare 엣지 컴퓨팅 기반 서버리스 연합우주 소프트웨어, SiliconBeest v1.0.0을 공개하게 되어 기쁩니다.

I'm pleased to announce SiliconBeest v1.0.0, a serverless fediverse software project built on Cloudflare edge computing, aiming for Mastodon API compatibility.

SiliconBeest Logo - a wildebeest with silicon on it


설명 (Description)

ko

  • SiliconBeest는 Cloudflare Workers 환경에서 동작하는 연합우주 프로젝트입니다.
  • Cloudflare 장애가 발생했을 때 다수의 연합우주 서버가 함께 접속 불가 상태가 되는 것을 보며, 연합우주 역시 Cloudflare 인프라에 상당히 의존하고 있다는 점에 착안했습니다.
  • 그렇다면 아예 Cloudflare 위에서 동작하는 연합우주 소프트웨어를 만들어보자는 생각에서 시작했습니다.
  • Cloudflare Inc.에서 개발했던 Wildebeest 프로젝트의 아이디어와 일부 코드를 참고했습니다.
  • 프로젝트 이름은 제 닉네임인 silicon(sjang) 이랑 Cloudflare의 Wildebeest를 조합해 SiliconBeest로 정했습니다.
  • 적은 사용자 수와 작은 규모의 연합을 기준으로는 Cloudflare 무료 플랜에서도 운영할 수 있도록, 조금 더 큰 규모의 연합에서는 월 $5 플랜으로도 감당할 수 있도록 만드는 것을 목표로 하고 있습니다.
  • API 측면에서 SiliconBeest의 목표는 Mastodon 및 Misskey API와의 호환입니다. 다만 이론적으로 가능한 것과 실제 구현은 별개의 문제이기 때문에, 해당 부분은 아직 개발 중이며 장기적인 목표로 보고 있습니다.

en

  • SiliconBeest is a fediverse project designed to run on Cloudflare Workers.
  • After seeing many fediverse servers become unavailable when Cloudflare had outages, I realized that the fediverse already relies heavily on Cloudflare infrastructure.
  • So I thought: why not build fediverse software directly on top of Cloudflare?
  • This project was inspired by Cloudflare Inc.’s Wildebeest project, and it also references some of its ideas and code.
  • The project name, SiliconBeest, comes from my nickname silicon(sjang) combined with Cloudflare’s Wildebeest.
  • I’m still working on making it as inexpensive to run as possible. For now, the goal is to support a small number of users with a small federation footprint on the free plan, and a medium federation footprint on the $5 plan.
  • From an API perspective, SiliconBeest aims to be compatible with both Mastodon and Misskey APIs. However, as many people know, full compatibility is difficult in practice, so this remains a long-term goal rather than something fully implemented today.

아직은 초기 버전이라 구현되지 않은 부분도 많지만, Cloudflare Workers, D1, R2, Queues 등 Cloudflare의 서버리스 인프라 위에서 연합우주 소프트웨어를 얼마나 가볍고 저렴하게 운영할 수 있는지 실험하고 있습니다.

This is still an early version, and many parts are not implemented yet. However, SiliconBeest is an experiment in how lightweight and affordable fediverse software can be when built on top of Cloudflare’s serverless infrastructure, such as Workers, D1, R2, and Queues.

현재 v1.0.0에서는 기본적인 구조와 핵심 기능을 먼저 정리하는 데 집중했으며, 앞으로 Mastodon API 호환성, federation 안정성, 관리 도구, 문서화 등을 점진적으로 개선해나갈 예정입니다.

In v1.0.0, I focused on organizing the basic architecture and core functionality first. Going forward, I plan to gradually improve Mastodon API compatibility, federation stability, admin tooling, and documentation.

관심 있으신 분들은 GitHub 저장소를 확인해주시고, 이슈나 피드백도 언제든 환영합니다.

If you’re interested, please check out the GitHub repository. Issues, feedback, and suggestions are always welcome.

https://github.com/SJang1/siliconbeest


설치 및 배포 방법 (Installation and Deployment)

SiliconBeest는 GitHub 템플릿과 Cloudflare를 이용해 비교적 간단하게 배포할 수 있습니다.

  1. GitHub 템플릿에서 새 저장소를 생성합니다.
  2. Cloudflare에서 필요한 리소스와 환경을 설정합니다.
  3. Cloudflare API 토큰과 필요한 환경변수를 GitHub Secrets에 저장합니다.
  4. GitHub Actions를 통해 자동 배포를 진행합니다.
  5. 배포가 완료되면 인스턴스 설정을 마무리합니다.

아직 설치 과정은 계속 다듬고 있으며, 개선사항이 많음을 알고 있습니다. 추후 보강해 나갈 예정이며, 이에 대한 PR도 환영입니다.

SiliconBeest can be deployed relatively easily using a GitHub template and Cloudflare.

  1. Create a new repository from the GitHub template.
  2. Set up the required resources and environment on Cloudflare.
  3. Store the Cloudflare API token and required environment variables in GitHub Secrets.
  4. Deploy automatically using GitHub Actions.
  5. Once deployment is complete, finish configuring your instance.

The installation process is still being refined, and I’m aware that there is plenty of room for improvement. I plan to keep improving the documentation and deployment flow over time, and related PRs are always welcome.

@hongminhee@hollo.social

A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a server built on Workers, D1, R2, and Queues, using Fedify.

I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

I'm glad to see Fedify put to use for something like this. Worth checking out.

The source code is on GitHub under AGPL 3.0.

github.com

GitHub - SJang1/siliconbeest: Fediverse in Cloudflare Workers + live serverless code

Fediverse in Cloudflare Workers + live serverless code - SJang1/siliconbeest

@siliconsjang@hackers.pub

안녕하세요! Hello everyone!

SiliconBeest v1.0.0 공개

마스토돈 API 호환을 목표로 하는 Cloudflare 엣지 컴퓨팅 기반 서버리스 연합우주 소프트웨어, SiliconBeest v1.0.0을 공개하게 되어 기쁩니다.

I'm pleased to announce SiliconBeest v1.0.0, a serverless fediverse software project built on Cloudflare edge computing, aiming for Mastodon API compatibility.

SiliconBeest Logo - a wildebeest with silicon on it


설명 (Description)

ko

  • SiliconBeest는 Cloudflare Workers 환경에서 동작하는 연합우주 프로젝트입니다.
  • Cloudflare 장애가 발생했을 때 다수의 연합우주 서버가 함께 접속 불가 상태가 되는 것을 보며, 연합우주 역시 Cloudflare 인프라에 상당히 의존하고 있다는 점에 착안했습니다.
  • 그렇다면 아예 Cloudflare 위에서 동작하는 연합우주 소프트웨어를 만들어보자는 생각에서 시작했습니다.
  • Cloudflare Inc.에서 개발했던 Wildebeest 프로젝트의 아이디어와 일부 코드를 참고했습니다.
  • 프로젝트 이름은 제 닉네임인 silicon(sjang) 이랑 Cloudflare의 Wildebeest를 조합해 SiliconBeest로 정했습니다.
  • 적은 사용자 수와 작은 규모의 연합을 기준으로는 Cloudflare 무료 플랜에서도 운영할 수 있도록, 조금 더 큰 규모의 연합에서는 월 $5 플랜으로도 감당할 수 있도록 만드는 것을 목표로 하고 있습니다.
  • API 측면에서 SiliconBeest의 목표는 Mastodon 및 Misskey API와의 호환입니다. 다만 이론적으로 가능한 것과 실제 구현은 별개의 문제이기 때문에, 해당 부분은 아직 개발 중이며 장기적인 목표로 보고 있습니다.

en

  • SiliconBeest is a fediverse project designed to run on Cloudflare Workers.
  • After seeing many fediverse servers become unavailable when Cloudflare had outages, I realized that the fediverse already relies heavily on Cloudflare infrastructure.
  • So I thought: why not build fediverse software directly on top of Cloudflare?
  • This project was inspired by Cloudflare Inc.’s Wildebeest project, and it also references some of its ideas and code.
  • The project name, SiliconBeest, comes from my nickname silicon(sjang) combined with Cloudflare’s Wildebeest.
  • I’m still working on making it as inexpensive to run as possible. For now, the goal is to support a small number of users with a small federation footprint on the free plan, and a medium federation footprint on the $5 plan.
  • From an API perspective, SiliconBeest aims to be compatible with both Mastodon and Misskey APIs. However, as many people know, full compatibility is difficult in practice, so this remains a long-term goal rather than something fully implemented today.

아직은 초기 버전이라 구현되지 않은 부분도 많지만, Cloudflare Workers, D1, R2, Queues 등 Cloudflare의 서버리스 인프라 위에서 연합우주 소프트웨어를 얼마나 가볍고 저렴하게 운영할 수 있는지 실험하고 있습니다.

This is still an early version, and many parts are not implemented yet. However, SiliconBeest is an experiment in how lightweight and affordable fediverse software can be when built on top of Cloudflare’s serverless infrastructure, such as Workers, D1, R2, and Queues.

현재 v1.0.0에서는 기본적인 구조와 핵심 기능을 먼저 정리하는 데 집중했으며, 앞으로 Mastodon API 호환성, federation 안정성, 관리 도구, 문서화 등을 점진적으로 개선해나갈 예정입니다.

In v1.0.0, I focused on organizing the basic architecture and core functionality first. Going forward, I plan to gradually improve Mastodon API compatibility, federation stability, admin tooling, and documentation.

관심 있으신 분들은 GitHub 저장소를 확인해주시고, 이슈나 피드백도 언제든 환영합니다.

If you’re interested, please check out the GitHub repository. Issues, feedback, and suggestions are always welcome.

https://github.com/SJang1/siliconbeest


설치 및 배포 방법 (Installation and Deployment)

SiliconBeest는 GitHub 템플릿과 Cloudflare를 이용해 비교적 간단하게 배포할 수 있습니다.

  1. GitHub 템플릿에서 새 저장소를 생성합니다.
  2. Cloudflare에서 필요한 리소스와 환경을 설정합니다.
  3. Cloudflare API 토큰과 필요한 환경변수를 GitHub Secrets에 저장합니다.
  4. GitHub Actions를 통해 자동 배포를 진행합니다.
  5. 배포가 완료되면 인스턴스 설정을 마무리합니다.

아직 설치 과정은 계속 다듬고 있으며, 개선사항이 많음을 알고 있습니다. 추후 보강해 나갈 예정이며, 이에 대한 PR도 환영입니다.

SiliconBeest can be deployed relatively easily using a GitHub template and Cloudflare.

  1. Create a new repository from the GitHub template.
  2. Set up the required resources and environment on Cloudflare.
  3. Store the Cloudflare API token and required environment variables in GitHub Secrets.
  4. Deploy automatically using GitHub Actions.
  5. Once deployment is complete, finish configuring your instance.

The installation process is still being refined, and I’m aware that there is plenty of room for improvement. I plan to keep improving the documentation and deployment flow over time, and related PRs are always welcome.

@hongminhee@hollo.social

A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a server built on Workers, D1, R2, and Queues, using Fedify.

I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

I'm glad to see Fedify put to use for something like this. Worth checking out.

The source code is on GitHub under AGPL 3.0.

github.com

GitHub - SJang1/siliconbeest: Fediverse in Cloudflare Workers + live serverless code

Fediverse in Cloudflare Workers + live serverless code - SJang1/siliconbeest

@siliconsjang@hackers.pub

안녕하세요! Hello everyone!

SiliconBeest v1.0.0 공개

마스토돈 API 호환을 목표로 하는 Cloudflare 엣지 컴퓨팅 기반 서버리스 연합우주 소프트웨어, SiliconBeest v1.0.0을 공개하게 되어 기쁩니다.

I'm pleased to announce SiliconBeest v1.0.0, a serverless fediverse software project built on Cloudflare edge computing, aiming for Mastodon API compatibility.

SiliconBeest Logo - a wildebeest with silicon on it


설명 (Description)

ko

  • SiliconBeest는 Cloudflare Workers 환경에서 동작하는 연합우주 프로젝트입니다.
  • Cloudflare 장애가 발생했을 때 다수의 연합우주 서버가 함께 접속 불가 상태가 되는 것을 보며, 연합우주 역시 Cloudflare 인프라에 상당히 의존하고 있다는 점에 착안했습니다.
  • 그렇다면 아예 Cloudflare 위에서 동작하는 연합우주 소프트웨어를 만들어보자는 생각에서 시작했습니다.
  • Cloudflare Inc.에서 개발했던 Wildebeest 프로젝트의 아이디어와 일부 코드를 참고했습니다.
  • 프로젝트 이름은 제 닉네임인 silicon(sjang) 이랑 Cloudflare의 Wildebeest를 조합해 SiliconBeest로 정했습니다.
  • 적은 사용자 수와 작은 규모의 연합을 기준으로는 Cloudflare 무료 플랜에서도 운영할 수 있도록, 조금 더 큰 규모의 연합에서는 월 $5 플랜으로도 감당할 수 있도록 만드는 것을 목표로 하고 있습니다.
  • API 측면에서 SiliconBeest의 목표는 Mastodon 및 Misskey API와의 호환입니다. 다만 이론적으로 가능한 것과 실제 구현은 별개의 문제이기 때문에, 해당 부분은 아직 개발 중이며 장기적인 목표로 보고 있습니다.

en

  • SiliconBeest is a fediverse project designed to run on Cloudflare Workers.
  • After seeing many fediverse servers become unavailable when Cloudflare had outages, I realized that the fediverse already relies heavily on Cloudflare infrastructure.
  • So I thought: why not build fediverse software directly on top of Cloudflare?
  • This project was inspired by Cloudflare Inc.’s Wildebeest project, and it also references some of its ideas and code.
  • The project name, SiliconBeest, comes from my nickname silicon(sjang) combined with Cloudflare’s Wildebeest.
  • I’m still working on making it as inexpensive to run as possible. For now, the goal is to support a small number of users with a small federation footprint on the free plan, and a medium federation footprint on the $5 plan.
  • From an API perspective, SiliconBeest aims to be compatible with both Mastodon and Misskey APIs. However, as many people know, full compatibility is difficult in practice, so this remains a long-term goal rather than something fully implemented today.

아직은 초기 버전이라 구현되지 않은 부분도 많지만, Cloudflare Workers, D1, R2, Queues 등 Cloudflare의 서버리스 인프라 위에서 연합우주 소프트웨어를 얼마나 가볍고 저렴하게 운영할 수 있는지 실험하고 있습니다.

This is still an early version, and many parts are not implemented yet. However, SiliconBeest is an experiment in how lightweight and affordable fediverse software can be when built on top of Cloudflare’s serverless infrastructure, such as Workers, D1, R2, and Queues.

현재 v1.0.0에서는 기본적인 구조와 핵심 기능을 먼저 정리하는 데 집중했으며, 앞으로 Mastodon API 호환성, federation 안정성, 관리 도구, 문서화 등을 점진적으로 개선해나갈 예정입니다.

In v1.0.0, I focused on organizing the basic architecture and core functionality first. Going forward, I plan to gradually improve Mastodon API compatibility, federation stability, admin tooling, and documentation.

관심 있으신 분들은 GitHub 저장소를 확인해주시고, 이슈나 피드백도 언제든 환영합니다.

If you’re interested, please check out the GitHub repository. Issues, feedback, and suggestions are always welcome.

https://github.com/SJang1/siliconbeest


설치 및 배포 방법 (Installation and Deployment)

SiliconBeest는 GitHub 템플릿과 Cloudflare를 이용해 비교적 간단하게 배포할 수 있습니다.

  1. GitHub 템플릿에서 새 저장소를 생성합니다.
  2. Cloudflare에서 필요한 리소스와 환경을 설정합니다.
  3. Cloudflare API 토큰과 필요한 환경변수를 GitHub Secrets에 저장합니다.
  4. GitHub Actions를 통해 자동 배포를 진행합니다.
  5. 배포가 완료되면 인스턴스 설정을 마무리합니다.

아직 설치 과정은 계속 다듬고 있으며, 개선사항이 많음을 알고 있습니다. 추후 보강해 나갈 예정이며, 이에 대한 PR도 환영입니다.

SiliconBeest can be deployed relatively easily using a GitHub template and Cloudflare.

  1. Create a new repository from the GitHub template.
  2. Set up the required resources and environment on Cloudflare.
  3. Store the Cloudflare API token and required environment variables in GitHub Secrets.
  4. Deploy automatically using GitHub Actions.
  5. Once deployment is complete, finish configuring your instance.

The installation process is still being refined, and I’m aware that there is plenty of room for improvement. I plan to keep improving the documentation and deployment flow over time, and related PRs are always welcome.

@hongminhee@hollo.social

A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a server built on Workers, D1, R2, and Queues, using Fedify.

I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

I'm glad to see Fedify put to use for something like this. Worth checking out.

The source code is on GitHub under AGPL 3.0.

github.com

GitHub - SJang1/siliconbeest: Fediverse in Cloudflare Workers + live serverless code

Fediverse in Cloudflare Workers + live serverless code - SJang1/siliconbeest

@siliconsjang@hackers.pub

안녕하세요! Hello everyone!

SiliconBeest v1.0.0 공개

마스토돈 API 호환을 목표로 하는 Cloudflare 엣지 컴퓨팅 기반 서버리스 연합우주 소프트웨어, SiliconBeest v1.0.0을 공개하게 되어 기쁩니다.

I'm pleased to announce SiliconBeest v1.0.0, a serverless fediverse software project built on Cloudflare edge computing, aiming for Mastodon API compatibility.

SiliconBeest Logo - a wildebeest with silicon on it


설명 (Description)

ko

  • SiliconBeest는 Cloudflare Workers 환경에서 동작하는 연합우주 프로젝트입니다.
  • Cloudflare 장애가 발생했을 때 다수의 연합우주 서버가 함께 접속 불가 상태가 되는 것을 보며, 연합우주 역시 Cloudflare 인프라에 상당히 의존하고 있다는 점에 착안했습니다.
  • 그렇다면 아예 Cloudflare 위에서 동작하는 연합우주 소프트웨어를 만들어보자는 생각에서 시작했습니다.
  • Cloudflare Inc.에서 개발했던 Wildebeest 프로젝트의 아이디어와 일부 코드를 참고했습니다.
  • 프로젝트 이름은 제 닉네임인 silicon(sjang) 이랑 Cloudflare의 Wildebeest를 조합해 SiliconBeest로 정했습니다.
  • 적은 사용자 수와 작은 규모의 연합을 기준으로는 Cloudflare 무료 플랜에서도 운영할 수 있도록, 조금 더 큰 규모의 연합에서는 월 $5 플랜으로도 감당할 수 있도록 만드는 것을 목표로 하고 있습니다.
  • API 측면에서 SiliconBeest의 목표는 Mastodon 및 Misskey API와의 호환입니다. 다만 이론적으로 가능한 것과 실제 구현은 별개의 문제이기 때문에, 해당 부분은 아직 개발 중이며 장기적인 목표로 보고 있습니다.

en

  • SiliconBeest is a fediverse project designed to run on Cloudflare Workers.
  • After seeing many fediverse servers become unavailable when Cloudflare had outages, I realized that the fediverse already relies heavily on Cloudflare infrastructure.
  • So I thought: why not build fediverse software directly on top of Cloudflare?
  • This project was inspired by Cloudflare Inc.’s Wildebeest project, and it also references some of its ideas and code.
  • The project name, SiliconBeest, comes from my nickname silicon(sjang) combined with Cloudflare’s Wildebeest.
  • I’m still working on making it as inexpensive to run as possible. For now, the goal is to support a small number of users with a small federation footprint on the free plan, and a medium federation footprint on the $5 plan.
  • From an API perspective, SiliconBeest aims to be compatible with both Mastodon and Misskey APIs. However, as many people know, full compatibility is difficult in practice, so this remains a long-term goal rather than something fully implemented today.

아직은 초기 버전이라 구현되지 않은 부분도 많지만, Cloudflare Workers, D1, R2, Queues 등 Cloudflare의 서버리스 인프라 위에서 연합우주 소프트웨어를 얼마나 가볍고 저렴하게 운영할 수 있는지 실험하고 있습니다.

This is still an early version, and many parts are not implemented yet. However, SiliconBeest is an experiment in how lightweight and affordable fediverse software can be when built on top of Cloudflare’s serverless infrastructure, such as Workers, D1, R2, and Queues.

현재 v1.0.0에서는 기본적인 구조와 핵심 기능을 먼저 정리하는 데 집중했으며, 앞으로 Mastodon API 호환성, federation 안정성, 관리 도구, 문서화 등을 점진적으로 개선해나갈 예정입니다.

In v1.0.0, I focused on organizing the basic architecture and core functionality first. Going forward, I plan to gradually improve Mastodon API compatibility, federation stability, admin tooling, and documentation.

관심 있으신 분들은 GitHub 저장소를 확인해주시고, 이슈나 피드백도 언제든 환영합니다.

If you’re interested, please check out the GitHub repository. Issues, feedback, and suggestions are always welcome.

https://github.com/SJang1/siliconbeest


설치 및 배포 방법 (Installation and Deployment)

SiliconBeest는 GitHub 템플릿과 Cloudflare를 이용해 비교적 간단하게 배포할 수 있습니다.

  1. GitHub 템플릿에서 새 저장소를 생성합니다.
  2. Cloudflare에서 필요한 리소스와 환경을 설정합니다.
  3. Cloudflare API 토큰과 필요한 환경변수를 GitHub Secrets에 저장합니다.
  4. GitHub Actions를 통해 자동 배포를 진행합니다.
  5. 배포가 완료되면 인스턴스 설정을 마무리합니다.

아직 설치 과정은 계속 다듬고 있으며, 개선사항이 많음을 알고 있습니다. 추후 보강해 나갈 예정이며, 이에 대한 PR도 환영입니다.

SiliconBeest can be deployed relatively easily using a GitHub template and Cloudflare.

  1. Create a new repository from the GitHub template.
  2. Set up the required resources and environment on Cloudflare.
  3. Store the Cloudflare API token and required environment variables in GitHub Secrets.
  4. Deploy automatically using GitHub Actions.
  5. Once deployment is complete, finish configuring your instance.

The installation process is still being refined, and I’m aware that there is plenty of room for improvement. I plan to keep improving the documentation and deployment flow over time, and related PRs are always welcome.

@reiver@mastodon.social

In ActivityPub, these are all equivalent:

"type":"Banana"

"type":["Banana"]

"type":{"@id":"Banana"}

"type":[{"@id":"Banana"}]

"type":{"id":"Banana"}

"type":[{"id":"Banana"}]

"@type":"Banana"

"@type":["Banana"]

"@type":{"@id":"Banana"}

"@type":[{"@id":"Banana"}]

"@type":{"id":"Banana"}

"@type":[{"id":"Banana"}]

@hongminhee@hollo.social

A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a server built on Workers, D1, R2, and Queues, using Fedify.

I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

I'm glad to see Fedify put to use for something like this. Worth checking out.

The source code is on GitHub under AGPL 3.0.

github.com

GitHub - SJang1/siliconbeest: Fediverse in Cloudflare Workers + live serverless code

Fediverse in Cloudflare Workers + live serverless code - SJang1/siliconbeest

@siliconsjang@hackers.pub

안녕하세요! Hello everyone!

SiliconBeest v1.0.0 공개

마스토돈 API 호환을 목표로 하는 Cloudflare 엣지 컴퓨팅 기반 서버리스 연합우주 소프트웨어, SiliconBeest v1.0.0을 공개하게 되어 기쁩니다.

I'm pleased to announce SiliconBeest v1.0.0, a serverless fediverse software project built on Cloudflare edge computing, aiming for Mastodon API compatibility.

SiliconBeest Logo - a wildebeest with silicon on it


설명 (Description)

ko

  • SiliconBeest는 Cloudflare Workers 환경에서 동작하는 연합우주 프로젝트입니다.
  • Cloudflare 장애가 발생했을 때 다수의 연합우주 서버가 함께 접속 불가 상태가 되는 것을 보며, 연합우주 역시 Cloudflare 인프라에 상당히 의존하고 있다는 점에 착안했습니다.
  • 그렇다면 아예 Cloudflare 위에서 동작하는 연합우주 소프트웨어를 만들어보자는 생각에서 시작했습니다.
  • Cloudflare Inc.에서 개발했던 Wildebeest 프로젝트의 아이디어와 일부 코드를 참고했습니다.
  • 프로젝트 이름은 제 닉네임인 silicon(sjang) 이랑 Cloudflare의 Wildebeest를 조합해 SiliconBeest로 정했습니다.
  • 적은 사용자 수와 작은 규모의 연합을 기준으로는 Cloudflare 무료 플랜에서도 운영할 수 있도록, 조금 더 큰 규모의 연합에서는 월 $5 플랜으로도 감당할 수 있도록 만드는 것을 목표로 하고 있습니다.
  • API 측면에서 SiliconBeest의 목표는 Mastodon 및 Misskey API와의 호환입니다. 다만 이론적으로 가능한 것과 실제 구현은 별개의 문제이기 때문에, 해당 부분은 아직 개발 중이며 장기적인 목표로 보고 있습니다.

en

  • SiliconBeest is a fediverse project designed to run on Cloudflare Workers.
  • After seeing many fediverse servers become unavailable when Cloudflare had outages, I realized that the fediverse already relies heavily on Cloudflare infrastructure.
  • So I thought: why not build fediverse software directly on top of Cloudflare?
  • This project was inspired by Cloudflare Inc.’s Wildebeest project, and it also references some of its ideas and code.
  • The project name, SiliconBeest, comes from my nickname silicon(sjang) combined with Cloudflare’s Wildebeest.
  • I’m still working on making it as inexpensive to run as possible. For now, the goal is to support a small number of users with a small federation footprint on the free plan, and a medium federation footprint on the $5 plan.
  • From an API perspective, SiliconBeest aims to be compatible with both Mastodon and Misskey APIs. However, as many people know, full compatibility is difficult in practice, so this remains a long-term goal rather than something fully implemented today.

아직은 초기 버전이라 구현되지 않은 부분도 많지만, Cloudflare Workers, D1, R2, Queues 등 Cloudflare의 서버리스 인프라 위에서 연합우주 소프트웨어를 얼마나 가볍고 저렴하게 운영할 수 있는지 실험하고 있습니다.

This is still an early version, and many parts are not implemented yet. However, SiliconBeest is an experiment in how lightweight and affordable fediverse software can be when built on top of Cloudflare’s serverless infrastructure, such as Workers, D1, R2, and Queues.

현재 v1.0.0에서는 기본적인 구조와 핵심 기능을 먼저 정리하는 데 집중했으며, 앞으로 Mastodon API 호환성, federation 안정성, 관리 도구, 문서화 등을 점진적으로 개선해나갈 예정입니다.

In v1.0.0, I focused on organizing the basic architecture and core functionality first. Going forward, I plan to gradually improve Mastodon API compatibility, federation stability, admin tooling, and documentation.

관심 있으신 분들은 GitHub 저장소를 확인해주시고, 이슈나 피드백도 언제든 환영합니다.

If you’re interested, please check out the GitHub repository. Issues, feedback, and suggestions are always welcome.

https://github.com/SJang1/siliconbeest


설치 및 배포 방법 (Installation and Deployment)

SiliconBeest는 GitHub 템플릿과 Cloudflare를 이용해 비교적 간단하게 배포할 수 있습니다.

  1. GitHub 템플릿에서 새 저장소를 생성합니다.
  2. Cloudflare에서 필요한 리소스와 환경을 설정합니다.
  3. Cloudflare API 토큰과 필요한 환경변수를 GitHub Secrets에 저장합니다.
  4. GitHub Actions를 통해 자동 배포를 진행합니다.
  5. 배포가 완료되면 인스턴스 설정을 마무리합니다.

아직 설치 과정은 계속 다듬고 있으며, 개선사항이 많음을 알고 있습니다. 추후 보강해 나갈 예정이며, 이에 대한 PR도 환영입니다.

SiliconBeest can be deployed relatively easily using a GitHub template and Cloudflare.

  1. Create a new repository from the GitHub template.
  2. Set up the required resources and environment on Cloudflare.
  3. Store the Cloudflare API token and required environment variables in GitHub Secrets.
  4. Deploy automatically using GitHub Actions.
  5. Once deployment is complete, finish configuring your instance.

The installation process is still being refined, and I’m aware that there is plenty of room for improvement. I plan to keep improving the documentation and deployment flow over time, and related PRs are always welcome.

@reiver@mastodon.social

In ActivityPub, these are all equivalent:

"type":"Banana"

"type":["Banana"]

"type":{"@id":"Banana"}

"type":[{"@id":"Banana"}]

"type":{"id":"Banana"}

"type":[{"id":"Banana"}]

"@type":"Banana"

"@type":["Banana"]

"@type":{"@id":"Banana"}

"@type":[{"@id":"Banana"}]

"@type":{"id":"Banana"}

"@type":[{"id":"Banana"}]

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

2/

I want this (back-end Fediverse servers and front-end Fediverse clients as separate projects) for myself, too.

To try to make development for myself easier.

One of the Fediverse servers of this type that I have been working on is Microdon:

codeberg.org/reiver/microdon

It is meant for a light-weight single-user use-case.

...

I have found myself working on it (Microdon) again recently.

...

("Microdon" is the name of several fish if you are curious about the name.)

codeberg.org

microdon

microdon is a small light-weight single-user Fediverse back-end server meant to be used in low-memory low-resource environments. (Using microdon can help keep your costs down.)

@reiver@mastodon.social

Right now most applications tightly bundle the back-end server and the front-end client

I think it would be better for the Fediverse if back-end servers and front-end clients were separate projects.

I think it would make Fediverse development easier

(Ex: if you just want a new user-experience, just make a new front-end client. Don't bother with the back-end server.)

And would make it so you can optimize installs easier

(You could pick the back-end server that matches your needs.)

@reiver@mastodon.social

1/

The Fediverse would be better off if if back-end servers and front-end clients were separate projects.

I have been arguing that for a while.
(I know I am not the only one.)

With respect to Fediverse server, there are different types you might want, depending on your needs. And, it would be nice if you could pick and choose (separate from your choice of front-end).

For example, is it single-user or mutli-user? Should it be light-weight, or deal with high-scale? Etc?

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

Right now most #Fediverse applications tightly bundle the back-end server and the front-end client I think it would be better for the Fediverse if back-end servers and front-end clients were separate projects. I think it would make Fediverse development easier (Ex: if you just want a new user-experience, just make a new front-end client. Don't bother with the back-end server.) And would make it so you can optimize installs easier (You could pick the back-end server that matches your needs.)

@reiver@mastodon.social

Right now most applications tightly bundle the back-end server and the front-end client

I think it would be better for the Fediverse if back-end servers and front-end clients were separate projects.

I think it would make Fediverse development easier

(Ex: if you just want a new user-experience, just make a new front-end client. Don't bother with the back-end server.)

And would make it so you can optimize installs easier

(You could pick the back-end server that matches your needs.)

@benpate@mastodon.social

Once again, Jaz lays out a fantastic vision for Fediverse design. Chronological feeds are better than rage-bait algorithms, but they give give loudmouths too much real estate.

- Design for people, not protocols
-Community, not one person’s stream of consciousness
- Community notes (from trusted sources) on divisive issues

Read his posts and support his work!

about.iftas.org/donate/

It’s time for ’s to figure out how to get this done.

about.iftas.org

Support IFTAS with a Charitable Donation

Other Methods Donor-Advised Funds click here Stock, privately-held securities, and tax-deductible cryptocurrency gifts are accepted via Endaoment Sponsor us on Github Your employer may have a match…

@blog@jaz.co.uk
In my work supporting a broad array of open social web community managers, moderators, administrators, and developers, I regularly hear sweeping generalisations like "the fediverse is anti-this", "the fediverse doesn’t approve of that", "the fediverse holds this very specific opinion". I’ve always struggled with these statements. How can anyone possibly come to a definitive conclusion about what "the fediverse" believes? As I've said before, there isn't just one fediverse, there are a […]

In my work supporting a broad array of open social web community managers, moderators, administrators, and developers, I regularly hear sweeping generalisations like “the fediverse is anti-this”, “the fediverse doesn’t approve of that”, “the fediverse holds this very specific opinion”.

I’ve always struggled with these statements. How can anyone possibly come to a definitive conclusion about what “the fediverse” believes? As I’ve said before, there isn’t just one fediverse, there are a million fediverses. You’re only ever subjected to the specific fediverse you inhabit, the community you reside on and the people you choose to follow.

If you happen to follow high-signal accounts – people who post prolifically, loudly, and relentlessly – their sheer output completely shapes your reality. Their volume becomes your perception of what the entire network thinks.

For years, we have held up the chronological timeline as our great escape from this kind of distortion. In the open social web, we often point to our lack of an engagement-driven algorithm as a moral high ground. We don’t have a black box sorting our conversations for outrage and engagement, we just have time. First in, first out.

But I’ve long believed this is an incorrect oversimplification. Pure chronological timelines are incredibly easily dominated. They do not naturally create a balanced feed; rather, they inherently privilege whoever has the most time, the most grievance, and the loudest voice.

I’ve struggled to communicate this clearly, but after reading Tobias Rose-Stockwell’s brilliant breakdown at The Noisy Room I’m happy to defer to someone way smarter than me. He outlines a simple metaphor for how commercial social media distorts our reality.

A depiction of a crowd of people, three are highlighted in red and are louder than the others.

 

Imagine walking into a pub with a hundred people inside. Ninety-seven of them are having perfectly normal, nuanced conversations. Three of them, however, are screaming at the top of their lungs about politics, about each other, about whatever gets a reaction.

Now, imagine the pub employs a bouncer who gets paid by the minute you spend staring at the spectacle. To keep your attention, the bouncer wires those three screaming people into the pub’s PA system and turns it up to eleven. You walk in, you hear the deafening roar of the three-voiced extremes, and you conclude – logically, based on what you are hearing – that the room is entirely full of unhinged trolls.

In the commercial, centralised web, that bouncer is the algorithm. It amplifies the 3% of users who post severely toxic content because toxicity drives engagement and sells ads.

We look at that and say “thank goodness we fired that bouncer, he’s useless”. We boast that our decentralised, chronological feeds don’t have algorithms manipulating our conversations. But it turns out we don’t need a bouncer to amplify the toxicity via the PA when our timeline does it automatically for us.

The Chronological Illusion

When you build a network on a purely chronological feed you replace algorithmic amplification with sheer volume. If those same 3% of vocal, toxic, aggrieved accounts are posting twenty times a day while the 97% of us post once or twice, who dominates your timeline? They do. They don’t need a viral algorithm to amplify them, they just need access to the firehose.

First in, first out simply means the most frequent posters are the most frequently seen/heard.

This creates the exact same distortion that The Noisy Room identifies. We perform an environment scan of our fediverse feeds and conclude that a select few dominant voices reflect the zeitgeist. Maybe we see acrimony, rapid-fire hot takes, relentless indignation, and we believe – falsely – that we are in the minority.

This leads to the same tragic outcomes we see on commercial networks. The quiet majority goes silent. People self-censor. They step away from the keyboard, or they leave the platform entirely, ceding the space to the most extreme voices. The loudest users start to believe they are the majority.

Everyone gets each other wrong.

We designed a protocol to save us from algorithms, but we forgot or failed to design for human perception.

We need to design for people, not protocols

If we’re going to build better social media, we have to acknowledge that a pure, unfiltered chronological timeline is not a neutral arbiter. It is a megaphone for the relentless. So, how do we enhance the fediverse to fix this?

1. We need client-side enhancements that recognise when a single account is dominating a timeline. If one account posts say ten times in an hour, those posts could collapse into a single stack on my timeline. Let me choose to expand them. Give me back my chronological view of my community, not one person’s stream of consciousness.

2. We need to stop treating curation as a dirty word. An algorithm designed by a corporation to maximise ad revenue is harmful, yes. An algorithm, which is just a set of robust filtering tools, designed by you to protect your peace and balance your feed is empowering. We need apps and clients that allow members to easily dial down the volume on highly active accounts without having to fully block or unfollow them, softening the edges without severing relationships.

3. The Noisy Room suggests a “Community Check“, a representative layer of polling shown below contentious issues to show what the silent majority actually thinks. While this would be complex to implement across a decentralised network, we can build tools that gauge consensus without relying on the loudest voices. We need to find ways to measure and display community sentiment that isn’t just counting the number of angry, rapid-fire replies. Community managers should be able to add community notes to posts, or reply with them in a fashion that pins them to the OP. Emelia and the W3 SWCG Trust and Safety taskforce has some thoughts on this.

You’re not in the minority

Most people want their own space, shaped by their needs and their values. They want to connect, share, and learn without being shouted at. The social web is full of these people. I’m one of them. We are the 97% having a normal conversation in the pub while the 3% scream near the bar.

Our goal shouldn’t just be preserving a chronological feed at all costs. Our goal should be building better relationships. We need to ensure that when a new member joins any one of our million fediverses, they see the whole room, not just the people shouting the loudest.

Let’s find our common ground, let’s build tools that reflect the reality of our communities, and let’s give the quiet majority their voice.

A depiction of a crowd of people, three are highlighted in red and are louder than the others.
ALT text

A depiction of a crowd of people, three are highlighted in red and are louder than the others.

@benpate@mastodon.social

Once again, Jaz lays out a fantastic vision for Fediverse design. Chronological feeds are better than rage-bait algorithms, but they give give loudmouths too much real estate.

- Design for people, not protocols
-Community, not one person’s stream of consciousness
- Community notes (from trusted sources) on divisive issues

Read his posts and support his work!

about.iftas.org/donate/

It’s time for ’s to figure out how to get this done.

about.iftas.org

Support IFTAS with a Charitable Donation

Other Methods Donor-Advised Funds click here Stock, privately-held securities, and tax-deductible cryptocurrency gifts are accepted via Endaoment Sponsor us on Github Your employer may have a match…

@blog@jaz.co.uk
In my work supporting a broad array of open social web community managers, moderators, administrators, and developers, I regularly hear sweeping generalisations like "the fediverse is anti-this", "the fediverse doesn’t approve of that", "the fediverse holds this very specific opinion". I’ve always struggled with these statements. How can anyone possibly come to a definitive conclusion about what "the fediverse" believes? As I've said before, there isn't just one fediverse, there are a […]

In my work supporting a broad array of open social web community managers, moderators, administrators, and developers, I regularly hear sweeping generalisations like “the fediverse is anti-this”, “the fediverse doesn’t approve of that”, “the fediverse holds this very specific opinion”.

I’ve always struggled with these statements. How can anyone possibly come to a definitive conclusion about what “the fediverse” believes? As I’ve said before, there isn’t just one fediverse, there are a million fediverses. You’re only ever subjected to the specific fediverse you inhabit, the community you reside on and the people you choose to follow.

If you happen to follow high-signal accounts – people who post prolifically, loudly, and relentlessly – their sheer output completely shapes your reality. Their volume becomes your perception of what the entire network thinks.

For years, we have held up the chronological timeline as our great escape from this kind of distortion. In the open social web, we often point to our lack of an engagement-driven algorithm as a moral high ground. We don’t have a black box sorting our conversations for outrage and engagement, we just have time. First in, first out.

But I’ve long believed this is an incorrect oversimplification. Pure chronological timelines are incredibly easily dominated. They do not naturally create a balanced feed; rather, they inherently privilege whoever has the most time, the most grievance, and the loudest voice.

I’ve struggled to communicate this clearly, but after reading Tobias Rose-Stockwell’s brilliant breakdown at The Noisy Room I’m happy to defer to someone way smarter than me. He outlines a simple metaphor for how commercial social media distorts our reality.

A depiction of a crowd of people, three are highlighted in red and are louder than the others.

 

Imagine walking into a pub with a hundred people inside. Ninety-seven of them are having perfectly normal, nuanced conversations. Three of them, however, are screaming at the top of their lungs about politics, about each other, about whatever gets a reaction.

Now, imagine the pub employs a bouncer who gets paid by the minute you spend staring at the spectacle. To keep your attention, the bouncer wires those three screaming people into the pub’s PA system and turns it up to eleven. You walk in, you hear the deafening roar of the three-voiced extremes, and you conclude – logically, based on what you are hearing – that the room is entirely full of unhinged trolls.

In the commercial, centralised web, that bouncer is the algorithm. It amplifies the 3% of users who post severely toxic content because toxicity drives engagement and sells ads.

We look at that and say “thank goodness we fired that bouncer, he’s useless”. We boast that our decentralised, chronological feeds don’t have algorithms manipulating our conversations. But it turns out we don’t need a bouncer to amplify the toxicity via the PA when our timeline does it automatically for us.

The Chronological Illusion

When you build a network on a purely chronological feed you replace algorithmic amplification with sheer volume. If those same 3% of vocal, toxic, aggrieved accounts are posting twenty times a day while the 97% of us post once or twice, who dominates your timeline? They do. They don’t need a viral algorithm to amplify them, they just need access to the firehose.

First in, first out simply means the most frequent posters are the most frequently seen/heard.

This creates the exact same distortion that The Noisy Room identifies. We perform an environment scan of our fediverse feeds and conclude that a select few dominant voices reflect the zeitgeist. Maybe we see acrimony, rapid-fire hot takes, relentless indignation, and we believe – falsely – that we are in the minority.

This leads to the same tragic outcomes we see on commercial networks. The quiet majority goes silent. People self-censor. They step away from the keyboard, or they leave the platform entirely, ceding the space to the most extreme voices. The loudest users start to believe they are the majority.

Everyone gets each other wrong.

We designed a protocol to save us from algorithms, but we forgot or failed to design for human perception.

We need to design for people, not protocols

If we’re going to build better social media, we have to acknowledge that a pure, unfiltered chronological timeline is not a neutral arbiter. It is a megaphone for the relentless. So, how do we enhance the fediverse to fix this?

1. We need client-side enhancements that recognise when a single account is dominating a timeline. If one account posts say ten times in an hour, those posts could collapse into a single stack on my timeline. Let me choose to expand them. Give me back my chronological view of my community, not one person’s stream of consciousness.

2. We need to stop treating curation as a dirty word. An algorithm designed by a corporation to maximise ad revenue is harmful, yes. An algorithm, which is just a set of robust filtering tools, designed by you to protect your peace and balance your feed is empowering. We need apps and clients that allow members to easily dial down the volume on highly active accounts without having to fully block or unfollow them, softening the edges without severing relationships.

3. The Noisy Room suggests a “Community Check“, a representative layer of polling shown below contentious issues to show what the silent majority actually thinks. While this would be complex to implement across a decentralised network, we can build tools that gauge consensus without relying on the loudest voices. We need to find ways to measure and display community sentiment that isn’t just counting the number of angry, rapid-fire replies. Community managers should be able to add community notes to posts, or reply with them in a fashion that pins them to the OP. Emelia and the W3 SWCG Trust and Safety taskforce has some thoughts on this.

You’re not in the minority

Most people want their own space, shaped by their needs and their values. They want to connect, share, and learn without being shouted at. The social web is full of these people. I’m one of them. We are the 97% having a normal conversation in the pub while the 3% scream near the bar.

Our goal shouldn’t just be preserving a chronological feed at all costs. Our goal should be building better relationships. We need to ensure that when a new member joins any one of our million fediverses, they see the whole room, not just the people shouting the loudest.

Let’s find our common ground, let’s build tools that reflect the reality of our communities, and let’s give the quiet majority their voice.

A depiction of a crowd of people, three are highlighted in red and are louder than the others.
ALT text

A depiction of a crowd of people, three are highlighted in red and are louder than the others.

@reiver@mastodon.social
@trwnh@mastodon.social
@reiver@mastodon.social
@trwnh@mastodon.social
@reiver@mastodon.social

ActivityPub specifications don't seem to provide a way to do Idempotent POSTs to your outbox.

That seems like a problem for C2S to me.

Networks are unreliable. You cannot tell the difference between an unreceived request vs an unreceived response. You'll get unwanted identical duplicate activities.

Although it isn't difficult to solve — a convention just needs to be picked.

For example, a new Idempotency field could be added to the JSON-LD payload.

@reiver@mastodon.social

ActivityPub specifications don't seem to provide a way to do Idempotent POSTs to your outbox.

That seems like a problem for C2S to me.

Networks are unreliable. You cannot tell the difference between an unreceived request vs an unreceived response. You'll get unwanted identical duplicate activities.

Although it isn't difficult to solve — a convention just needs to be picked.

For example, a new Idempotency field could be added to the JSON-LD payload.

@reiver@mastodon.social

ActivityPub specifications don't seem to provide a way to do Idempotent POSTs to your outbox.

That seems like a problem for C2S to me.

Networks are unreliable. You cannot tell the difference between an unreceived request vs an unreceived response. You'll get unwanted identical duplicate activities.

Although it isn't difficult to solve — a convention just needs to be picked.

For example, a new Idempotency field could be added to the JSON-LD payload.

@reiver@mastodon.social

ActivityPub specifications don't seem to provide a way to do Idempotent POSTs to your outbox.

That seems like a problem for C2S to me.

Networks are unreliable. You cannot tell the difference between an unreceived request vs an unreceived response. You'll get unwanted identical duplicate activities.

Although it isn't difficult to solve — a convention just needs to be picked.

For example, a new Idempotency field could be added to the JSON-LD payload.

@box464@mastodon.social

I just migrated my personally hosted Bluesky PDS to Northsky.social because I was tired of paying Hetzner for something I rarely use.

Instead I'll happily donate similar funds to Northsky.

I wouldn't say it was a grandma friendly process, but it worked as expected.

I'm still a bit upset the fediverse in general doesn't have this specific process figured out yet.

This is my social home and that's not changing. I hope to see progress on true account migration soon.

@kingconsult@berlin.social
@hongminhee@hollo.social

Drafting a proposal to add API support in for the ActivityPub Media Upload extension, the SocialCG-incubated companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

https://github.com/fedify-dev/fedify/issues/754

github.com

Support ActivityPub Media Upload extension via `setMediaUploader()` · Issue #754 · fedify-dev/fedify

Summary Add support for the ActivityPub Media Upload extension so that Fedify-based servers can accept C2S media uploads from clients. The proposed API mirrors the C2S outbox listeners introduced i...

@hongminhee@hollo.social

Drafting a proposal to add API support in for the ActivityPub Media Upload extension, the SocialCG-incubated companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

https://github.com/fedify-dev/fedify/issues/754

github.com

Support ActivityPub Media Upload extension via `setMediaUploader()` · Issue #754 · fedify-dev/fedify

Summary Add support for the ActivityPub Media Upload extension so that Fedify-based servers can accept C2S media uploads from clients. The proposed API mirrors the C2S outbox listeners introduced i...

@hongminhee@hollo.social

Drafting a proposal to add API support in for the ActivityPub Media Upload extension, the SocialCG-incubated companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

https://github.com/fedify-dev/fedify/issues/754

github.com

Support ActivityPub Media Upload extension via `setMediaUploader()` · Issue #754 · fedify-dev/fedify

Summary Add support for the ActivityPub Media Upload extension so that Fedify-based servers can accept C2S media uploads from clients. The proposed API mirrors the C2S outbox listeners introduced i...

@hongminhee@hollo.social

Drafting a proposal to add API support in for the ActivityPub Media Upload extension, the SocialCG-incubated companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

https://github.com/fedify-dev/fedify/issues/754

github.com

Support ActivityPub Media Upload extension via `setMediaUploader()` · Issue #754 · fedify-dev/fedify

Summary Add support for the ActivityPub Media Upload extension so that Fedify-based servers can accept C2S media uploads from clients. The proposed API mirrors the C2S outbox listeners introduced i...

@kingconsult@berlin.social
@hongminhee@hollo.social

Drafting a proposal to add API support in for the ActivityPub Media Upload extension, the SocialCG-incubated companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

https://github.com/fedify-dev/fedify/issues/754

github.com

Support ActivityPub Media Upload extension via `setMediaUploader()` · Issue #754 · fedify-dev/fedify

Summary Add support for the ActivityPub Media Upload extension so that Fedify-based servers can accept C2S media uploads from clients. The proposed API mirrors the C2S outbox listeners introduced i...

@kingconsult@berlin.social
@kingconsult@berlin.social
@fedicon@techhub.social

🎟️ Early Bird tickets for FediCon 2026 are still on sale — don't miss your chance to grab a discounted pass!

We believe this event should be accessible to everyone, so there’s also an affordable (reduced fare) ticket option available for those who need it.

Join us for a gathering all about the Fediverse, the Social Web, and the people building what comes next.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@reiver@mastodon.social

🌐 FediCon 2026 is coming up — and Early Bird (discounted) tickets are still available!

We want FediCon to be open and accessible, which is why there is also an affordable (Reduced fare) ticket option for those who want it.

Come be part of the conversations shaping the Fediverse and the future of the Social Web.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC, Canada

🎟️ Get your FOSSY ticket here:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@reiver@mastodon.social

🌐 FediCon 2026 is coming up — and Early Bird (discounted) tickets are still available!

We want FediCon to be open and accessible, which is why there is also an affordable (Reduced fare) ticket option for those who want it.

Come be part of the conversations shaping the Fediverse and the future of the Social Web.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC, Canada

🎟️ Get your FOSSY ticket here:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@fedicon@techhub.social

🎟️ Early Bird tickets for FediCon 2026 are still on sale — don't miss your chance to grab a discounted pass!

We believe this event should be accessible to everyone, so there’s also an affordable (reduced fare) ticket option available for those who need it.

Join us for a gathering all about the Fediverse, the Social Web, and the people building what comes next.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@fedicon@techhub.social

🎟️ Early Bird tickets for FediCon 2026 are still on sale — don't miss your chance to grab a discounted pass!

We believe this event should be accessible to everyone, so there’s also an affordable (reduced fare) ticket option available for those who need it.

Join us for a gathering all about the Fediverse, the Social Web, and the people building what comes next.

📅 August 6–9, 2026
📍 UBC campus, Vancouver, BC

🎫 Get your FOSSY ticket, which gets you into FediCon:
2026.fossy.ca/attend/tickets/

2026.fossy.ca

FOSSY 2026 | Tickets

@kingconsult@berlin.social
@kingconsult@berlin.social
@reiver@mastodon.social · Reply to @reiver ⊼ (Charles) :batman:

I have been thinking about payments on the Fediverse (for a while).

2/

For example —

A parent (archetype) may want to send money to their spouse, or give allowance to their child, etc.

Someone working abroad (archetype) may want to send money back home to their family (i.e., remittance).

An SMB (archetype) may want to accept payment for the sale of a product.

A freelancer (archetype) may want to get paid for their irregular income.

Etc.

...

@reiver@mastodon.social

I have been thinking about payments on the Fediverse (for a while).

1/

To make sure a Fediverse payment system is useful we should think in terms of a set Archetypes and each of their wants and a pains.

(Product people often call "Archetypes": Personas. Marketers often call "Archetypes": Segments.)

...

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

4/

Related (in quote-boost).

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

To me, it feels like the Activity Types should have been past-tense verbs, rather than present-tense verbs. I.e.: • "Accepted" rather than "Accept" • "Added" rather than "Add" • "Announced" rather than "Announce" • "Arrived" rather than "Arrive" • "Blocked" rather than "Block" • "Created" rather than "Create" • etc Present-tense verbs feel like commands. Past-tense verbs feel like events. Activities are events not commands. #ActivityPub #ActivityStreams #DeSo #FediDev #FediDevs #Fediverse

@reiver@mastodon.social

To me, it feels like the Activity Types should have been past-tense verbs, rather than present-tense verbs.

I.e.:

• "Accepted" rather than "Accept"
• "Added" rather than "Add"
• "Announced" rather than "Announce"
• "Arrived" rather than "Arrive"
• "Blocked" rather than "Block"
• "Created" rather than "Create"
• etc

Present-tense verbs feel like commands.

Past-tense verbs feel like events.

Activities are events not commands.

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

There is a comparison that can be made between ActivityPub and Event-Sourcing.

3/

With ActivityPub, Activities are often applied to an object. That object gets assigned an ID in the form of a URL.

(And, by URL I mean URL, URI, IRI, etc.)

One doesn't have to read through all the Activities in an inbox, outbox, etc to get the final state of an object.

One can just get the JSON-LD document from the object's ID URL to get the final state.

@reiver@mastodon.social

There is a comparison that can be made between ActivityPub and Event-Sourcing.

1/

With Event-Sourcing, your source-of-truth is an append-only series of events.

Ex: USER_REGISTERED, EMAIL_ADDRESS_VERIFIED, PASSWORD_CHANGED, etc.

In ActivityPub, this is similar to the inbox, outbox, etc being an append-only series of Activity.

Ex: Create, Like, Undo, etc.

...

@hongminhee@hollo.social

Drafting a proposal to add API support in for the ActivityPub Media Upload extension, the SocialCG-incubated companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

https://github.com/fedify-dev/fedify/issues/754

github.com

Support ActivityPub Media Upload extension via `setMediaUploader()` · Issue #754 · fedify-dev/fedify

Summary Add support for the ActivityPub Media Upload extension so that Fedify-based servers can accept C2S media uploads from clients. The proposed API mirrors the C2S outbox listeners introduced i...

@hongminhee@hollo.social

Drafting a proposal to add API support in for the ActivityPub Media Upload extension, the SocialCG-incubated companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

https://github.com/fedify-dev/fedify/issues/754

github.com

Support ActivityPub Media Upload extension via `setMediaUploader()` · Issue #754 · fedify-dev/fedify

Summary Add support for the ActivityPub Media Upload extension so that Fedify-based servers can accept C2S media uploads from clients. The proposed API mirrors the C2S outbox listeners introduced i...

@hongminhee@hollo.social

Drafting a proposal to add API support in for the ActivityPub Media Upload extension, the SocialCG-incubated companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

https://github.com/fedify-dev/fedify/issues/754

github.com

Support ActivityPub Media Upload extension via `setMediaUploader()` · Issue #754 · fedify-dev/fedify

Summary Add support for the ActivityPub Media Upload extension so that Fedify-based servers can accept C2S media uploads from clients. The proposed API mirrors the C2S outbox listeners introduced i...

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

Just thinking out loud —

If we wanted to support resumable uploads in C2S API, then — we probably need some URL to upload the file chunks to.

When a user POST to their own outbox, the HTTP "201 Created" response will have a "Location" header that provides a URL.

Maybe that could be used as the upload URL.

Or, maybe the JSON-LD document at that URL might contain a URL under the "object" field that could be used as the upload URL.

Other options too

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

I can think of different ways to support resumable uploads with ActivityPub, but — just to see what others are doing —

PeerTube seems to have resumable uploads already.

PeerTube seems to use this protocol for it:

github.com/kukhariev/node-uplo

I like that it uses Content-Range in the protocol. I would have done the similar.

github.com

node-uploadx/proto.md at master · kukhariev/node-uploadx

Node.js middleware for handling resumable uploads. Contribute to kukhariev/node-uploadx development by creating an account on GitHub.

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

Just thinking out loud —

If we wanted to support resumable uploads in C2S API, then — we probably need some URL to upload the file chunks to.

When a user POST to their own outbox, the HTTP "201 Created" response will have a "Location" header that provides a URL.

Maybe that could be used as the upload URL.

Or, maybe the JSON-LD document at that URL might contain a URL under the "object" field that could be used as the upload URL.

Other options too

@reiver@mastodon.social

It seems as if the uploadMedia ActivityPub extension does not provide a way to resume an upload that didn't previously compete.

w3.org/wiki/SocialCG/ActivityP

If, for example, you are working with large files (such as video files) this would matter.

Because if you uploaded 1GB, and the upload stopped, you would want to resume at where it stopped, and not have to upload from the beginning again.

This would be important for ActivityPub C2S adoption.

w3.org

SocialCG/ActivityPub/MediaUpload - W3C Wiki

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

I can think of different ways to support resumable uploads with ActivityPub, but — just to see what others are doing —

PeerTube seems to have resumable uploads already.

PeerTube seems to use this protocol for it:

github.com/kukhariev/node-uplo

I like that it uses Content-Range in the protocol. I would have done the similar.

github.com

node-uploadx/proto.md at master · kukhariev/node-uploadx

Node.js middleware for handling resumable uploads. Contribute to kukhariev/node-uploadx development by creating an account on GitHub.

@reiver@mastodon.social

It seems as if the uploadMedia ActivityPub extension does not provide a way to resume an upload that didn't previously compete.

w3.org/wiki/SocialCG/ActivityP

If, for example, you are working with large files (such as video files) this would matter.

Because if you uploaded 1GB, and the upload stopped, you would want to resume at where it stopped, and not have to upload from the beginning again.

This would be important for ActivityPub C2S adoption.

w3.org

SocialCG/ActivityPub/MediaUpload - W3C Wiki

@Profpatsch@mastodon.xyz · Reply to Julian Fietkau

@julian @lina @mellifluousbox @haubles @imanijoy

What the frick, mastodon? People have been begging you to merge this since 2024, no replies?

 mjankowski
commented
on Nov 21, 2024

This has been rebased/maintained for ~2.5 years, which is somewhat absurd.

Is there anything I can do review-wise to help nudge this forward and/or decide to kill it ... or are just waiting on reviewer availability from team?

 rkingett
commented
on Nov 26, 2024

This needs to be merged!
ALT text

mjankowski commented on Nov 21, 2024 This has been rebased/maintained for ~2.5 years, which is somewhat absurd. Is there anything I can do review-wise to help nudge this forward and/or decide to kill it ... or are just waiting on reviewer availability from team? rkingett commented on Nov 26, 2024 This needs to be merged!

github issue: Hide subthreads by blocked users when looking at a post's descendants#18468
ClearlyClaire
wants to merge 10 commits into
mastodon:main
from
ClearlyClaire:features/hide-blocked-users

github issue comments:

 graue
commented
on Aug 22, 2024

@Gargron, please allow this to be merged! It's incredibly frustrating that when I get an abusive reply, there's nothing I can do to avoid providing a platform for it - short of deleting my own post that the person replied to. This is such an easy win that will help prevent people from being forced off of Mastodon due to toxic harassment.
ALT text

github issue: Hide subthreads by blocked users when looking at a post's descendants#18468 ClearlyClaire wants to merge 10 commits into mastodon:main from ClearlyClaire:features/hide-blocked-users github issue comments: graue commented on Aug 22, 2024 @Gargron, please allow this to be merged! It's incredibly frustrating that when I get an abusive reply, there's nothing I can do to avoid providing a platform for it - short of deleting my own post that the person replied to. This is such an easy win that will help prevent people from being forced off of Mastodon due to toxic harassment.

@box464@mastodon.social

Divine, a short video Vine-like experience, had their app go live this week. It includes vintage vines previously archived from the original platform. Instant nostalgia is a great hook.

But the thing I find most interesting - this is a Nostr app. But it’s not being presented to users as such, at all.

Lots of new Nostr users who don’t even know they ARE Nostr users. I’m curious how this will work out!

So far I’ve never seen a Fedi app do similar.

apps.apple.com/app/id6747959501

@box464@mastodon.social

Divine, a short video Vine-like experience, had their app go live this week. It includes vintage vines previously archived from the original platform. Instant nostalgia is a great hook.

But the thing I find most interesting - this is a Nostr app. But it’s not being presented to users as such, at all.

Lots of new Nostr users who don’t even know they ARE Nostr users. I’m curious how this will work out!

So far I’ve never seen a Fedi app do similar.

apps.apple.com/app/id6747959501

@Profpatsch@mastodon.xyz
@box464@mastodon.social

Divine, a short video Vine-like experience, had their app go live this week. It includes vintage vines previously archived from the original platform. Instant nostalgia is a great hook.

But the thing I find most interesting - this is a Nostr app. But it’s not being presented to users as such, at all.

Lots of new Nostr users who don’t even know they ARE Nostr users. I’m curious how this will work out!

So far I’ve never seen a Fedi app do similar.

apps.apple.com/app/id6747959501

@reiver@mastodon.social
@reiver@mastodon.social
@reiver@mastodon.social
@johannab@cosocial.ca

Thought here … , , builders who are deeper in the architecture than I can get…

Are there any self-hosting options out there that can literally just be the sign-in server for other services? Where’s our independent, federated “sign in with {Google/fb/linkedIn/mastodon}” option? Am I just talking about a Mastodon instance that doesn’t federate and doesn’t allow posting?

Maybe this is not even a need, I’m trying to assemble a systems theory map in my head.

@reiver@mastodon.social

What if web-browsers could render the ActivityPub / ActivityStreams JSON-LD source-code into the document it represents?

Fediverse clients can do it — why can't browsers?

I previously created a small-net / small-web browser client named SpaceMonkey.

It supports protocols such as Gemini, HTTP, HTTPS, Mercury, etc. And, formats such as GemText, HTML, Markdown, etc.

It now supports the ActivityPub / ActivityStreams JSON-LD format, too.

@reiver@mastodon.social

What if web-browsers could render the ActivityPub / ActivityStreams JSON-LD source-code into the document it represents?

Fediverse clients can do it — why can't browsers?

I previously created a small-net / small-web browser client named SpaceMonkey.

It supports protocols such as Gemini, HTTP, HTTPS, Mercury, etc. And, formats such as GemText, HTML, Markdown, etc.

It now supports the ActivityPub / ActivityStreams JSON-LD format, too.

@reiver@mastodon.social

What if web-browsers could render the ActivityPub / ActivityStreams JSON-LD source-code into the document it represents?

Fediverse clients can do it — why can't browsers?

I previously created a small-net / small-web browser client named SpaceMonkey.

It supports protocols such as Gemini, HTTP, HTTPS, Mercury, etc. And, formats such as GemText, HTML, Markdown, etc.

It now supports the ActivityPub / ActivityStreams JSON-LD format, too.

@johannab@cosocial.ca

Thought here … , , builders who are deeper in the architecture than I can get…

Are there any self-hosting options out there that can literally just be the sign-in server for other services? Where’s our independent, federated “sign in with {Google/fb/linkedIn/mastodon}” option? Am I just talking about a Mastodon instance that doesn’t federate and doesn’t allow posting?

Maybe this is not even a need, I’m trying to assemble a systems theory map in my head.

@reiver@mastodon.social

What should the file-extension for ActivityPub / ActivityStreams documents be?

I.e., for application/activity+json data?

I've been using .activity

Ex: filename.activity

(The extension cannot be .json or .jsonld if you want to be able to detect it just based on the file-extension.)

What do you think?

@hongminhee@hollo.social
@reiver@mastodon.social

What should the file-extension for ActivityPub / ActivityStreams documents be?

I.e., for application/activity+json data?

I've been using .activity

Ex: filename.activity

(The extension cannot be .json or .jsonld if you want to be able to detect it just based on the file-extension.)

What do you think?

@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@reiver@mastodon.social

What makes an ActivityPub Actor an Actor?

I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future.

So then, do we do it in a duck-typing way? And if "yes", how?

Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those.

@hongminhee@hollo.social
@reiver@mastodon.social

If an ActivityPub Actor is something that has an "inbox" or an "outbox" (i.e., it could have just one or both) then —

Perhaps we should also be talking about "sources" and "sinks", too. Where —

An ActivityPub Source is an Actor with just an "outbox" (and no "inbox").

And, an ActivityPub Sink is an Actor with just an "inbox" (and no "outbox").

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

What makes an ActivityPub Actor an Actor? I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future. So then, do we do it in a duck-typing way? And if "yes", how? Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those. #ActivityPub #ActivityStreams #FediDev

@reiver@mastodon.social

What makes an ActivityPub Actor an Actor?

I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future.

So then, do we do it in a duck-typing way? And if "yes", how?

Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those.

@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@hongminhee@hollo.social
@fediway@fediway.com · Reply to Fediway

2/X Thats why we are building Fediway — not as a way to dictate which algorithm a platform should use, but as a powerful framework that lets you build your own feed for your instance.

👉 github.com/fediway/fediway

github.com

GitHub - fediway/fediway: Recommendation engine for Mastodon ✨

Recommendation engine for Mastodon ✨. Contribute to fediway/fediway development by creating an account on GitHub.

@reiver@mastodon.social

What makes an ActivityPub Actor an Actor?

I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future.

So then, do we do it in a duck-typing way? And if "yes", how?

Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those.

@reiver@mastodon.social

If an ActivityPub Actor is something that has an "inbox" or an "outbox" (i.e., it could have just one or both) then —

Perhaps we should also be talking about "sources" and "sinks", too. Where —

An ActivityPub Source is an Actor with just an "outbox" (and no "inbox").

And, an ActivityPub Sink is an Actor with just an "inbox" (and no "outbox").

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

What makes an ActivityPub Actor an Actor? I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future. So then, do we do it in a duck-typing way? And if "yes", how? Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those. #ActivityPub #ActivityStreams #FediDev

@reiver@mastodon.social

What makes an ActivityPub Actor an Actor?

I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future.

So then, do we do it in a duck-typing way? And if "yes", how?

Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those.

@reiver@mastodon.social

If an ActivityPub Actor is something that has an "inbox" or an "outbox" (i.e., it could have just one or both) then —

Perhaps we should also be talking about "sources" and "sinks", too. Where —

An ActivityPub Source is an Actor with just an "outbox" (and no "inbox").

And, an ActivityPub Sink is an Actor with just an "inbox" (and no "outbox").

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

What makes an ActivityPub Actor an Actor? I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future. So then, do we do it in a duck-typing way? And if "yes", how? Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those. #ActivityPub #ActivityStreams #FediDev

@reiver@mastodon.social

What makes an ActivityPub Actor an Actor?

I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future.

So then, do we do it in a duck-typing way? And if "yes", how?

Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those.

@reiver@mastodon.social

It looks like some new things were added to what Mastodon returns from WebFinger.

Both related to FEP-3b86

codeberg.org/fediverse/fep/src

{
  "subject": "acct:reiver@mastodon.social",
  "aliases": [
    "https://mastodon.social/@reiver",
    "https://mastodon.social/users/reiver"
  ],
  "links": [
    {
      "rel": "http://webfinger.net/rel/profile-page",
      "type": "text/html",
      "href": "https://mastodon.social/@reiver"
    },
    {
      "rel": "self",
      "type": "application/activity+json",
      "href": "https://mastodon.social/users/reiver"
    },
    {
      "rel": "http://ostatus.org/schema/1.0/subscribe",
      "template": "https://mastodon.social/authorize_interaction?uri={uri}"
    },
    {
      "rel": "https://w3id.org/fep/3b86/Create",
      "template": "https://mastodon.social/share?text={content}"
    },
    {
      "rel": "https://w3id.org/fep/3b86/Object",
      "template": "https://mastodon.social/authorize_interaction?uri={object}"
    },
    {
      "rel": "http://webfinger.net/rel/avatar",
      "type": "image/png",
      "href": "https://files.mastodon.social/accounts/avatars/108/116/990/725/247/731/original/2e097b7812894201.png"
    }
  ]
}
ALT text

{ "subject": "acct:reiver@mastodon.social", "aliases": [ "https://mastodon.social/@reiver", "https://mastodon.social/users/reiver" ], "links": [ { "rel": "http://webfinger.net/rel/profile-page", "type": "text/html", "href": "https://mastodon.social/@reiver" }, { "rel": "self", "type": "application/activity+json", "href": "https://mastodon.social/users/reiver" }, { "rel": "http://ostatus.org/schema/1.0/subscribe", "template": "https://mastodon.social/authorize_interaction?uri={uri}" }, { "rel": "https://w3id.org/fep/3b86/Create", "template": "https://mastodon.social/share?text={content}" }, { "rel": "https://w3id.org/fep/3b86/Object", "template": "https://mastodon.social/authorize_interaction?uri={object}" }, { "rel": "http://webfinger.net/rel/avatar", "type": "image/png", "href": "https://files.mastodon.social/accounts/avatars/108/116/990/725/247/731/original/2e097b7812894201.png" } ] }

@reiver@mastodon.social

It looks like some new things were added to what Mastodon returns from WebFinger.

Both related to FEP-3b86

codeberg.org/fediverse/fep/src

{
  "subject": "acct:reiver@mastodon.social",
  "aliases": [
    "https://mastodon.social/@reiver",
    "https://mastodon.social/users/reiver"
  ],
  "links": [
    {
      "rel": "http://webfinger.net/rel/profile-page",
      "type": "text/html",
      "href": "https://mastodon.social/@reiver"
    },
    {
      "rel": "self",
      "type": "application/activity+json",
      "href": "https://mastodon.social/users/reiver"
    },
    {
      "rel": "http://ostatus.org/schema/1.0/subscribe",
      "template": "https://mastodon.social/authorize_interaction?uri={uri}"
    },
    {
      "rel": "https://w3id.org/fep/3b86/Create",
      "template": "https://mastodon.social/share?text={content}"
    },
    {
      "rel": "https://w3id.org/fep/3b86/Object",
      "template": "https://mastodon.social/authorize_interaction?uri={object}"
    },
    {
      "rel": "http://webfinger.net/rel/avatar",
      "type": "image/png",
      "href": "https://files.mastodon.social/accounts/avatars/108/116/990/725/247/731/original/2e097b7812894201.png"
    }
  ]
}
ALT text

{ "subject": "acct:reiver@mastodon.social", "aliases": [ "https://mastodon.social/@reiver", "https://mastodon.social/users/reiver" ], "links": [ { "rel": "http://webfinger.net/rel/profile-page", "type": "text/html", "href": "https://mastodon.social/@reiver" }, { "rel": "self", "type": "application/activity+json", "href": "https://mastodon.social/users/reiver" }, { "rel": "http://ostatus.org/schema/1.0/subscribe", "template": "https://mastodon.social/authorize_interaction?uri={uri}" }, { "rel": "https://w3id.org/fep/3b86/Create", "template": "https://mastodon.social/share?text={content}" }, { "rel": "https://w3id.org/fep/3b86/Object", "template": "https://mastodon.social/authorize_interaction?uri={object}" }, { "rel": "http://webfinger.net/rel/avatar", "type": "image/png", "href": "https://files.mastodon.social/accounts/avatars/108/116/990/725/247/731/original/2e097b7812894201.png" } ] }

@reiver@mastodon.social

What makes an ActivityPub Actor an Actor?

I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future.

So then, do we do it in a duck-typing way? And if "yes", how?

Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those.

@admin@mstdn.feddit.social
关于联邦软件——hollo的消极吐槽(梦话)——很一般、很普通

......如果用过 ,那差不多就相当于用过hollo了 (
虽然也是和 一样的“单”用户实例;
但是gotosocial,只是推荐单用户;
而hollo,应该是一个管理员,可以创建多个账户,比如这个@admin@fedihollo.org ,还可以创建 @xxx@fedihollo.org ;
创建多账户上这一点要比botkit更好?botkit是一域名一机器人的,就像 @mybot@drawbot
Gotosocial还是要比Hollo完善许多,Gotosocial在功能上不比mastodon差多少,hollo就算了
总的来说吧,单用户不推荐自托管 -dev/hollo,如果想搭建机器人,可以用fedify-dev/botkit

介绍 #Hollo。Hollo 是一款支持 #ActivityPub 的单用户微型博客软件。虽然它只针对单一用户,但它也支持为不同主题创建和运行多个账户。
它是无头的,意味着你可以使用现有的 #Mastodon 客户端应用,配合其兼容 Mastodon 的 API。它与猛犸象在特征上几乎相当。Mastodon 的两个大区别是你可以在帖子内容中使用 #Markdown,并且可以引用其他帖子。
哦,Hollo 是用 #Bun 和 #Fedify 构建的。
https://github.com/dahlia/hollo
#fedidev

这里也确实提到了“虽然它只针对单一用户,但它也支持为不同主题创建和运行多个账户”
hollo最近发了一个投票:

Hollo 一直都是无头的——没有内置前端,只有一个兼容 Mastodon 的 API。你自己选客户。这正是重点。
但我们一直在想:如果 Hollo 发布自己的网页前端会怎样?Mastodon 兼容的 API 会保留,所以你当前的客户端设置不会改变。这只是多了一个选择。
你会用吗?

你要我怎么夸你呢?占用1.4GB内存......还是“创建 账户变得非常简单低成本吗?”

Links:
hollo.social/@hollo
github.com/fedify-dev/botkit
github.com/fedify-dev/hollo
fedihollo.org/@admin

抱歉hollo的开发者们

RE: fedihollo.org/@admin/019d3008-

https://fedihollo.org/@admin
ALT text

https://fedihollo.org/@admin

https://bot.moe.pub/
ALT text

https://bot.moe.pub/

@reiver@mastodon.social

It looks like some new things were added to what Mastodon returns from WebFinger.

Both related to FEP-3b86

codeberg.org/fediverse/fep/src

{
  "subject": "acct:reiver@mastodon.social",
  "aliases": [
    "https://mastodon.social/@reiver",
    "https://mastodon.social/users/reiver"
  ],
  "links": [
    {
      "rel": "http://webfinger.net/rel/profile-page",
      "type": "text/html",
      "href": "https://mastodon.social/@reiver"
    },
    {
      "rel": "self",
      "type": "application/activity+json",
      "href": "https://mastodon.social/users/reiver"
    },
    {
      "rel": "http://ostatus.org/schema/1.0/subscribe",
      "template": "https://mastodon.social/authorize_interaction?uri={uri}"
    },
    {
      "rel": "https://w3id.org/fep/3b86/Create",
      "template": "https://mastodon.social/share?text={content}"
    },
    {
      "rel": "https://w3id.org/fep/3b86/Object",
      "template": "https://mastodon.social/authorize_interaction?uri={object}"
    },
    {
      "rel": "http://webfinger.net/rel/avatar",
      "type": "image/png",
      "href": "https://files.mastodon.social/accounts/avatars/108/116/990/725/247/731/original/2e097b7812894201.png"
    }
  ]
}
ALT text

{ "subject": "acct:reiver@mastodon.social", "aliases": [ "https://mastodon.social/@reiver", "https://mastodon.social/users/reiver" ], "links": [ { "rel": "http://webfinger.net/rel/profile-page", "type": "text/html", "href": "https://mastodon.social/@reiver" }, { "rel": "self", "type": "application/activity+json", "href": "https://mastodon.social/users/reiver" }, { "rel": "http://ostatus.org/schema/1.0/subscribe", "template": "https://mastodon.social/authorize_interaction?uri={uri}" }, { "rel": "https://w3id.org/fep/3b86/Create", "template": "https://mastodon.social/share?text={content}" }, { "rel": "https://w3id.org/fep/3b86/Object", "template": "https://mastodon.social/authorize_interaction?uri={object}" }, { "rel": "http://webfinger.net/rel/avatar", "type": "image/png", "href": "https://files.mastodon.social/accounts/avatars/108/116/990/725/247/731/original/2e097b7812894201.png" } ] }

@silverpill@mitra.social

FEP-8b32 (Object Integrity Proofs) is getting updated: https://codeberg.org/fediverse/fep/pulls/839

I added two new requirements:

- Objects identified using fragment IDs SHOULD NOT have integrity proofs. It is enough to secure the top-level document.
- Verifiers SHOULD ignore proofs that use unsupported algorithms and verification methods. This requirement provides forward compatibility, which is important because sooner or later we will need to use different algorithms.

#fep_8b32 #fep #fedidev

mitra.social

Mitra - Federated social network

Federated social network

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

2/

The game will be social.

Your player gains things in the game by being followed (and perhaps following back) Actors on the Fediverse.

For example, you would have a team. The characters on your team would be Fedivese Actors / accounts. This could be bot accounts, but could also be the accounts of other people playing the game.

Same with energy sources, special powers, etc — all Fedivese Actors / accounts.

@reiver@mastodon.social

I think Mastodon will strip image attachments from ActivityPub 'Question' objects.

That is too bad.

That means even if you create an 'Question' with 'Image' attachments elsewhere, you still won't see them in Mastodon (or in the Mastodon client-server API)

I guess the work-around is to post a 'Note' with an 'Image' attachment(s), and then reply to it with a 'Question'. That feels clunkier, but doable

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

If one was to create a Fediverse Game using the ActivityPub 'Question' — It would be nice if people could play it from a regular Fediverse client. But, you could also offer a game-specific client that allows for a richer game experience. #ActivitiyPub #ActivityStream #FediDev #FediGames #Games #VideoGames

@reiver@mastodon.social

If one was to create a Fediverse Game using the ActivityPub 'Question' —

It would be nice if people could play it from a regular Fediverse client.

But, you could also offer a game-specific client that allows for a richer game experience.

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

Attached: 1 image I think you could create a (certain type of) video game using the ActivityPub 'Question'. https://www.w3.org/TR/activitystreams-vocabulary/#dfn-question #ActivitiyPub #ActivityStream #FediDev #FediGames #Games #VideoGames

@reiver@mastodon.social

One decision to make if one was to create a Fediverse Game using the ActivityPub 'Question' —

Do you just create a bot that connect to a Fediverse server (such as a Mastodon server)?

Or, do you create the Fediverse server, too?

...

There are pros and cons each way.

The former is simpler to build in many ways.

The latter lets you add as many poll choices as you want, and even add extra JSON-LD name-spaces.

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

Attached: 1 image I think you could create a (certain type of) video game using the ActivityPub 'Question'. https://www.w3.org/TR/activitystreams-vocabulary/#dfn-question #ActivitiyPub #ActivityStream #FediDev #FediGames #Games #VideoGames

@box464@mastodon.social

I got access to the iOS version of @HolosSocial and I'm excited to give it a go.

I'm wanting to setup my own relay, but not sure I can wait until next weekend to try it out! Might break down and setup a temp account on holos.social.

@box464@mastodon.social

I got access to the iOS version of @HolosSocial and I'm excited to give it a go.

I'm wanting to setup my own relay, but not sure I can wait until next weekend to try it out! Might break down and setup a temp account on holos.social.

@box464@mastodon.social

I got access to the iOS version of @HolosSocial and I'm excited to give it a go.

I'm wanting to setup my own relay, but not sure I can wait until next weekend to try it out! Might break down and setup a temp account on holos.social.

@box464@mastodon.social

I got access to the iOS version of @HolosSocial and I'm excited to give it a go.

I'm wanting to setup my own relay, but not sure I can wait until next weekend to try it out! Might break down and setup a temp account on holos.social.

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

1/

I have been thinking about payments on the Fediverse (for a while).

If we wanted to come up with a new URI scheme — basically something like acct URI with paths. I think we should also support URL queries, too.

I think it will make (downstream) resolution steps easier.

We'd have to pick a scheme now. For now, I'll just use "flow" for now.

So this:

@joeblow@example·com/a/b/c?d=e

Would turn to:

flow:joeblow@example·com/a/b/c?d=e

As…

RE: mastodon.social/@reiver/116449

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

1/ I have been thinking about payments on the Fediverse (for a while). Let's talk more about what you give WebFinger if you are trying to send an asset to a Fediverse ID with a path such as: @joeblow@example·com/prd123 Or, the asset flow address is somethinglike: %joeblow@example·com/prd123 (Assuming we use the "%" character as the prefix.) ... RE: https://mastodon.social/@reiver/116449077260537230 #AssetFlow #FediDev

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

2/

Fediverse IDs get turned into acct URIs before they given to WebFinger.

But, acct URIs don't support paths.

So, what do you give WebFinger if you Fediverse ID has a path.

As I mentioned before, either you (1) have to use some other type of URI with WebFinger, or (2) use an acct URI with WebFinger and have the path come into play at some point AFTER the WebFinger step.

Or, do both. First trying №1, and if that fails trying №2.

So...

RE: mastodon.social/@reiver/116449

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

1/ I have been thinking about payments on the Fediverse (for a while). If you want to send an asset to a Fediverse ID such as: @joeblow@example·com Or, and asset flow address such as: %joeblow@example·com (Assuming we use the "%" character as the prefix.) Then how to resolve that is straightforward. I.e., change it to an acct URI, run it through WebFinger, get the activity URL from the JRD WebFinger gave you, etc. But... RE: https://mastodon.social/@reiver/116449023354451866 #AssetFlow #FediDev

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

1/

I have been thinking about payments on the Fediverse (for a while).

If you want to send an asset to a Fediverse ID such as:

@joeblow@example·com

Or, and asset flow address such as:

%joeblow@example·com

(Assuming we use the "%" character as the prefix.)

Then how to resolve that is straightforward.

I.e., change it to an acct URI, run it through WebFinger, get the activity URL from the JRD WebFinger gave you, etc.

But...

RE: mastodon.social/@reiver/116449

mastodon.social

@reiver ⊼ (Charles) :batman: (@reiver@mastodon.social)

I have been thinking about payments on the Fediverse (for a while). Another thing I have been wondering about — should the asset flow destination address be a Fediverse ID such as: @joeblow@example·com Or maybe, should the first character change to something else. For example: %joeblow@example·com (Or some other character prefix.) There are pros and cons for doing it each way. (Could always support both.) RE: https://mastodon.social/@reiver/116446803054821529 #AssetFlow #FediDev

@reiver@mastodon.social
@reiver@mastodon.social

I have been thinking about payments on the Fediverse (for a while).

One thing you'd want is to be a able to send an asset to a Fediverse ID.

For example, send $5 to:

@joeblow@example·com

Resolving a Fediverse ID to something you can send an asset to is straight-forward.

One challenge is, what if a user wants to have multiple destinations?

What should the notation for that be?

@joeblow@example·com/prd123

@joeblow+prd123@example·com

@joeblow@example·com?prd123

@reiver@mastodon.social

I wish ActivityPub extensions would stop putting stuff in "attachment".

When new developers come to ActivityPub they expect dot-notation to work when working with JSON. Ex:

actor.publicKey.publicKeyPem

Some of them later discover that JSON-LD is not JSON (despite having "JSON" in its name). And, while dot-notation sometimes works, arrays can appear in unexpected places, etc.

Putting stuff in "attachment" makes it so dot-notation never works. It is worse than the JSON-LD problem.

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

We're working on a new for : Building a Federated Blog with Astro!

It walks you through creating a hybrid blog—static Markdown posts powered by content collections, with federation layered on top. By the end, your blog will be followable from Mastodon, send Create/Update/Delete activities when you publish or edit posts, and display replies as comments.

Preview the draft here: https://d180af62.fedify.pages.dev/tutorial/astro-blog.

We'd love your feedback—especially if you spot anything incorrect, unclear, or missing. Please leave comments on the GitHub PR #695 or issue #691.

github.com

Build federated blog example and tutorial (Astro + Bun) · Issue #691 · fedify-dev/fedify

Sub-issue of #99. Deliver the federated blog scenario as a paired example repository and fedify.dev tutorial, as set in #99 (comment). Scenario A single-author federated blog where posts are author...

@benpate@mastodon.social

Hey community:

Activity Intents are now supported (or soon to be) by the biggest apps out there: WordPress, Mastodon, and Loops (plus a tiny ones, like Forte, streams, PieFed, and Emissary)

It's a fantastic step that brings the social web closer together 🍻

But there's more to do.

What happens if I want to `Follow` but don't already have an account? Our UX still has gaps.

Please check out FEP-7b29 ~ a simple way to connect the dots all the way through new user signup

@box464@mastodon.social

Holos Discover added a couple of new filters to its API search - minimum likes and minimum boosts. Additionally, you can pass contentType=image|video|audio|text|all|none to the `/api/search` endpoint and it works.

Interesting combinations, which I took advantage of for the Open Web Image Gallery.

gallery.box464.social/?adapter

gallery.box464.social

Open Web Gallery

An image gallery showcasing photography and artwork from Mastodon, BlueSky, Lemmy, PieFed, Vernissage, and other open web platforms

@box464@mastodon.social

Holos Discover added a couple of new filters to its API search - minimum likes and minimum boosts. Additionally, you can pass contentType=image|video|audio|text|all|none to the `/api/search` endpoint and it works.

Interesting combinations, which I took advantage of for the Open Web Image Gallery.

gallery.box464.social/?adapter

gallery.box464.social

Open Web Gallery

An image gallery showcasing photography and artwork from Mastodon, BlueSky, Lemmy, PieFed, Vernissage, and other open web platforms

@benpate@mastodon.social

Hey community:

Activity Intents are now supported (or soon to be) by the biggest apps out there: WordPress, Mastodon, and Loops (plus a tiny ones, like Forte, streams, PieFed, and Emissary)

It's a fantastic step that brings the social web closer together 🍻

But there's more to do.

What happens if I want to `Follow` but don't already have an account? Our UX still has gaps.

Please check out FEP-7b29 ~ a simple way to connect the dots all the way through new user signup

@box464@mastodon.social

Holos Discover added a couple of new filters to its API search - minimum likes and minimum boosts. Additionally, you can pass contentType=image|video|audio|text|all|none to the `/api/search` endpoint and it works.

Interesting combinations, which I took advantage of for the Open Web Image Gallery.

gallery.box464.social/?adapter

gallery.box464.social

Open Web Gallery

An image gallery showcasing photography and artwork from Mastodon, BlueSky, Lemmy, PieFed, Vernissage, and other open web platforms

@box464@mastodon.social

Holos Discover added a couple of new filters to its API search - minimum likes and minimum boosts. Additionally, you can pass contentType=image|video|audio|text|all|none to the `/api/search` endpoint and it works.

Interesting combinations, which I took advantage of for the Open Web Image Gallery.

gallery.box464.social/?adapter

gallery.box464.social

Open Web Gallery

An image gallery showcasing photography and artwork from Mastodon, BlueSky, Lemmy, PieFed, Vernissage, and other open web platforms

@box464@mastodon.social

Holos Discover added a couple of new filters to its API search - minimum likes and minimum boosts. Additionally, you can pass contentType=image|video|audio|text|all|none to the `/api/search` endpoint and it works.

Interesting combinations, which I took advantage of for the Open Web Image Gallery.

gallery.box464.social/?adapter

gallery.box464.social

Open Web Gallery

An image gallery showcasing photography and artwork from Mastodon, BlueSky, Lemmy, PieFed, Vernissage, and other open web platforms

@benpate@mastodon.social

Hey community:

Activity Intents are now supported (or soon to be) by the biggest apps out there: WordPress, Mastodon, and Loops (plus a tiny ones, like Forte, streams, PieFed, and Emissary)

It's a fantastic step that brings the social web closer together 🍻

But there's more to do.

What happens if I want to `Follow` but don't already have an account? Our UX still has gaps.

Please check out FEP-7b29 ~ a simple way to connect the dots all the way through new user signup

@benpate@mastodon.social

Hey community:

Activity Intents are now supported (or soon to be) by the biggest apps out there: WordPress, Mastodon, and Loops (plus a tiny ones, like Forte, streams, PieFed, and Emissary)

It's a fantastic step that brings the social web closer together 🍻

But there's more to do.

What happens if I want to `Follow` but don't already have an account? Our UX still has gaps.

Please check out FEP-7b29 ~ a simple way to connect the dots all the way through new user signup

@mariusor@metalhead.club

I've started working on generating RFC9421 compatible HTTP-Signatures in about a week and a half ago, but it felt more like a month.

Writing tests for the client module took the bulk of this time and it was a proper slog. We did manage to increase code coverage from under 20% to 80% plus.

This makes it a bit harder to migrate to a new API when the future version 1 of the library will be tagged, but the changes I have planned shouldn't be insurmountable.

Now I just need to implement the verification, and I'll be done with what is a very large milestone for the library. :goose_hacker:

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

Started laying out a rough plan for implementing FEP-ef61: Portable Objects in —server-independent identities backed by , multi-server replication, and client-side signing. It's going to be a long road (13 tasks across 5 phases, with a few open questions that need answering before we even begin), but I think it's worth doing right.

https://github.com/fedify-dev/fedify/issues/288#issuecomment-3971459585

github.com

FEP-ef61: Portable Objects · Issue #288 · fedify-dev/fedify

Add support for FEP-ef61 for creating server indepent fediverse applications This FEP are depend on 8b32 which already available in Fedify

@hongminhee@hollo.social

Started laying out a rough plan for implementing FEP-ef61: Portable Objects in —server-independent identities backed by , multi-server replication, and client-side signing. It's going to be a long road (13 tasks across 5 phases, with a few open questions that need answering before we even begin), but I think it's worth doing right.

https://github.com/fedify-dev/fedify/issues/288#issuecomment-3971459585

github.com

FEP-ef61: Portable Objects · Issue #288 · fedify-dev/fedify

Add support for FEP-ef61 for creating server indepent fediverse applications This FEP are depend on 8b32 which already available in Fedify

@Profpatsch@mastodon.xyz
@Profpatsch@mastodon.xyz
@Profpatsch@mastodon.xyz
@julian@fietkau.social

Could be potentially nice for fediverse server testing, as more implementations make the jump to final RFC 9421 HTTP signatures.

On the flip side, ever more complex curl invocations (here: Accept header plus signature fields plus key file, presumably) suggest use of more specialized CLI tools, such as provided by @fedify, or at least scripts/aliases.

Speaking of RFC 9421, which notable fediverse implementations can't handle it yet? Anyone keeping track?

mastodon.social

daniel:// stenberg:// (@bagder@mastodon.social)

RFC 9421 HTTP Message Signatures support in #curl maybe? https://github.com/curl/curl/pull/21239

@julian@fietkau.social

Could be potentially nice for fediverse server testing, as more implementations make the jump to final RFC 9421 HTTP signatures.

On the flip side, ever more complex curl invocations (here: Accept header plus signature fields plus key file, presumably) suggest use of more specialized CLI tools, such as provided by @fedify, or at least scripts/aliases.

Speaking of RFC 9421, which notable fediverse implementations can't handle it yet? Anyone keeping track?

mastodon.social

daniel:// stenberg:// (@bagder@mastodon.social)

RFC 9421 HTTP Message Signatures support in #curl maybe? https://github.com/curl/curl/pull/21239

@julian@fietkau.social

Could be potentially nice for fediverse server testing, as more implementations make the jump to final RFC 9421 HTTP signatures.

On the flip side, ever more complex curl invocations (here: Accept header plus signature fields plus key file, presumably) suggest use of more specialized CLI tools, such as provided by @fedify, or at least scripts/aliases.

Speaking of RFC 9421, which notable fediverse implementations can't handle it yet? Anyone keeping track?

mastodon.social

daniel:// stenberg:// (@bagder@mastodon.social)

RFC 9421 HTTP Message Signatures support in #curl maybe? https://github.com/curl/curl/pull/21239

@julian@fietkau.social

Could be potentially nice for fediverse server testing, as more implementations make the jump to final RFC 9421 HTTP signatures.

On the flip side, ever more complex curl invocations (here: Accept header plus signature fields plus key file, presumably) suggest use of more specialized CLI tools, such as provided by @fedify, or at least scripts/aliases.

Speaking of RFC 9421, which notable fediverse implementations can't handle it yet? Anyone keeping track?

mastodon.social

daniel:// stenberg:// (@bagder@mastodon.social)

RFC 9421 HTTP Message Signatures support in #curl maybe? https://github.com/curl/curl/pull/21239

@julian@fietkau.social

Could be potentially nice for fediverse server testing, as more implementations make the jump to final RFC 9421 HTTP signatures.

On the flip side, ever more complex curl invocations (here: Accept header plus signature fields plus key file, presumably) suggest use of more specialized CLI tools, such as provided by @fedify, or at least scripts/aliases.

Speaking of RFC 9421, which notable fediverse implementations can't handle it yet? Anyone keeping track?

mastodon.social

daniel:// stenberg:// (@bagder@mastodon.social)

RFC 9421 HTTP Message Signatures support in #curl maybe? https://github.com/curl/curl/pull/21239

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@reiver@mastodon.social

ActivityPub outboxes are the new RSS / Atom / WebFeed.

You can just read from them to get a JSON feed of someone's posts.

I.e., you do NOT have to implement the full suite of Fediverse protocols, or Follow, or run your own server, or anything else to get someone's posts on the Fediverse — just read from their outbox.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

2026(타이베이, 8월 8–9일) Fediverse & Social Web 트랙 발표자 모집이 시작되었습니다! , , 오픈 소셜 웹 관련 주제라면 무엇이든 환영합니다. 마감은 5월 9일이고, COSCUP 참가는 무료입니다.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ko

hackers.pub

COSCUP 2026 연합우주 & 소셜 웹 트랙: 발표자 모집

한국 연합우주 개발자 모임(FediDev KR)과 일본의 FediLUG가 2026년 대만 타이베이에서 개최되는 COSCUP 2026의 연합우주(Fediverse) 및 소셜 웹 트랙 발표자를 모집합니다. 이번 트랙은 액티비티펍(ActivityPub) 프로토콜 구현, 전용 클라이언트 및 라이브러리 개발, 인스턴스 운영 노하우, 그리고 연합 커뮤니티의 거버넌스와 같은 다양한 주제를 폭넓게 다룹니다. 동아시아 주요 오픈소스 컨퍼런스에서 처음으로 열리는 연합우주 전용 세션인 만큼, 개발자와 운영자들이 모여 기술적 통찰을 나누고 지역 커뮤니티의 결속을 다지는 중요한 기회가 될 것입니다.

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

2026(타이베이, 8월 8–9일) Fediverse & Social Web 트랙 발표자 모집이 시작되었습니다! , , 오픈 소셜 웹 관련 주제라면 무엇이든 환영합니다. 마감은 5월 9일이고, COSCUP 참가는 무료입니다.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ko

hackers.pub

COSCUP 2026 연합우주 & 소셜 웹 트랙: 발표자 모집

한국 연합우주 개발자 모임(FediDev KR)과 일본의 FediLUG가 2026년 대만 타이베이에서 개최되는 COSCUP 2026의 연합우주(Fediverse) 및 소셜 웹 트랙 발표자를 모집합니다. 이번 트랙은 액티비티펍(ActivityPub) 프로토콜 구현, 전용 클라이언트 및 라이브러리 개발, 인스턴스 운영 노하우, 그리고 연합 커뮤니티의 거버넌스와 같은 다양한 주제를 폭넓게 다룹니다. 동아시아 주요 오픈소스 컨퍼런스에서 처음으로 열리는 연합우주 전용 세션인 만큼, 개발자와 운영자들이 모여 기술적 통찰을 나누고 지역 커뮤니티의 결속을 다지는 중요한 기회가 될 것입니다.

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

2026(타이베이, 8월 8–9일) Fediverse & Social Web 트랙 발표자 모집이 시작되었습니다! , , 오픈 소셜 웹 관련 주제라면 무엇이든 환영합니다. 마감은 5월 9일이고, COSCUP 참가는 무료입니다.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ko

hackers.pub

COSCUP 2026 연합우주 & 소셜 웹 트랙: 발표자 모집

한국 연합우주 개발자 모임(FediDev KR)과 일본의 FediLUG가 2026년 대만 타이베이에서 개최되는 COSCUP 2026의 연합우주(Fediverse) 및 소셜 웹 트랙 발표자를 모집합니다. 이번 트랙은 액티비티펍(ActivityPub) 프로토콜 구현, 전용 클라이언트 및 라이브러리 개발, 인스턴스 운영 노하우, 그리고 연합 커뮤니티의 거버넌스와 같은 다양한 주제를 폭넓게 다룹니다. 동아시아 주요 오픈소스 컨퍼런스에서 처음으로 열리는 연합우주 전용 세션인 만큼, 개발자와 운영자들이 모여 기술적 통찰을 나누고 지역 커뮤니티의 결속을 다지는 중요한 기회가 될 것입니다.

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

2026(台北、8月8–9日)Fediverse & Social WebトラックのCFPが始まりました!、オープンなソーシャルウェブに関わる方のご応募をお待ちしています。締め切りは5月9日、参加費は無料です。

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ja

hackers.pub

COSCUP 2026 フェディバース & ソーシャルウェブ トラック:発表者募集

COSCUP 2026にて、FediLUGとFediDev KRが共同で運営する「フェディバース & ソーシャルウェブ」トラックの発表提案募集が開始されました。東アジアの主要なオープンソースカンファレンスで初となるこの専門トラックでは、ActivityPubの実装や関連ツール、インスタンス運営の技術的知見からガバナンス等の社会的側面まで、分散型SNSに関する広範なトピックを対象としています。2026年5月9日の募集締め切りに向け、分散型ソーシャルウェブの発展に寄与する多様な知見の集結が期待されており、地域の開発者コミュニティにおける技術交流と連携を深める重要な機会となります。

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

2026(타이베이, 8월 8–9일) Fediverse & Social Web 트랙 발표자 모집이 시작되었습니다! , , 오픈 소셜 웹 관련 주제라면 무엇이든 환영합니다. 마감은 5월 9일이고, COSCUP 참가는 무료입니다.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ko

hackers.pub

COSCUP 2026 연합우주 & 소셜 웹 트랙: 발표자 모집

한국 연합우주 개발자 모임(FediDev KR)과 일본의 FediLUG가 2026년 대만 타이베이에서 개최되는 COSCUP 2026의 연합우주(Fediverse) 및 소셜 웹 트랙 발표자를 모집합니다. 이번 트랙은 액티비티펍(ActivityPub) 프로토콜 구현, 전용 클라이언트 및 라이브러리 개발, 인스턴스 운영 노하우, 그리고 연합 커뮤니티의 거버넌스와 같은 다양한 주제를 폭넓게 다룹니다. 동아시아 주요 오픈소스 컨퍼런스에서 처음으로 열리는 연합우주 전용 세션인 만큼, 개발자와 운영자들이 모여 기술적 통찰을 나누고 지역 커뮤니티의 결속을 다지는 중요한 기회가 될 것입니다.

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@hongminhee@hollo.social

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

2026(台北、8月8–9日)Fediverse & Social WebトラックのCFPが始まりました!、オープンなソーシャルウェブに関わる方のご応募をお待ちしています。締め切りは5月9日、参加費は無料です。

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ja

hackers.pub

COSCUP 2026 フェディバース & ソーシャルウェブ トラック:発表者募集

COSCUP 2026にて、FediLUGとFediDev KRが共同で運営する「フェディバース & ソーシャルウェブ」トラックの発表提案募集が開始されました。東アジアの主要なオープンソースカンファレンスで初となるこの専門トラックでは、ActivityPubの実装や関連ツール、インスタンス運営の技術的知見からガバナンス等の社会的側面まで、分散型SNSに関する広範なトピックを対象としています。2026年5月9日の募集締め切りに向け、分散型ソーシャルウェブの発展に寄与する多様な知見の集結が期待されており、地域の開発者コミュニティにおける技術交流と連携を深める重要な機会となります。

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

2026(台北、8月8–9日)Fediverse & Social WebトラックのCFPが始まりました!、オープンなソーシャルウェブに関わる方のご応募をお待ちしています。締め切りは5月9日、参加費は無料です。

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ja

hackers.pub

COSCUP 2026 フェディバース & ソーシャルウェブ トラック:発表者募集

COSCUP 2026にて、FediLUGとFediDev KRが共同で運営する「フェディバース & ソーシャルウェブ」トラックの発表提案募集が開始されました。東アジアの主要なオープンソースカンファレンスで初となるこの専門トラックでは、ActivityPubの実装や関連ツール、インスタンス運営の技術的知見からガバナンス等の社会的側面まで、分散型SNSに関する広範なトピックを対象としています。2026年5月9日の募集締め切りに向け、分散型ソーシャルウェブの発展に寄与する多様な知見の集結が期待されており、地域の開発者コミュニティにおける技術交流と連携を深める重要な機会となります。

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

2026(台北、8月8–9日)Fediverse & Social WebトラックのCFPが始まりました!、オープンなソーシャルウェブに関わる方のご応募をお待ちしています。締め切りは5月9日、参加費は無料です。

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ja

hackers.pub

COSCUP 2026 フェディバース & ソーシャルウェブ トラック:発表者募集

COSCUP 2026にて、FediLUGとFediDev KRが共同で運営する「フェディバース & ソーシャルウェブ」トラックの発表提案募集が開始されました。東アジアの主要なオープンソースカンファレンスで初となるこの専門トラックでは、ActivityPubの実装や関連ツール、インスタンス運営の技術的知見からガバナンス等の社会的側面まで、分散型SNSに関する広範なトピックを対象としています。2026年5月9日の募集締め切りに向け、分散型ソーシャルウェブの発展に寄与する多様な知見の集結が期待されており、地域の開発者コミュニティにおける技術交流と連携を深める重要な機会となります。

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

2026(타이베이, 8월 8–9일) Fediverse & Social Web 트랙 발표자 모집이 시작되었습니다! , , 오픈 소셜 웹 관련 주제라면 무엇이든 환영합니다. 마감은 5월 9일이고, COSCUP 참가는 무료입니다.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ko

hackers.pub

COSCUP 2026 연합우주 & 소셜 웹 트랙: 발표자 모집

한국 연합우주 개발자 모임(FediDev KR)과 일본의 FediLUG가 2026년 대만 타이베이에서 개최되는 COSCUP 2026의 연합우주(Fediverse) 및 소셜 웹 트랙 발표자를 모집합니다. 이번 트랙은 액티비티펍(ActivityPub) 프로토콜 구현, 전용 클라이언트 및 라이브러리 개발, 인스턴스 운영 노하우, 그리고 연합 커뮤니티의 거버넌스와 같은 다양한 주제를 폭넓게 다룹니다. 동아시아 주요 오픈소스 컨퍼런스에서 처음으로 열리는 연합우주 전용 세션인 만큼, 개발자와 운영자들이 모여 기술적 통찰을 나누고 지역 커뮤니티의 결속을 다지는 중요한 기회가 될 것입니다.

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

2026(타이베이, 8월 8–9일) Fediverse & Social Web 트랙 발표자 모집이 시작되었습니다! , , 오픈 소셜 웹 관련 주제라면 무엇이든 환영합니다. 마감은 5월 9일이고, COSCUP 참가는 무료입니다.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ko

hackers.pub

COSCUP 2026 연합우주 & 소셜 웹 트랙: 발표자 모집

한국 연합우주 개발자 모임(FediDev KR)과 일본의 FediLUG가 2026년 대만 타이베이에서 개최되는 COSCUP 2026의 연합우주(Fediverse) 및 소셜 웹 트랙 발표자를 모집합니다. 이번 트랙은 액티비티펍(ActivityPub) 프로토콜 구현, 전용 클라이언트 및 라이브러리 개발, 인스턴스 운영 노하우, 그리고 연합 커뮤니티의 거버넌스와 같은 다양한 주제를 폭넓게 다룹니다. 동아시아 주요 오픈소스 컨퍼런스에서 처음으로 열리는 연합우주 전용 세션인 만큼, 개발자와 운영자들이 모여 기술적 통찰을 나누고 지역 커뮤니티의 결속을 다지는 중요한 기회가 될 것입니다.

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

2026(台北、8月8–9日)Fediverse & Social WebトラックのCFPが始まりました!、オープンなソーシャルウェブに関わる方のご応募をお待ちしています。締め切りは5月9日、参加費は無料です。

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ja

hackers.pub

COSCUP 2026 フェディバース & ソーシャルウェブ トラック:発表者募集

COSCUP 2026にて、FediLUGとFediDev KRが共同で運営する「フェディバース & ソーシャルウェブ」トラックの発表提案募集が開始されました。東アジアの主要なオープンソースカンファレンスで初となるこの専門トラックでは、ActivityPubの実装や関連ツール、インスタンス運営の技術的知見からガバナンス等の社会的側面まで、分散型SNSに関する広範なトピックを対象としています。2026年5月9日の募集締め切りに向け、分散型ソーシャルウェブの発展に寄与する多様な知見の集結が期待されており、地域の開発者コミュニティにおける技術交流と連携を深める重要な機会となります。

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

2026(타이베이, 8월 8–9일) Fediverse & Social Web 트랙 발표자 모집이 시작되었습니다! , , 오픈 소셜 웹 관련 주제라면 무엇이든 환영합니다. 마감은 5월 9일이고, COSCUP 참가는 무료입니다.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp-ko

hackers.pub

COSCUP 2026 연합우주 & 소셜 웹 트랙: 발표자 모집

한국 연합우주 개발자 모임(FediDev KR)과 일본의 FediLUG가 2026년 대만 타이베이에서 개최되는 COSCUP 2026의 연합우주(Fediverse) 및 소셜 웹 트랙 발표자를 모집합니다. 이번 트랙은 액티비티펍(ActivityPub) 프로토콜 구현, 전용 클라이언트 및 라이브러리 개발, 인스턴스 운영 노하우, 그리고 연합 커뮤니티의 거버넌스와 같은 다양한 주제를 폭넓게 다룹니다. 동아시아 주요 오픈소스 컨퍼런스에서 처음으로 열리는 연합우주 전용 세션인 만큼, 개발자와 운영자들이 모여 기술적 통찰을 나누고 지역 커뮤니티의 결속을 다지는 중요한 기회가 될 것입니다.

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

The for the Fediverse & Social Web track at COSCUP 2026 (Taipei, Aug 8–9) is now open! If you're working on , the , or anything in the open social web space, we'd love to hear from you. The deadline is May 9. is free to attend.

👉 https://hackers.pub/@fedidevkr/2026/fediverse-social-web-track-at-coscup-2026-cfp

(Boosts appreciated!)

hackers.pub

Fediverse & Social Web track at COSCUP 2026: call for participation

FediDev KR and FediLUG are launching the first dedicated Fediverse & Social Web track at COSCUP 2026 in Taipei, creating a landmark gathering point for the open social web community in East Asia. This technical track seeks session proposals covering ActivityPub implementations, client development, moderation tooling, and the complex governance of federated communities. Participants can contribute insights on instance administration and the broader interoperable frameworks of decentralized protocols during the two-day conference in August. With the submission window closing on May 9, 2026, this initiative marks a significant milestone in fostering regional collaboration and advancing the technical evolution of the decentralized social web.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

他の言語で読む:English(英語)、한국어(韓国語)。


FediLUGFediDev KRは、COSCUP 2026 フェディバース & ソーシャルウェブトラックを開設し、発表の提案を募集します。

COSCUP(Conference for Open Source Coders, Users, and Promoters)は、台湾・台北で毎年開催される無料のオープンソースカンファレンスです。東アジア版のFOSDEMとイメージしていただければわかりやすいかと思います。今年は8月8–9日に国立台湾科技大学にてUbuCon Asia 2026と共同開催されます。

フェディバース & ソーシャルウェブトラックは1日間、計6時間を予定しています。東アジアの主要なオープンソースカンファレンスで開かれる初のフェディバース専用トラックとして、東アジアのフェディバースコミュニティが定期的に集まる場になることを願っています。

発表形式

発表時間のデフォルトは30分です。それより長い・短い時間が必要な場合は、提出時に希望する時間をお知らせください。

トピック

フェディバースおよびオープンなソーシャルウェブに関するテーマであれば、幅広く歓迎します。

  • ActivityPub または関連プロトコルの実装
  • ActivityPub 対応ソフトウェア向けクライアント
  • フェディバース開発のためのライブラリ、ツールキット、フレームワーク
  • 検索・オンボーディング・モデレーションなどの支援サービス
  • インスタンスの運営・管理
  • ガバナンス、ポリシー、連合コミュニティ運営の社会的側面
  • より広いオープンソーシャルウェブと相互運用性

重要な日程

  • 募集開始:2026年3月28日
  • 募集締め切り:2026年5月9日(AoE:世界のどのタイムゾーンでも当日中)
  • 採否通知:2026年6月9日
  • カンファレンス:2026年8月8–9日

提出方法

https://pretalx.coscup.org/coscup-2026/cfpから提出できます。トラックのドロップダウンでFediverse & Social Webを選択してください。

提案は英語または中国語でご記入ください。COSCUPはセッションの説明を英語と中国語の両言語で掲載しますが、翻訳は採択後に行われるため、提出時に両言語を用意する必要はありません。

すべてのセッションは録画され、CC BY-SA 4.0のもとで公開されます。録画や当該条件での公開が難しい内容が含まれる場合は、提出時にその旨をお知らせください。

行動規範

すべての発表者と参加者は、COSCUP 行動規範(英文)を確認し、遵守してください。

お問い合わせ

トラック、トピック、フェディバース全般に関するご質問は、contact@fedidev.krまたはフェディバースアカウント「@fedidevkr」までお気軽にどうぞ。

다른 언어로 읽기: English (영어), 日本語 (일본어).


한국 연합우주 개발자 모임(FediDev KR)과 FediLUG(일본)이 COSCUP 2026 연합우주(fediverse) & 소셜 웹 트랙을 열고, 발표 제안을 받습니다.

COSCUP은 매년 대만 타이베이에서 열리는 참가비 무료의 자유·오픈 소스 소프트웨어 컨퍼런스입니다. FOSDEM의 동아시아판이라고 생각하시면 됩니다. 올해는 8월 8–9일 국립대만과학기술대학교에서 UbuCon Asia 2026과 공동 개최됩니다.

연합우주 & 소셜 웹 트랙은 하루 종일, 총 6시간 진행됩니다. 동아시아의 주요 오픈소스 컨퍼런스에서 열리는 첫 번째 연합우주 전용 트랙으로, 이 자리가 동아시아 연합우주 커뮤니티의 정기적인 모임으로 이어지기를 바랍니다.

발표 형식

기본 발표 시간은 30분입니다. 더 길거나 짧은 시간이 필요하다면 제출 시 희망 시간을 적어주세요.

주제

연합우주 및 오픈 소셜 웹과 관련된 주제라면 무엇이든 환영합니다.

  • ActivityPub 또는 관련 프로토콜 구현
  • ActivityPub 기반 소프트웨어용 클라이언트
  • 연합우주 개발을 위한 라이브러리, 툴킷, 프레임워크
  • 검색, 온보딩, 모더레이션 등 지원 서비스
  • 인스턴스 운영 및 관리
  • 거버넌스, 정책, 연합 커뮤니티 운영의 사회적 측면
  • 더 넓은 의미의 오픈 소셜 웹과 상호운용성

주요 일정

  • 제출 시작: 2026년 3월 28일
  • 제출 마감: 2026년 5월 9일 (AoE, 세계 어느 시간대 기준으로도 해당 날짜 내)
  • 결과 통보: 2026년 6월 9일
  • 컨퍼런스: 2026년 8월 8–9일

제출 방법

https://pretalx.coscup.org/coscup-2026/cfp에서 제출하실 수 있습니다. 트랙 드롭다운에서 Fediverse & Social Web을 선택해 주세요.

발표 제안은 영어 또는 중국어로 작성해 주세요. COSCUP은 세션 설명을 영어와 중국어로 함께 게시하지만, 번역은 채택 이후에 이루어지므로 제출 시 두 언어를 모두 작성할 필요는 없습니다.

모든 세션은 녹화되어 CC BY-SA 4.0으로 공개됩니다. 녹화하거나 해당 조건으로 공개할 수 없는 내용이 포함되어 있다면 제출 시 명시해 주세요.

행동 강령

모든 발표자와 참가자는 COSCUP 행동 강령(영문)을 숙지하고 준수해야 합니다.

문의

트랙, 주제, 연합우주 전반에 대한 문의는 contact@fedidev.kr 또는 연합우주 계정 @fedidevkr 쪽으로 연락해 주세요.

Read it in other languages: 日本語 (Japanese), 한국어 (Korean).


FediDev KR and FediLUG (Japan) are pleased to announce the Fediverse & Social Web track at COSCUP 2026, and invite participants to submit proposals for talks.

COSCUP (Conference for Open Source Coders, Users, and Promoters) is a free, community-run open source conference held annually in Taipei, Taiwan. Think FOSDEM, but in East Asia. This year it takes place August 8–9 at the National Taiwan University of Science and Technology, and is co-hosted with UbuCon Asia 2026.

The Fediverse & Social Web track runs for a full day, six hours in total. It is the first dedicated fediverse track at a major open source conference in East Asia, and we hope it becomes a regular gathering point for the fediverse community in the region.

Format

The default talk length is 30 minutes. If you need more or less time, note your preferred length when submitting.

Topics

We welcome proposals on anything related to the fediverse and the open social web, including:

  • Implementations of ActivityPub or related protocols
  • Clients for ActivityPub-enabled software
  • Libraries, toolkits, and frameworks for fediverse development
  • Supporting services: search, onboarding, moderation tooling
  • Instance administration and operations
  • Governance, policy, and the social dimensions of running federated communities
  • The broader open social web and interoperability

Important dates

  • Submission opens: March 28, 2026
  • Submission deadline: May 9, 2026 (AoE)
  • Acceptance notifications: June 9, 2026
  • Conference: August 8–9, 2026

Submissions

Submit proposals at https://pretalx.coscup.org/coscup-2026/cfp. Select Fediverse & Social Web from the track dropdown.

You can write your proposal in English or Chinese. COSCUP publishes session descriptions bilingually in English and Chinese, but that translation happens after acceptance; you don't need to provide both languages when submitting.

All sessions will be recorded and released under CC BY-SA 4.0. If your talk contains material that cannot be recorded or released under those terms, please note this in your submission.

Code of conduct

All speakers and attendees are expected to follow the COSCUP Code of Conduct.

Contact

Questions about the track, topics, or the fediverse in general are welcome at contact@fedidev.kr or @fedidevkr on the fediverse.

@reiver@mastodon.social

I am outputting ActivityPub/ActivityStreams content for the listing of what is in a directory.

Think of it as the AP/AS version of output from the `ls` command.

AP/AS has a whole bunch of stuff that can be used to represents files. Even sub-types of files

w3.org/TR/activitystreams-voca

And, while AP/AS has 'Collection' (and 'CollectionPage') —

w3.org/TR/activitystreams-voca

AP/AS doesn't have a 'Directory' type (as a sub-type of 'Collection')

w3.org

Activity Vocabulary

@reiver@mastodon.social

I am outputting ActivityPub/ActivityStreams content for the listing of what is in a directory.

Think of it as the AP/AS version of output from the `ls` command.

AP/AS has a whole bunch of stuff that can be used to represents files. Even sub-types of files

w3.org/TR/activitystreams-voca

And, while AP/AS has 'Collection' (and 'CollectionPage') —

w3.org/TR/activitystreams-voca

AP/AS doesn't have a 'Directory' type (as a sub-type of 'Collection')

w3.org

Activity Vocabulary

@reiver@mastodon.social

I am outputting ActivityPub/ActivityStreams content for the listing of what is in a directory.

Think of it as the AP/AS version of output from the `ls` command.

AP/AS has a whole bunch of stuff that can be used to represents files. Even sub-types of files

w3.org/TR/activitystreams-voca

And, while AP/AS has 'Collection' (and 'CollectionPage') —

w3.org/TR/activitystreams-voca

AP/AS doesn't have a 'Directory' type (as a sub-type of 'Collection')

w3.org

Activity Vocabulary

@admin@mstdn.feddit.social
关于联邦软件——hollo的消极吐槽(梦话)——很一般、很普通

......如果用过 ,那差不多就相当于用过hollo了 (
虽然也是和 一样的“单”用户实例;
但是gotosocial,只是推荐单用户;
而hollo,应该是一个管理员,可以创建多个账户,比如这个@admin@fedihollo.org ,还可以创建 @xxx@fedihollo.org ;
创建多账户上这一点要比botkit更好?botkit是一域名一机器人的,就像 @mybot@drawbot
Gotosocial还是要比Hollo完善许多,Gotosocial在功能上不比mastodon差多少,hollo就算了
总的来说吧,单用户不推荐自托管 -dev/hollo,如果想搭建机器人,可以用fedify-dev/botkit

介绍 #Hollo。Hollo 是一款支持 #ActivityPub 的单用户微型博客软件。虽然它只针对单一用户,但它也支持为不同主题创建和运行多个账户。
它是无头的,意味着你可以使用现有的 #Mastodon 客户端应用,配合其兼容 Mastodon 的 API。它与猛犸象在特征上几乎相当。Mastodon 的两个大区别是你可以在帖子内容中使用 #Markdown,并且可以引用其他帖子。
哦,Hollo 是用 #Bun 和 #Fedify 构建的。
https://github.com/dahlia/hollo
#fedidev

这里也确实提到了“虽然它只针对单一用户,但它也支持为不同主题创建和运行多个账户”
hollo最近发了一个投票:

Hollo 一直都是无头的——没有内置前端,只有一个兼容 Mastodon 的 API。你自己选客户。这正是重点。
但我们一直在想:如果 Hollo 发布自己的网页前端会怎样?Mastodon 兼容的 API 会保留,所以你当前的客户端设置不会改变。这只是多了一个选择。
你会用吗?

你要我怎么夸你呢?占用1.4GB内存......还是“创建 账户变得非常简单低成本吗?”

Links:
hollo.social/@hollo
github.com/fedify-dev/botkit
github.com/fedify-dev/hollo
fedihollo.org/@admin

抱歉hollo的开发者们

RE: fedihollo.org/@admin/019d3008-

https://fedihollo.org/@admin
ALT text

https://fedihollo.org/@admin

https://bot.moe.pub/
ALT text

https://bot.moe.pub/

@COSCUP@floss.social にて「FediDevKR & FediLUG (Japan)」でブースを出展についても採択されました! ​:fedilug:
東アジアのFediverseの発信地・交流の場として準備を進めています!!
日本のFediLUGからはノベルティ配布などの企画を考えています!詳細情報をお楽しみに!!
https://blog.coscup.org/2026/03/coscup-x-ubucon-asia-2026-first-wave-of.html

blog.coscup.org

COSCUP x UbuCon Asia 2026 首波社群攤位名單公布 First wave of accepted community booth

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@COSCUP@floss.social にて「FediDevKR & FediLUG (Japan)」でブースを出展についても採択されました! ​:fedilug:
東アジアのFediverseの発信地・交流の場として準備を進めています!!
日本のFediLUGからはノベルティ配布などの企画を考えています!詳細情報をお楽しみに!!
https://blog.coscup.org/2026/03/coscup-x-ubucon-asia-2026-first-wave-of.html

blog.coscup.org

COSCUP x UbuCon Asia 2026 首波社群攤位名單公布 First wave of accepted community booth

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@COSCUP@floss.social にて「FediDevKR & FediLUG (Japan)」でブースを出展についても採択されました! ​:fedilug:
東アジアのFediverseの発信地・交流の場として準備を進めています!!
日本のFediLUGからはノベルティ配布などの企画を考えています!詳細情報をお楽しみに!!
https://blog.coscup.org/2026/03/coscup-x-ubucon-asia-2026-first-wave-of.html

blog.coscup.org

COSCUP x UbuCon Asia 2026 首波社群攤位名單公布 First wave of accepted community booth

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@COSCUP@floss.social にて「FediDevKR & FediLUG (Japan)」でブースを出展についても採択されました! ​:fedilug:
東アジアのFediverseの発信地・交流の場として準備を進めています!!
日本のFediLUGからはノベルティ配布などの企画を考えています!詳細情報をお楽しみに!!
https://blog.coscup.org/2026/03/coscup-x-ubucon-asia-2026-first-wave-of.html

blog.coscup.org

COSCUP x UbuCon Asia 2026 首波社群攤位名單公布 First wave of accepted community booth

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@fedilug@msky.ospn.jp
2026年8月8–9日台湾・台北にて開催される @COSCUP@floss.social にて、 が主催する「Fediverse & Social Web」トラックが採択されました! 、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFP(申し込み)はまだ始まっていませんが、公開され次第お知らせします!

@COSCUP 2026(台北、8月8–9日)にて、Fediverse & Social Webトラックが採択されました!、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFPはまだ始まっていませんが、公開され次第お知らせします。お楽しみに!

@fedilug@msky.ospn.jp
2026年8月8–9日台湾・台北にて開催される @COSCUP@floss.social にて、 が主催する「Fediverse & Social Web」トラックが採択されました! 、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFP(申し込み)はまだ始まっていませんが、公開され次第お知らせします!

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@COSCUP 2026(臺北(타이베이), 8() 8–9())에서 저희 Fediverse & Social Web 트랙이 承認(승인)되었습니다! , , 오픈 소셜 웹을 主題(주제)로 하루 終日(종일), () 6時間(시간)進行(진행)豫定(예정)입니다.

發表者(발표자) 募集(모집) CFP는 아직 열리지 않았지만, 始作(시작)되는 대로 바로 公知(공지)하겠습니다. 期待(기대)해 주세요!

@COSCUP@floss.social にて「FediDevKR & FediLUG (Japan)」でブースを出展についても採択されました! ​:fedilug:
東アジアのFediverseの発信地・交流の場として準備を進めています!!
日本のFediLUGからはノベルティ配布などの企画を考えています!詳細情報をお楽しみに!!
https://blog.coscup.org/2026/03/coscup-x-ubucon-asia-2026-first-wave-of.html

blog.coscup.org

COSCUP x UbuCon Asia 2026 首波社群攤位名單公布 First wave of accepted community booth

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@fedilug@msky.ospn.jp
2026年8月8–9日台湾・台北にて開催される @COSCUP@floss.social にて、 が主催する「Fediverse & Social Web」トラックが採択されました! 、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFP(申し込み)はまだ始まっていませんが、公開され次第お知らせします!

@fedilug@msky.ospn.jp
2026年8月8–9日台湾・台北にて開催される @COSCUP@floss.social にて、 が主催する「Fediverse & Social Web」トラックが採択されました! 、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFP(申し込み)はまだ始まっていませんが、公開され次第お知らせします!

@fedilug@msky.ospn.jp
2026年8月8–9日台湾・台北にて開催される @COSCUP@floss.social にて、 が主催する「Fediverse & Social Web」トラックが採択されました! 、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFP(申し込み)はまだ始まっていませんが、公開され次第お知らせします!

@fedilug@msky.ospn.jp
2026年8月8–9日台湾・台北にて開催される @COSCUP@floss.social にて、 が主催する「Fediverse & Social Web」トラックが採択されました! 、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFP(申し込み)はまだ始まっていませんが、公開され次第お知らせします!

@COSCUP 2026(台北、8月8–9日)にて、Fediverse & Social Webトラックが採択されました!、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFPはまだ始まっていませんが、公開され次第お知らせします。お楽しみに!

@COSCUP 2026(台北、8月8–9日)にて、Fediverse & Social Webトラックが採択されました!、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFPはまだ始まっていませんが、公開され次第お知らせします。お楽しみに!

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@COSCUP 2026(臺北(타이베이), 8() 8–9())에서 저희 Fediverse & Social Web 트랙이 承認(승인)되었습니다! , , 오픈 소셜 웹을 主題(주제)로 하루 終日(종일), () 6時間(시간)進行(진행)豫定(예정)입니다.

發表者(발표자) 募集(모집) CFP는 아직 열리지 않았지만, 始作(시작)되는 대로 바로 公知(공지)하겠습니다. 期待(기대)해 주세요!

@COSCUP 2026(台北、8月8–9日)にて、Fediverse & Social Webトラックが採択されました!、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFPはまだ始まっていませんが、公開され次第お知らせします。お楽しみに!

@COSCUP 2026(台北、8月8–9日)にて、Fediverse & Social Webトラックが採択されました!、オープンなソーシャルウェブをテーマに、丸一日・計6時間のトラックを予定しています。

発表者向けのCFPはまだ始まっていませんが、公開され次第お知らせします。お楽しみに!

@COSCUP 2026(臺北(타이베이), 8() 8–9())에서 저희 Fediverse & Social Web 트랙이 承認(승인)되었습니다! , , 오픈 소셜 웹을 主題(주제)로 하루 終日(종일), () 6時間(시간)進行(진행)豫定(예정)입니다.

發表者(발표자) 募集(모집) CFP는 아직 열리지 않았지만, 始作(시작)되는 대로 바로 公知(공지)하겠습니다. 期待(기대)해 주세요!

@COSCUP 2026(臺北(타이베이), 8() 8–9())에서 저희 Fediverse & Social Web 트랙이 承認(승인)되었습니다! , , 오픈 소셜 웹을 主題(주제)로 하루 終日(종일), () 6時間(시간)進行(진행)豫定(예정)입니다.

發表者(발표자) 募集(모집) CFP는 아직 열리지 않았지만, 始作(시작)되는 대로 바로 公知(공지)하겠습니다. 期待(기대)해 주세요!

@reiver@mastodon.social

I've seen an ongoing debate between "Note" versus "Article" in ActivityPub / ActivityStreams.

When is something a "Note"‽
When is something an "Article"‽

Personally — I would probably have made the distinction this way.

An "Article" has a title.
A "Note" doesn't have a title.

(In ActivityPub / ActivityStreams, a 'title' seems to tend to get represented in the "name" field.)

@botkit@hollo.social

We're excited to announce the release of BotKit 0.3.0! This release marks a significant milestone as now supports .js alongside , making it accessible to a wider audience. The minimum required Node.js version is 22.0.0. This dual-runtime support means you can now choose your preferred runtime while building with the same powerful BotKit APIs.

One of the most requested features has landed: poll support! You can now create interactive polls in your messages, allowing followers to vote on questions with single or multiple-choice options. Polls are represented as ActivityPub Question objects with proper expiration times, and your bot can react to votes through the new onVote event handler. This feature enhances engagement possibilities and brings BotKit to feature parity with major platforms like Mastodon and Misskey.

// Create a poll with multiple choices
await session.publish(text`What's your favorite programming language?`, {
  class: Question,
  poll: {
    multiple: true,  // Allow multiple selections
    options: ["JavaScript", "TypeScript", "Python", "Rust"],
    endTime: Temporal.Now.instant().add({ hours: 24 }),
  },
});

// Handle votes
bot.onVote = async (session, vote) => {
  console.log(`${vote.actor} voted for "${vote.option}"`);
};

The web frontend has been enhanced with a new followers page, thanks to the contribution from Hyeonseo Kim (@gaebalgom)! The /followers route now displays a paginated list of your bot's followers, and the follower count on the main profile page is now clickable, providing better visibility into your bot's audience. This improvement makes the web interface more complete and user-friendly.

For developers looking for alternative storage backends, we've introduced the SqliteRepository through the new @fedify/botkit-sqlite package. This provides a production-ready SQLite-based storage solution with ACID compliance, write-ahead logging (WAL) for optimal performance, and proper indexing. Additionally, the new @fedify/botkit/repository module offers MemoryCachedRepository for adding an in-memory cache layer on top of any repository implementation, improving read performance for frequently accessed data.

This release also includes an important security update: we've upgraded to 1.8.8, ensuring your bots stay secure and compatible with the latest ActivityPub standards. The repository pattern has been expanded with new interfaces and types like RepositoryGetMessagesOptions, RepositoryGetFollowersOptions, and proper support for polls storage through the KvStoreRepositoryPrefixes.polls option, providing more flexibility for custom implementations.

botkit.fedify.dev

Repository | BotKit by Fedify

A repository is a data access object that provides an abstraction over the underlying data source. This document provides an overview of repositories and how they are used in the framework.

We are pleased to announce the release of 1.7.0. This release was expedited at the request of the Ghost team, who are actively using Fedify for their implementation. As a result, several features originally planned for this version have been moved to Fedify 1.8.0 to ensure timely delivery of the most critical improvements.

This release focuses on enhancing message queue functionality and improving compatibility with ActivityPub servers through refined HTTP signature handling.

Native retry mechanism support

This release introduces support for native retry mechanisms in message queue backends. The new MessageQueue.nativeRetrial property allows queue implementations to indicate whether they provide built-in retry functionality, enabling Fedify to optimize its retry behavior accordingly.

When nativeRetrial is set to true, Fedify will delegate retry handling to the queue backend rather than implementing its own retry logic. This approach reduces overhead and leverages the proven retry mechanisms of established queue systems.

Current implementations with native retry support include:

  • DenoKvMessageQueue — utilizes Deno KV's automatic retry with exponential backoff
  • WorkersMessageQueue — leverages Cloudflare Queues' automatic retry and dead-letter queue features
  • AmqpMessageQueue — can now be configured to use AMQP broker's native retry mechanisms

The InProcessMessageQueue continues to use Fedify's internal retry mechanism, while ParallelMessageQueue inherits the retry behavior from its wrapped queue.

AMQP message queue improvements

Alongside Fedify 1.7.0, we have also released @fedify/amqp 0.3.0. This release adds the nativeRetrial option to AmqpMessageQueueOptions, enabling you to leverage your AMQP broker's built-in retry mechanisms. When enabled, this option allows the AMQP broker to handle message retries according to its configured policies, rather than relying on Fedify's internal retry logic.

Configurable double-knocking

The new FederationOptions.firstKnock option provides control over the HTTP Signatures specification used for the initial signature attempt when communicating with previously unknown servers.

Previously, the first knock for newly encountered servers always used RFC 9421 (HTTP Message Signatures), falling back to draft-cavage-http-signatures-12 if needed. With this release, you can now configure which specification to use for the first knock when communicating with unknown servers, with RFC 9421 remaining the default.

Summary

This release maintains Fedify's commitment to reliability and compatibility while laying the groundwork for more efficient message processing. The native retry mechanism support will particularly benefit applications using queue backends with sophisticated retry capabilities, while the double-knocking mechanism addresses real-world compatibility challenges in the ActivityPub ecosystem.

For detailed technical information about these changes, please refer to the changelog in the repository.

github.com

fedify/CHANGES.md at 1.7.0 · fedify-dev/fedify

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

We are pleased to announce the release of 1.7.0. This release was expedited at the request of the Ghost team, who are actively using Fedify for their implementation. As a result, several features originally planned for this version have been moved to Fedify 1.8.0 to ensure timely delivery of the most critical improvements.

This release focuses on enhancing message queue functionality and improving compatibility with ActivityPub servers through refined HTTP signature handling.

Native retry mechanism support

This release introduces support for native retry mechanisms in message queue backends. The new MessageQueue.nativeRetrial property allows queue implementations to indicate whether they provide built-in retry functionality, enabling Fedify to optimize its retry behavior accordingly.

When nativeRetrial is set to true, Fedify will delegate retry handling to the queue backend rather than implementing its own retry logic. This approach reduces overhead and leverages the proven retry mechanisms of established queue systems.

Current implementations with native retry support include:

  • DenoKvMessageQueue — utilizes Deno KV's automatic retry with exponential backoff
  • WorkersMessageQueue — leverages Cloudflare Queues' automatic retry and dead-letter queue features
  • AmqpMessageQueue — can now be configured to use AMQP broker's native retry mechanisms

The InProcessMessageQueue continues to use Fedify's internal retry mechanism, while ParallelMessageQueue inherits the retry behavior from its wrapped queue.

AMQP message queue improvements

Alongside Fedify 1.7.0, we have also released @fedify/amqp 0.3.0. This release adds the nativeRetrial option to AmqpMessageQueueOptions, enabling you to leverage your AMQP broker's built-in retry mechanisms. When enabled, this option allows the AMQP broker to handle message retries according to its configured policies, rather than relying on Fedify's internal retry logic.

Configurable double-knocking

The new FederationOptions.firstKnock option provides control over the HTTP Signatures specification used for the initial signature attempt when communicating with previously unknown servers.

Previously, the first knock for newly encountered servers always used RFC 9421 (HTTP Message Signatures), falling back to draft-cavage-http-signatures-12 if needed. With this release, you can now configure which specification to use for the first knock when communicating with unknown servers, with RFC 9421 remaining the default.

Summary

This release maintains Fedify's commitment to reliability and compatibility while laying the groundwork for more efficient message processing. The native retry mechanism support will particularly benefit applications using queue backends with sophisticated retry capabilities, while the double-knocking mechanism addresses real-world compatibility challenges in the ActivityPub ecosystem.

For detailed technical information about these changes, please refer to the changelog in the repository.

github.com

fedify/CHANGES.md at 1.7.0 · fedify-dev/fedify

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

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@hongminhee@hollo.social

So, an interesting issue came up in the repo that I've been thinking about: #629.

You know how every server uses schema:PropertyValue in actor attachment for profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict validators like browser.pub reject it, because the AS2 spec says attachment should only contain Object or Link—and PropertyValue is a schema.org type, not an Activity Streams 2.0 type.

The thing is, we can't just drop the type like we did with Endpoints (#576), because Mastodon and others rely on seeing "type": "PropertyValue" to render profile fields. But at the same time, it's technically not spec-compliant.

I'm leaning towards writing a to formalize this existing practice rather than trying to invent a new type (like toot:PropertyValue extending Object), which would be a nightmare to migrate across the whole fediverse.

What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.

github.com

Endpoints object serializes with invalid "type": "as:Endpoints" in actor JSON · Issue #576 · fedify-dev/fedify

Description When Fedify serializes an actor's endpoints property to JSON-LD (compacted), it includes "type": "as:Endpoints" in the output: "endpoints": { "type": "as:Endpoints", "sharedInbox": "htt...

@kodingwarrior@hackers.pub

Thanks to @nyanrus https://moim.live now supports Mastodon OAuth, Misskey MiAuth

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button
ALT text

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button

After input mastodon instance URL
ALT text

After input mastodon instance URL

We can see authorization page for moim.live login, and then succeed to signin
ALT text

We can see authorization page for moim.live login, and then succeed to signin

@reiver@mastodon.social

1/

AFAIK, there isn't a way for an ActivityPub Actor (such as a Person actor) to specify a list of Service actors associated with it.

...

For example, imagine that there is a Service actor that represents a way to make a video call to me.

And, for example, I have my Mastodon Person actor.

And, I want to let people know about it (and other Service actors associated with me).

How do I do that using AP, etc‽

...

@kodingwarrior@hackers.pub

Thanks to @nyanrus https://moim.live now supports Mastodon OAuth, Misskey MiAuth

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button
ALT text

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button

After input mastodon instance URL
ALT text

After input mastodon instance URL

We can see authorization page for moim.live login, and then succeed to signin
ALT text

We can see authorization page for moim.live login, and then succeed to signin

@hongminhee@hollo.social

Just had to add a workaround to for http://joinmastodon.org/ns, a JSON-LD context URL that has never actually served a JSON-LD document. Mastodon has always inlined the term definitions, but some implementations put it as a bare URL in their @context, so Fedify's JSON-LD processor tries to fetch it and gets a 404 Not Found. Now Fedify ships a bundled copy of a context that never existed in the first place.

https://github.com/fedify-dev/fedify/pull/631

github.com

Add `http://joinmastodon.org/ns` to preloaded JSON-LD contexts by dahlia · Pull Request #631 · fedify-dev/fedify

Closes #630. http://joinmastodon.org/ns is used as the base URI for Mastodon’s custom JSON-LD terms like Emoji, discoverable, featured, blurhash, etc. However, this URL has never actually hosted a ...

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

7/

Continuing to look for an alternative to "attachment" (for properly supporting an Actor specifying a list of CALL Service actors associated with it) —

Maybe a call specific custom top-level attribute would be useful.

Maybe something like:

"call": [
{
"rel":"callpub",
"href":"https://videocalls.example/users/joeblow"
}
]

Or even:

"call": [
"href":"https://videocalls.example/users/joeblow"
]

.

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

6/

Continuing to look for an alternative to "attachment" (for properly supporting an Actor specifying a list of Service actors associated with it) —

Maybe a custom top-level attribute would be useful.

Maybe something like:

"service": [
{
"rel":"callpub",
"href":"https://videocalls.example/users/joeblow"
}
]

Although perhaps that is not much better than "attachment", if you just care about calls

So —

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

4/

Looking for an alternative to "attachment" (for properly supporting an Actor specifying a list of Service actors associated with it) —

I think using "alsoKnownAs" or "sameAs" would be a poor choice. The semantics are wrong.

For example: a Service actor might represent my mobile phone (or software on it). My phone is not me. It is something I have.

So —

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

3/

But, what about the non- fall-back situation where software could properly support this (when an Actor specifies a list of Service actors associated with it)‽

I think some might say, put the associated Service actors in "attachment". And, semantically I think that would work with ActivityPub, but — I have a very strong dislike with putting everything in "attachment" (and "tag"). It makes parsing difficult.

So —

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

2/

Because most people wouldn't be able to add custom attributes or custom values to most Fediverse software (including Mastodon) —

Most supporting software would probably want to support a "PropertyValue" link in "attachment" field as a fall-back

For example:

"attachment": [
{
"type": "PropertyValue",
"name": "Video Calls (callpub)",
"value": "https://videocalls.example/users/joeblow"
}

But —

...

@reiver@mastodon.social

1/

AFAIK, there isn't a way for an ActivityPub Actor (such as a Person actor) to specify a list of Service actors associated with it.

...

For example, imagine that there is a Service actor that represents a way to make a video call to me.

And, for example, I have my Mastodon Person actor.

And, I want to let people know about it (and other Service actors associated with me).

How do I do that using AP, etc‽

...

@hongminhee@hollo.social

Just had to add a workaround to for http://joinmastodon.org/ns, a JSON-LD context URL that has never actually served a JSON-LD document. Mastodon has always inlined the term definitions, but some implementations put it as a bare URL in their @context, so Fedify's JSON-LD processor tries to fetch it and gets a 404 Not Found. Now Fedify ships a bundled copy of a context that never existed in the first place.

https://github.com/fedify-dev/fedify/pull/631

github.com

Add `http://joinmastodon.org/ns` to preloaded JSON-LD contexts by dahlia · Pull Request #631 · fedify-dev/fedify

Closes #630. http://joinmastodon.org/ns is used as the base URI for Mastodon’s custom JSON-LD terms like Emoji, discoverable, featured, blurhash, etc. However, this URL has never actually hosted a ...

@hongminhee@hollo.social

Just had to add a workaround to for http://joinmastodon.org/ns, a JSON-LD context URL that has never actually served a JSON-LD document. Mastodon has always inlined the term definitions, but some implementations put it as a bare URL in their @context, so Fedify's JSON-LD processor tries to fetch it and gets a 404 Not Found. Now Fedify ships a bundled copy of a context that never existed in the first place.

https://github.com/fedify-dev/fedify/pull/631

github.com

Add `http://joinmastodon.org/ns` to preloaded JSON-LD contexts by dahlia · Pull Request #631 · fedify-dev/fedify

Closes #630. http://joinmastodon.org/ns is used as the base URI for Mastodon’s custom JSON-LD terms like Emoji, discoverable, featured, blurhash, etc. However, this URL has never actually hosted a ...

@reiver@mastodon.social

I used to not like JSON-LD. And then I got exposed to CBOR. And, since then, I ended up liking JSON-LD more than I did before.

j12t.social/@j12t/114581086678

...

I was looking for performant ways of storing JSON-LD data, so that it can be looked up, queried, etc.

CBOR might actually be a way of doing that.

...

For me that is an odd realization given me liking JSON-LD is a reaction to CBOR.

j12t.social

Johannes Ernst (@j12t@j12t.social)

OH: "I didn't like JSON-LD, but then I saw CBOR, and now I like JSON-LD much better"

@reiver@mastodon.social

I used to not like JSON-LD. And then I got exposed to CBOR. And, since then, I ended up liking JSON-LD more than I did before.

j12t.social/@j12t/114581086678

...

I was looking for performant ways of storing JSON-LD data, so that it can be looked up, queried, etc.

CBOR might actually be a way of doing that.

...

For me that is an odd realization given me liking JSON-LD is a reaction to CBOR.

j12t.social

Johannes Ernst (@j12t@j12t.social)

OH: "I didn't like JSON-LD, but then I saw CBOR, and now I like JSON-LD much better"

@kodingwarrior@hackers.pub

moim.live just crossed 30 members. Shipped calendar subscription today — you can now subscribe to your personal schedule directly in Google Calendar and other apps.

Traffic is still an unknown. But I'm not ready to go door-to-door yet anyway. There's one payment feature missing, and that's what I'm building toward next.

ActivityPub is supported and always will be — but it's not the whole point. The journey to making something genuinely useful is just getting started. Until payments feature shipping, I will not do additional work except for bug fix, changing UI.

For events with external registration, It's not possible for RSVP. but I let users to bookmark. and then they can see in Calendar view
ALT text

For events with external registration, It's not possible for RSVP. but I let users to bookmark. and then they can see in Calendar view

For calendar view, We can see integrated view for RSVP events / Hosted Events / Bookmarked Events. Also it's possible for Google Calendar Subscription
ALT text

For calendar view, We can see integrated view for RSVP events / Hosted Events / Bookmarked Events. Also it's possible for Google Calendar Subscription

@kodingwarrior@hackers.pub

moim.live just crossed 30 members. Shipped calendar subscription today — you can now subscribe to your personal schedule directly in Google Calendar and other apps.

Traffic is still an unknown. But I'm not ready to go door-to-door yet anyway. There's one payment feature missing, and that's what I'm building toward next.

ActivityPub is supported and always will be — but it's not the whole point. The journey to making something genuinely useful is just getting started. Until payments feature shipping, I will not do additional work except for bug fix, changing UI.

For events with external registration, It's not possible for RSVP. but I let users to bookmark. and then they can see in Calendar view
ALT text

For events with external registration, It's not possible for RSVP. but I let users to bookmark. and then they can see in Calendar view

For calendar view, We can see integrated view for RSVP events / Hosted Events / Bookmarked Events. Also it's possible for Google Calendar Subscription
ALT text

For calendar view, We can see integrated view for RSVP events / Hosted Events / Bookmarked Events. Also it's possible for Google Calendar Subscription

@hongminhee@hollo.social

Today @kopper shared a post on the fediverse titled how to not regret c2s, and I found it genuinely interesting to read, even if I'm not sure its proposed architecture actually solves what it sets out to solve.

The author's frustration with naïve implementations is well-founded. Slapping an facade onto an existing Mastodon-like server and calling it C2S doesn't buy you much—you end up with the rigidity of a bespoke API without any of the interoperability C2S is supposed to offer. The “JSON-LD flavored Mastodon API” framing is apt.

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.

But here's what bothers me. When you map this architecture onto familiar terms, it looks roughly like this:

  • C2S server ≈ a database (PostgreSQL, say)
  • “Client” ≈ an application server (Mastodon, Misskey)
  • “Frontend” ≈ the actual client app on your phone

That's not a new architecture. That's just the current architecture with the labels shifted. The interesting question is which interface gets standardized, and the author's answer is the one between the C2S server and the “client” layer—the bottom boundary.

The problem is that what people actually want from C2S is to connect any frontend to any server. The portability they're after lives at the top boundary, between the frontend and whatever is behind it. But the author explicitly argues against standardizing that layer: “we don't really need a standardized api,” they write, leaving each client free to expose whatever API it likes.

Which means frontends remain locked to specific clients, just as Mastodon apps are locked to the Mastodon API today. The interoperability promise of C2S—log in to any server with any app—isn't actually delivered. It's been pushed one layer down, out of reach of the end user.

There's real value in the post's thinking about data hosting vs. interpretation, and about the security implications of servers that understand too much. But as an answer to the question C2S is supposed to answer, I'm not convinced.

w.on-t.work

how to not regret c2s

@hongminhee@hollo.social

Today @kopper shared a post on the fediverse titled how to not regret c2s, and I found it genuinely interesting to read, even if I'm not sure its proposed architecture actually solves what it sets out to solve.

The author's frustration with naïve implementations is well-founded. Slapping an facade onto an existing Mastodon-like server and calling it C2S doesn't buy you much—you end up with the rigidity of a bespoke API without any of the interoperability C2S is supposed to offer. The “JSON-LD flavored Mastodon API” framing is apt.

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.

But here's what bothers me. When you map this architecture onto familiar terms, it looks roughly like this:

  • C2S server ≈ a database (PostgreSQL, say)
  • “Client” ≈ an application server (Mastodon, Misskey)
  • “Frontend” ≈ the actual client app on your phone

That's not a new architecture. That's just the current architecture with the labels shifted. The interesting question is which interface gets standardized, and the author's answer is the one between the C2S server and the “client” layer—the bottom boundary.

The problem is that what people actually want from C2S is to connect any frontend to any server. The portability they're after lives at the top boundary, between the frontend and whatever is behind it. But the author explicitly argues against standardizing that layer: “we don't really need a standardized api,” they write, leaving each client free to expose whatever API it likes.

Which means frontends remain locked to specific clients, just as Mastodon apps are locked to the Mastodon API today. The interoperability promise of C2S—log in to any server with any app—isn't actually delivered. It's been pushed one layer down, out of reach of the end user.

There's real value in the post's thinking about data hosting vs. interpretation, and about the security implications of servers that understand too much. But as an answer to the question C2S is supposed to answer, I'm not convinced.

w.on-t.work

how to not regret c2s

@kodingwarrior@hackers.pub

moim.live just crossed 30 members. Shipped calendar subscription today — you can now subscribe to your personal schedule directly in Google Calendar and other apps.

Traffic is still an unknown. But I'm not ready to go door-to-door yet anyway. There's one payment feature missing, and that's what I'm building toward next.

ActivityPub is supported and always will be — but it's not the whole point. The journey to making something genuinely useful is just getting started. Until payments feature shipping, I will not do additional work except for bug fix, changing UI.

For events with external registration, It's not possible for RSVP. but I let users to bookmark. and then they can see in Calendar view
ALT text

For events with external registration, It's not possible for RSVP. but I let users to bookmark. and then they can see in Calendar view

For calendar view, We can see integrated view for RSVP events / Hosted Events / Bookmarked Events. Also it's possible for Google Calendar Subscription
ALT text

For calendar view, We can see integrated view for RSVP events / Hosted Events / Bookmarked Events. Also it's possible for Google Calendar Subscription

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@kodingwarrior@hackers.pub

Thanks to @nyanrus https://moim.live now supports Mastodon OAuth, Misskey MiAuth

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button
ALT text

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button

After input mastodon instance URL
ALT text

After input mastodon instance URL

We can see authorization page for moim.live login, and then succeed to signin
ALT text

We can see authorization page for moim.live login, and then succeed to signin

@kodingwarrior@hackers.pub

Thanks to @nyanrus https://moim.live now supports Mastodon OAuth, Misskey MiAuth

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button
ALT text

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button

After input mastodon instance URL
ALT text

After input mastodon instance URL

We can see authorization page for moim.live login, and then succeed to signin
ALT text

We can see authorization page for moim.live login, and then succeed to signin

@kodingwarrior@hackers.pub

Thanks to @nyanrus https://moim.live now supports Mastodon OAuth, Misskey MiAuth

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button
ALT text

Ordinary signin page, and bottom of fediverse OTP login section, we can see mastodon/misskey signin button

After input mastodon instance URL
ALT text

After input mastodon instance URL

We can see authorization page for moim.live login, and then succeed to signin
ALT text

We can see authorization page for moim.live login, and then succeed to signin

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@hongminhee@hollo.social

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Web—think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8–9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

  • Yes, I'd like to speak2 (5%)
  • Maybe, tell me more5 (11%)
  • I can't make it, but I support this36 (82%)
  • Not interested1 (2%)

hollo.social

I've been saying for a while t…

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step: @COSCUP@floss.social 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a *Social Web track* there—something in the spirit of the Social Web devroom at FOSDEM. Nothing is decided yet, but if you're working on #ActivityPub, the #fediverse, or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you. https://floss.social/@COSCUP/116152356550445285 #SocialWeb #COSCUP #fedidev

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@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:


August 4th–9th, Gedelitz, Germany

August 6th–9th, Vancouver, CA

August 8th–9th, Taipei, TW

August 26th-28th, online

September 11th to 13th, Berlin, DE

September 13th, Berlin, DE

October 6th & 7th, online

@reiver@mastodon.social

Fediverse & AI Coding Tools & Vibe Coding

...

I noticed 2 or 3 people lately using AI coding tools to create Fediverse software.

2 of them even seemed to be Vibe Coding.

...

I have been programming for over 30 years. I am probably not going to Vibe Code, but —

I wonder if we should help them.

There are tools we (Fediverse developers) could create to make it so others could Vibe Code Fediverse apps.

  • Yes, help them.64 (62%)
  • No! (explain why in comments)40 (38%)
@kodingwarrior@hackers.pub

moim.live 메인 화면에 뜨는 캐러셀에 뜨는 이벤트 배너도 우선순위를 조절할 수 있게 했다.

상업용 배너 > 그룹 이벤트 배너 (우선순위 내림차순 정렬) > 개인 이벤트 배너 (이건 그룹 이벤트가 진짜 없을때....)

커뮤니티 혹은 오피셜 그룹에서 게시한 이벤트는 최대한 우선순위를 땡기는 식으로 유연하게 대응하려고 한다.

지금까지 열린 이벤트를 조회하고 우선순위를 조절할 수 있는 어드민 패널
ALT text

지금까지 열린 이벤트를 조회하고 우선순위를 조절할 수 있는 어드민 패널

@kodingwarrior@hackers.pub

moim.live 메인 화면에 뜨는 캐러셀에 뜨는 이벤트 배너도 우선순위를 조절할 수 있게 했다.

상업용 배너 > 그룹 이벤트 배너 (우선순위 내림차순 정렬) > 개인 이벤트 배너 (이건 그룹 이벤트가 진짜 없을때....)

커뮤니티 혹은 오피셜 그룹에서 게시한 이벤트는 최대한 우선순위를 땡기는 식으로 유연하게 대응하려고 한다.

지금까지 열린 이벤트를 조회하고 우선순위를 조절할 수 있는 어드민 패널
ALT text

지금까지 열린 이벤트를 조회하고 우선순위를 조절할 수 있는 어드민 패널

I've been thinking about adding federation health monitoring to —not as a separate data store or custom API, but by extending the existing integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.

Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.

I've been thinking about adding federation health monitoring to —not as a separate data store or custom API, but by extending the existing integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.

Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

I've been thinking about adding federation health monitoring to —not as a separate data store or custom API, but by extending the existing integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.

Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

@hongminhee@hollo.social

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8–9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track there—something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

floss.social

COSCUP (@COSCUP@floss.social)

🚀 COSCUP 2026 Call for Participation is now open! 🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited. 🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served. 👉 Apply here: https://s.coscup.org/26communityen #COSCUP2026 #OpenSource #Community

@COSCUP@floss.social

🚀 COSCUP 2026 Call for Participation is now open!

🎤 Community Tracks – Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

🛠 Community Booths – Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

👉 Apply here: s.coscup.org/26communityen

blog.coscup.org

COSCUP 2026 Call for Participation, 議程軌與攤位即日起開放申請

無論您是開放原始碼的開發者、推廣者、使用者,都歡迎您來參加 COSCUP「開源人年會」

I've been thinking about adding federation health monitoring to —not as a separate data store or custom API, but by extending the existing integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.

Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.

@hongminhee@hollo.social

I've been thinking about adding federation health monitoring to —not as a separate data store or custom API, but by extending the existing integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.

Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.

@hongminhee@hollo.social

I've been thinking about adding federation health monitoring to —not as a separate data store or custom API, but by extending the existing integration. The idea is to expose delivery outcomes, signature verification failures, and per-remote-host error rates as OpenTelemetry metrics alongside the spans Fedify already emits. If you already have a Prometheus or Grafana setup, you'd get federation observability basically for free. Circuit breaker behavior (temporarily skipping a remote server that's been consistently unreachable) could surface as OpenTelemetry events, keeping everything in the same trace context rather than scattered across separate logs.

Does this sound useful to you? I'm curious whether people building on Fedify—or running federated servers in general—would actually reach for this, and what kinds of things you'd most want to observe. Happy to hear any thoughts.

@kodingwarrior@hackers.pub

I'm building an open source ActivityPub service called "Moim" — 모임 in Korean, meaning gathering or meetup. It started as a federated RSVP service, but I realized I wanted to connect people even beyond events. Events are where people come together, yes — but places carry meaning on their own, even in quiet, ordinary moments.

So Moim is about helping people feel connected: through events, and through the simple act of sharing where they are.

Right now, I'm focusing on three areas:

  • CRM for Event Organizers A proper SaaS-like experience built for people who run events. I'm actively reaching out to organizers to shape this.
  • A Federated RSVP Service I want Moim's RSVP experience to feel just as polished as anything outside the Fediverse — and ideally, better. Being federated shouldn't mean settling for less.
  • A Check-in Sharing System I miss what Foursquare Swarm used to be. I want to bring that feeling back, built for the Fediverse.

I don't know yet if I'm building the right thing. But I'll keep going, and do my best to make it something worth using. If I'm ready, I will officially announce to public.

Check-in screen on Mobile
ALT text

Check-in screen on Mobile

Admin Panel for managing group/place/moderation action
ALT text

Admin Panel for managing group/place/moderation action

Dashboard for event organizers
ALT text

Dashboard for event organizers

@hongminhee@hollo.social

Today @kopper shared a post on the fediverse titled how to not regret c2s, and I found it genuinely interesting to read, even if I'm not sure its proposed architecture actually solves what it sets out to solve.

The author's frustration with naïve implementations is well-founded. Slapping an facade onto an existing Mastodon-like server and calling it C2S doesn't buy you much—you end up with the rigidity of a bespoke API without any of the interoperability C2S is supposed to offer. The “JSON-LD flavored Mastodon API” framing is apt.

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.

But here's what bothers me. When you map this architecture onto familiar terms, it looks roughly like this:

  • C2S server ≈ a database (PostgreSQL, say)
  • “Client” ≈ an application server (Mastodon, Misskey)
  • “Frontend” ≈ the actual client app on your phone

That's not a new architecture. That's just the current architecture with the labels shifted. The interesting question is which interface gets standardized, and the author's answer is the one between the C2S server and the “client” layer—the bottom boundary.

The problem is that what people actually want from C2S is to connect any frontend to any server. The portability they're after lives at the top boundary, between the frontend and whatever is behind it. But the author explicitly argues against standardizing that layer: “we don't really need a standardized api,” they write, leaving each client free to expose whatever API it likes.

Which means frontends remain locked to specific clients, just as Mastodon apps are locked to the Mastodon API today. The interoperability promise of C2S—log in to any server with any app—isn't actually delivered. It's been pushed one layer down, out of reach of the end user.

There's real value in the post's thinking about data hosting vs. interpretation, and about the security implications of servers that understand too much. But as an answer to the question C2S is supposed to answer, I'm not convinced.

w.on-t.work

how to not regret c2s

@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@reiver@mastodon.social

With ActivityPub / ActivityStreams...

To me, it feels like there should have been something that is a common parent of both 'Object' and 'Link'.

That just had the "name", "nameMap", and "preview" fields (along with "id" and "type, of course) — since that is what 'Object' and 'Link' share in common.

I'll just call this common parent: 'Entity'.

...

It could have even been an opportunity to talk about how to handle unknown types.

@julian@fietkau.social · Reply to SoapDog

@soapdog There's a poll-based version specced at fediverse.codeberg.page/fep/fe, sadly with no notable implementations (wouldn't be interactable by Mastodon etc.), but it's an opportunity to break new ground as an implementer if you know anyone who'd like to experiment with it.

helge.codeberg.page

FEP-b06c: ActivityPoll - Fediverse Enhancement Proposals

ActivityPoll is a proper subset of ActivityPub that excludes activity delivery, making it easier to implement for static Web sites or content management systems. It meets an equivalent need to RSS or Atom feeds.

@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@julian@fietkau.social · Reply to SoapDog

@soapdog There's a poll-based version specced at fediverse.codeberg.page/fep/fe, sadly with no notable implementations (wouldn't be interactable by Mastodon etc.), but it's an opportunity to break new ground as an implementer if you know anyone who'd like to experiment with it.

helge.codeberg.page

FEP-b06c: ActivityPoll - Fediverse Enhancement Proposals

ActivityPoll is a proper subset of ActivityPub that excludes activity delivery, making it easier to implement for static Web sites or content management systems. It meets an equivalent need to RSS or Atom feeds.

@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@julian@fietkau.social · Reply to SoapDog

@soapdog There's a poll-based version specced at fediverse.codeberg.page/fep/fe, sadly with no notable implementations (wouldn't be interactable by Mastodon etc.), but it's an opportunity to break new ground as an implementer if you know anyone who'd like to experiment with it.

helge.codeberg.page

FEP-b06c: ActivityPoll - Fediverse Enhancement Proposals

ActivityPoll is a proper subset of ActivityPub that excludes activity delivery, making it easier to implement for static Web sites or content management systems. It meets an equivalent need to RSS or Atom feeds.

@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@silverpill@mitra.social

FEP website now displays the number of implementations for each implementable proposal:

https://fediverse.codeberg.page/fep/final/

These numbers are based on the information that authors provide in the "Implementations" section of a proposal.

By default, proposals are informational, so authors need to opt in by adding type: implementation to the metadata block.

#fep #fedidev

mitra.social

Mitra - Federated social network

Federated social network

@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@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!)

  • Fediverse29 (31%)
  • Social Web10 (11%)
  • Open Social Web22 (23%)
  • Fediverse & Social Web32 (34%)
  • Other (reply!)1 (1%)
@silverpill@mitra.social

FEP website now displays the number of implementations for each implementable proposal:

https://fediverse.codeberg.page/fep/final/

These numbers are based on the information that authors provide in the "Implementations" section of a proposal.

By default, proposals are informational, so authors need to opt in by adding type: implementation to the metadata block.

#fep #fedidev

mitra.social

Mitra - Federated social network

Federated social network

@silverpill@mitra.social

FEP website now displays the number of implementations for each implementable proposal:

https://fediverse.codeberg.page/fep/final/

These numbers are based on the information that authors provide in the "Implementations" section of a proposal.

By default, proposals are informational, so authors need to opt in by adding type: implementation to the metadata block.

#fep #fedidev