Fedify: ActivityPub server framework's avatar

Fedify: ActivityPub server framework

@fedify@hollo.social · 9 following · 895 followers

:fedify: Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

🎉 Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text detailsFedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

Fedify is an server framework in & . It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience.

The key features it provides currently are:

If you're curious, take a look at the website! There's comprehensive docs, a demo, a tutorial, example code, and more:

https://fedify.dev/

Laurens Hof's avatar
Laurens Hof

@LaurensHof@fediversereport.com

Fediverse Report – #102

FOSDEM and the fediverse match well together, some issues regarding data privacy and consent, and multi-network client Openvibe gets 800k in funding.

The News

FOSDEM, the free event for open source software was this weekend in Brussels, with a large presence for the fediverse and the social web. There were three events, presentations by various fediverse software developers in the SocialWeb Devroom, an extra smaller event on Sunday for more presentations, and a more casual event on Sunday evening at Brussels Hackerspace. All the events were fully packed, showing the large amount of interest from the community for the fediverse and the social web. The Social Web Foundation has been the main initiator of these events.

Some thoughts and observations:

  • Fediverse Enhancement Proposals (FEP) are documents with the goal to improve applications on the fediverse. People can write proposals, and developers can decide to support and implement proposals as they see fit. There are some great technical FEPs, but one of the challenges of such a grassroots system is getting buy-in from developers to support specific FEPs. NodeBB developer Julian Lam held a presentation ‘The Fediverse is Quiet — Let’s Fix That!’ as an advocacy for a specific FEP. The proposal Lam talks about is about fixing the problem of missing replies, where people do not see all replies on a post. What I think is noteworthy about Lam’s presentation is that it frames a FEP not only as a technical document, but as a process that needs community buy-in for other developers to support and implement a FEP. Hopefully, more of such advocacy might help see more FEPs implemented as well.
  • Mastodon presented the progress on their Fediverse Discovery Provider project. The project builds an opt-in decentralised service for better discovery and search. In the presentation (and on the website), Mastodon stressed that the project is not only a Mastodon project, but is intended to be used by the entire fediverse. Mastodon developer David Roetzel said that he hoped that the goal is that many servers will run a “Fediverse Auxillary Service Provider”. Personally I think that it is instructive to look at Bluesky here. While the AT Protocol is decentralised, in practice everyone uses infrastructure owned by the Bluesky company. I’m not convinced yet that the Fediverse Discovery Provider project will not run into the same problem, as I’m unclear on what the incentives are for people to run competing Fediverse Discovery Provider projects.
  • Some of the more interesting presentations I saw were about the integration of different types of protocols with ActivityPub. The ActivityPods project combines ActivityPub with Solid Pods, which shows quite some similarities with how the PDS system of ATProto works. All your data is stored on your Pod, multiple types of apps can connect to your Pod, and communicate via ActivityPub. It allows you to have a single account that is used for multiple platforms, similar with how your ATProto account can be used for multiple types of apps.
  • One of the most valuable parts of a conference like FOSDEM is getting developers together in a room to meet and build relationships. Fediforum has provided such a place for people to gather digitally, but meeting people in real life remains one of the best ways to build trust and relationships. Some practical ways this was visible this FOSDEM was by getting the NodeBB, WordPress ActivityPub plugin, WriteFreely and Ghost developers together and recognising themselves as the ‘longform’ people. This group of developers getting together this way helps with the various projects becoming more interoperable, and better support for longform content in the fediverse.

Two issues regarding consent and data processing this week. The first is with GoToSocial and fediverse statistics sites like fedidb.org and fediverse.observer. Some GoToSocial servers have blocked statistics sites from indexing their platforms via robots.txt, but the crawlers of fedidb.org and fediverse.observer ignore those. In response, the main GoToSocial server decided to serve up randomised numbers, messing up the statistics of these sites. Fedidb developer Daniel Supernault removed GoToSocial altogether from the statistics site, but does not seem to be willing to respect the opting out of crawling via robots.txt. The second is regarding the shutdown of FediOnFire, that displayed public posts from a relay in a format similar to one of Bluesky’s firehose visualisation tools.

  • How the fediverse treats consent for public posts is unusual, and make it stand out from other networks. For a significant group of people, consent for processing other people’s ‘Public’ ActivityPub posts is done on an opt-out bases if the service doing the processing is vaguely shaped like a full 2-way interacting fediverse server. In contrast, consent for processing other people’s ‘Public’ ActivityPub posts is done on an opt-in basis if the service doing the processing is vaguely shaped like a crawler. The line between these two situations is hard to draw, even more so in an internally coherent way. Still, this line clearly exists, and ignoring it leads to high-profile blowups such as with Searchtodon and Bridgy Fed. Defining the permissions clearly for posts would help here, and it is frustrated to see that the situation has not meaningfully improved in years. Furthermore, that fediverse stats sites have ignored the opt-out on a server level via robots.txt indicates that servers setting permissions is not a panacea either.

The Pixelfed Kickstarter has seen some updates this week. First was the update that setting up a Pixelfed Foundation is now moved to the stretch goal of $200k CAD, and that for $300k CAD the stretch goal is to expand the team to hire additional developers. A few days later, developer Daniel Supernault said that the $300k CAD stretch goal is now to build a Tumblr alternative. That brings the goal of the Pixelfed Kickstarter to build four platforms: Pixelfed, Loops, Sup (an encrypted messaging platform) and an unnamed Tumblr alternative, as well as building a foundation and a developer testing kit with Pubkit. Moving the foundation to a stretch goal that has not been met yet does not feel great to me, as good governance of such large platforms is highly important. Adding a Tumblr alternative to another later stretch goal also makes me concerned that Supernault is taking on too much here, as that is a lot of products to build and maintain.


Openvibe, a client that combines your Bluesky, Mastodon, Nostr and Threads account into a single feed, has raised 800k USD in outside investment, with Automattic among the investors. Openvibe is an early mover in the space, and it’s a name I regularly see pop up when people recommend clients. However, open networks and open APIs means that it is hard to build a competitive moat. Still, most apps are hobby projects, and I’m curious how far Openvibe can push their app with the new funding.

The Links

That’s all for this week, thanks for reading!

fediversereport.com/fediverse-

Detail in the city of Gouda
ALT text detailsDetail in the city of Gouda
Connected Places's avatar
Connected Places

@fediversereport@mastodon.social

New: Fediverse Report #102

This week's news:
- a large crowd for the at
- some controversies around data scraping on the fediverse
- @openvibe gets 800k in funding to further work on the multi-protocol client

Read at: fediversereport.com/fediverse-

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social · Reply to tesaguri 🦀🦝's post

@silverpill Yeah, as @tesaguri said, it's a property introduced by Fedibird, a Japanese fork of Mastodon.

tkgka's avatar
tkgka

@tkgka@universeodon.com

I’ve just contributed to Fedify. Consider supporting them too — every little helps! opencollective.com/fedify

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

We're excited to announce the release of Fedify 1.4.0! This release brings significant improvements to enhance compatibility and flexibility in federation.

Key Highlights

Activity transformers

Introduced a new system to adjust outgoing activities for better compatibility with various ActivityPub implementations. This includes automatic ID assignment for activities and actor dehydration to satisfy implementation quirks (looking at you, Threads!).

WebFinger customization

Added the ability to customize WebFinger responses through the new mapAlias() API, giving you more control over how your actors are discovered.

New interaction collections

Added support for shares, likes, and emojiReactions properties to the Object class, making it easier to access and traverse these interaction collections.

More flexible document/context loader

Document loader and context loader are now configurable through factory functions, giving you more control over how your application handles JSON-LD documents.

CLI improvements

The fedify lookup command now supports two new options:

Other enhancements

  • Added Context.getNodeInfo() method for easier NodeInfo access
  • Improved error handling in collection traversal and JSON-LD processing
  • Added support for private network access control in WebFinger lookups
  • User-Agent headers now automatically include your instance URL, making it easier for other servers to identify your instance

For the complete list of changes and bugfixes, please visit our changelog.

Whether you're building a new federated application or maintaining an existing one, 1.4.0 provides the tools you need for robust ActivityPub federation.

Supporting us

We're grateful to all our sponsors who make this project possible. Check out our new sponsors showcase page to see the amazing individuals and organizations supporting Fedify's development. If you'd like to support Fedify's development, please consider becoming a sponsor!

Upgrade now

You can install Fedify 1.4.0 from JSR or npm. Upgrade today and let us know what you think!

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

@hongminhee@hollo.social

Okay, I'm about to release 1.4.0. Probably today or tomorrow?

Julian Fietkau's avatar
Julian Fietkau

@julian@fietkau.social · Reply to a Jedi named Thiago's post

@jedi Thank you! Yeah, I know about Ghost of course, but @fedify deserves more external projects to show off what it can do. I hope we'll see some more come out this year. 😀 Do you know of any others that are in progress? I would follow dev logs if they're out there.

a Jedi named Thiago's avatar
a Jedi named Thiago

@jedi@bolha.us · Reply to Julian Fietkau's post

@julian good to see more projects built on top of Fedify.

I started mine because I needed to dust off backend stuff. And I felt exactly what you are feeling about "looks slow", but it's been a nice journey learning how to create a Fediverse service.

Keep on going!

Markus 🌱:fosse:'s avatar
Markus 🌱:fosse:

@markus@skvip.lol

Eg har nett støtta @fedify ! Dei har fleire kule prosjekt. @markus@prosa.skvip.lol køyrer på deira teneste @hollo.

English:
I've just contributed to They have several cool projects. @markus@prosa.skvip.lol runs on their service .

opencollective.com/fedify

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social · Reply to Fedify: ActivityPub server framework's post

We've just set up our sponsors showcase! You can now find our wonderful sponsors:

These pages are automatically updated every hour. Thank you to all our sponsors for supporting 's development!

Want to be listed? Support us on Open Collective: https://opencollective.com/fedify.

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

@hongminhee@hollo.social

As the maintainer of , I'd be grateful for your support to help keep the project sustainable! :fedify:

https://hollo.social/@fedify/0194b112-b604-7d03-84e0-4faaf4ab46cd

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

🎉 Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text detailsFedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

@fedify/markdown-it-hashtag, a markdown-it plugin that parses and renders Mastodon-style , just released 0.3.0! In this release, link, linkAttributes, and label callbacks became to take one more parameter, a markdown-it environment, which enables your hashtag rendering more flexible. For example, now hashtag links can be dynamically determined:

import MarkdownIt from "markdown-it";
import { hashtag } from "@fedify/markdown-it-hashtag";

const md = new MarkdownIt();
md.use(hashtag, {
  link: (tag: string, env: any) => `${env.origin}/tags/${tag.substring(1)}`
});
const html = md.render("Your Markdown text with #hashtags!", {
  origin: "https://example.com"
});

@fedify/markdown-it-hashtag 0.3.0 is available at both JSR and npm!

Andy Piper's avatar
Andy Piper

@andypiper@macaw.social

This is great - @fedify has launched an @opencollective to help sustain the project. This is a great library and framework that is helping many other projects grow into the . Shout-out to @hongminhee! (also to @liaizon for posting about it as well)

opencollective.com/fedify

wakest ⁂'s avatar
wakest ⁂

@liaizon@social.wake.st

Today @fedify launched an @opencollective to support the project.
@hongminhee has been doing amazing work on it. :fediverse: Fedify has shown itself to be one of the most promising ways for other projects to become part of the . If you liked seeing Ghost (@index) make such fast progress bringing in potentially thousands (millions?) of blogs and newsletters to the fediverse, this is what they are using behind the scenes! So lets support this project together!
opencollective.com/fedify

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

🎉 Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text detailsFedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social · Reply to Fedify: ActivityPub server framework's post

We've just set up our sponsors showcase! You can now find our wonderful sponsors:

These pages are automatically updated every hour. Thank you to all our sponsors for supporting 's development!

Want to be listed? Support us on Open Collective: https://opencollective.com/fedify.

:_ko::_ko::_a::_ni::_lya::_n:'s avatar
:_ko::_ko::_a::_ni::_lya::_n:

@cocoa_vrc@misskey.io

FediAuth、apsigが地味に未完成 (ActorのJSON-LDの問題もあるだろうけどFedify Inboxでの検証が通らない)なのでFedify使うことを検討中​:thonk:

yamanoku's avatar
yamanoku

@yamanoku@hollo.yamanoku.net

I've just contributed to Fedify. Consider supporting them too — every little helps! https://opencollective.com/fedify

おきん@しぃ!の🥫of🐟️'s avatar
おきん@しぃ!の🥫of🐟️

@okin_p@si.okin-jp.net

I've just contributed to Fedify. Consider supporting them too — every little helps! opencollective.com/fedify

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

:fedify: ♥️ :pixelfed:

https://mastodon.social/@dansup/113910607674823618

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

@hongminhee@hollo.social

Thank you so much, @dansup! Really appreciate your support! Your work in the fediverse community has been inspiring, and having you as our first supporter means a lot.

https://mastodon.social/@dansup/113910607674823618

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

🎉 Excited to announce that is now on Open Collective! Support the project's development starting at:

  • Backer (from $5/mo)
  • Supporter (from $25/mo)
  • Sponsor (from $100/mo)
  • Corporate Sponsor (from $500/mo)
  • Custom donations welcome

Your support will help us maintain and improve Fedify. Check it out here:

https://opencollective.com/fedify

:fedify:

Fedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
ALT text detailsFedify's Open Collective page showing the project logo, description as “A TypeScript library for building federated server apps powered by ActivityPub and other standards”, and five contribution tiers starting from $5/month Backer to $500/month Corporate Sponsor, with custom contribution options available.
Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

Valtteri Laitinen (@valtlai) managed to get running on Workers!

https://fedi.valtlai.fi/@valtlai/113906145660141267

Valtteri Laitinen's avatar
Valtteri Laitinen

@valtlai@valtlai.fi · Reply to Valtteri Laitinen's post

@thisismissem @fedify I got this working with the JSR package by adding a Temporal polyfill and stripping import attributes (see github.com/fedify-dev/fedify/i).

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social · Reply to Fedify: ActivityPub server framework's post

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! 🎉

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/fedify-dev.

Valtteri Laitinen's avatar
Valtteri Laitinen

@valtlai@valtlai.fi

Äh… Halusin koodata oman fediverseinstanssin @fedify​-kirjastolla. Alustana olisi Cloudflare (Workers, KV, D1, Queues, R2). Workersin Node.js-yhteensopivuustilasta huolimatta Fedify ei kuitenkaan toimi: palauttaa ainakin syntaksivirheitä. Turhauttaa!

Nyt sitten forkkaan Fedifyn toistaiseksi ja yritän saada sen toimimaan. En nimittäin halua ohjelmoida ActivityPub-palvelinta ilman apukirjastoa, enkä mielelläni vaihtaisi hostausympäristöäkään toiseen.

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social · Reply to Fedify: ActivityPub server framework's post

We've just moved the project and related repositories to our new GitHub organization account, @fedify-dev! 🎉

Here's what moved:

All repositories have been transferred and GitHub's automatic redirects are in place, so existing links will continue to work. Also, the project's core functionality and development process remain unchanged.

Thanks to everyone who participated in our naming poll. Looking forward to Fedify's continued growth under its new organizational home!

:fedify: New GitHub organization: https://github.com/fedify-dev.

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social · Reply to 's post

@sash Here is our answer!

https://hollo.social/@fedify/0194a1d2-65ba-73f2-960d-82f322cf7e25

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social · Reply to Darius Kruythoff's post

@dkruythoff @daniel

We appreciate the thoughtful suggestions about moving Fedify to platforms like Codeberg that better align with the federation ideals our project upholds. These suggestions raise important points about corporate centralization and the broader FOSS ecosystem that we've carefully considered.

After thorough deliberation, we plan to keep Fedify's primary repository on GitHub for the foreseeable future. This decision stems from several practical considerations:

First, we aim to make Fedify as accessible as possible to potential contributors. While platforms like Codeberg represent important alternatives, GitHub remains the platform most developers are familiar with, particularly in the JavaScript/TypeScript ecosystem where Fedify operates.

Second, GitHub currently provides significant visibility benefits that help us reach more developers who could benefit from or contribute to Fedify. As a relatively new project, this broader reach is particularly valuable for building our community.

Additionally, our package registry JSR's provenance attestation feature, which we rely on for security guarantees, currently only supports GitHub Actions integration. This technical dependency would make migration particularly challenging at this time.

However, we recognize the value in supporting more decentralized platforms. As a middle ground, we are considering setting up a mirror repository on Codeberg. This would provide an alternative access point while maintaining our GitHub presence.

We're committed to regularly reassessing this position as the ecosystem evolves and as alternative platforms continue to mature.

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social · Reply to Darius Kruythoff's post

@dkruythoff @daniel

We appreciate the thoughtful suggestions about moving Fedify to platforms like Codeberg that better align with the federation ideals our project upholds. These suggestions raise important points about corporate centralization and the broader FOSS ecosystem that we've carefully considered.

After thorough deliberation, we plan to keep Fedify's primary repository on GitHub for the foreseeable future. This decision stems from several practical considerations:

First, we aim to make Fedify as accessible as possible to potential contributors. While platforms like Codeberg represent important alternatives, GitHub remains the platform most developers are familiar with, particularly in the JavaScript/TypeScript ecosystem where Fedify operates.

Second, GitHub currently provides significant visibility benefits that help us reach more developers who could benefit from or contribute to Fedify. As a relatively new project, this broader reach is particularly valuable for building our community.

Additionally, our package registry JSR's provenance attestation feature, which we rely on for security guarantees, currently only supports GitHub Actions integration. This technical dependency would make migration particularly challenging at this time.

However, we recognize the value in supporting more decentralized platforms. As a middle ground, we are considering setting up a mirror repository on Codeberg. This would provide an alternative access point while maintaining our GitHub presence.

We're committed to regularly reassessing this position as the ecosystem evolves and as alternative platforms continue to mature.

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social · Reply to Darius Kruythoff's post

@dkruythoff @daniel

We appreciate the thoughtful suggestions about moving Fedify to platforms like Codeberg that better align with the federation ideals our project upholds. These suggestions raise important points about corporate centralization and the broader FOSS ecosystem that we've carefully considered.

After thorough deliberation, we plan to keep Fedify's primary repository on GitHub for the foreseeable future. This decision stems from several practical considerations:

First, we aim to make Fedify as accessible as possible to potential contributors. While platforms like Codeberg represent important alternatives, GitHub remains the platform most developers are familiar with, particularly in the JavaScript/TypeScript ecosystem where Fedify operates.

Second, GitHub currently provides significant visibility benefits that help us reach more developers who could benefit from or contribute to Fedify. As a relatively new project, this broader reach is particularly valuable for building our community.

Additionally, our package registry JSR's provenance attestation feature, which we rely on for security guarantees, currently only supports GitHub Actions integration. This technical dependency would make migration particularly challenging at this time.

However, we recognize the value in supporting more decentralized platforms. As a middle ground, we are considering setting up a mirror repository on Codeberg. This would provide an alternative access point while maintaining our GitHub presence.

We're committed to regularly reassessing this position as the ecosystem evolves and as alternative platforms continue to mature.

← Newer
Older →