Fedify: ActivityPub server framework's avatar

Fedify: ActivityPub server framework

@fedify@hollo.social

9 following1,121 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.

Pinned

🎉 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

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.

Pinned

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/

fedify.dev

Fedify

Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse.

The translation of @monaco_koukoku's review on the Japanese version of Creating your own federated microblog:

I read about 70% of the Fedify book on the plane. It was carefully explained step by step, and I could easily understand the contents. Maybe it's because I have researched on implementing ActivityPub before, but I got the impression that I can create it easily. It is also good that there are plenty of ways to check how the implementation works. (I didn't know such a service existed…)

Fedify's only role is to speak ActivityPub, so you need to write your own UI and store data in a database (examples of each are included), but this also means that you can use any UI framework or relational database you like, which opens up a wide range of application possibilities. However, if Fedify does nothing too much, it will just be a hassle, so it is probably a good balance between the two. (Note: I'm saying this before I've even gotten around to doing it myself yet.)

https://fedibird.com/@monaco_koukoku/113378450321946172

fedibird.com

モナコ広告 :fedibird1: @技術・雑談 (@monaco_koukoku@fedibird.com)

Fedify本、飛行機の中で7割くらい読んだ。 丁寧に順を追って解説されていて、すんなり内容が入ってきた。以前ActivityPubの実装を調べたことがあるからかもしれないが、すぐ作れそうな印象を受けた。実装の動作確認方法が豊富なのも良い。(こんなサービスあったんだ、ってなった) Fedifyの役割はAPを喋ることだけなので、UIもDBへの保存処理も自分で書く必要があるが(それぞれ実装例は付いている)、逆に言えば好きなUIフレームワークやRDBを使えるということを意味しており、応用可能性が広がる。しかしFedifyが何もしなさすぎても面倒なだけなので、そこのバランスがよくできているということだろう。(※まだ自分で手を動かす前の段階で言っている)

@monaco_koukoku@fedibird.com

Fedify本、飛行機の中で7割くらい読んだ。
丁寧に順を追って解説されていて、すんなり内容が入ってきた。以前ActivityPubの実装を調べたことがあるからかもしれないが、すぐ作れそうな印象を受けた。実装の動作確認方法が豊富なのも良い。(こんなサービスあったんだ、ってなった)

Fedifyの役割はAPを喋ることだけなので、UIもDBへの保存処理も自分で書く必要があるが(それぞれ実装例は付いている)、逆に言えば好きなUIフレームワークやRDBを使えるということを意味しており、応用可能性が広がる。しかしFedifyが何もしなさすぎても面倒なだけなので、そこのバランスがよくできているということだろう。(※まだ自分で手を動かす前の段階で言っている)

@thisismissem@hachyderm.io · Reply to Emelia 👸🏻

This would propagate through @fedify to implementations (e.g., Hollo) where they would fail to lookup the @context for schema.org, which would prevent fetching Actor documents from GoToSocial 0.19.x

cc @gotosocial in case this is something you want to improve on your side

@thisismissem@hachyderm.io

Fixed a rather gnarly bug in @fedify last night where schema.org's @context wasn't being resolved correctly because schema.org doesn't do content-neg and instead using link alternate headers to point to the JSON-LD context document. However, instead of using a fully qualified URL, it used a relative URL to the initial request, which caused Fedify to fail to fetch that context.

github.com/dahlia/fedify/pull/

github.com

Fix incorrect handling of relative path URIs in link alternate headers by ThisIsMissEm · Pull Request #155 · dahlia/fedify

I think I've gotten this change right, essentially the code would try to resolve http://schema.org/ be redirected to https://schema.org/ and get back a link alternate with: link: </docs/json...

@monaco_koukoku@fedibird.com

でFedify本を入手した!​ :ablobattention:

明日の飛行機の中で読もうかな。
朝が早いので爆睡の可能性もあるが…

『自分だけのフェディバースマイクロブログを作ろう!』(洪民憙著)表紙
ALT text

『自分だけのフェディバースマイクロブログを作ろう!』(洪民憙著)表紙

@pablo@sivar.cafe

As someone who works mainly in the front-end, ActivityPup (and related) always felt quite overwhelming and complicated to understand. I’ve been playing around with for the past week or so and the documentation is so good it all just clicked for me! (I think so, at least :p)

Really excited to see what people build as ActivityPub becomes more approachable!

fedify.dev

fedify.dev

Fedify

Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse.

10月26日(土)に開催されるOSC 2024 Tokyo/FallにFedify/Hollo合同で出展します!可愛いFedifyのロゴのシールと『自分だけのフェディバースのマイクロブログを作ろう!』日本語版の紙の本を持って行く予定です。よろしくお願いします。

https://event.ospn.jp/osc2024-fall/

event.ospn.jp

オープンソースカンファレンス2024 Tokyo/Fall

オープンソースの今を知る、オープンソースの文化祭。OSC2024 Tokyo/Fall

@hongminhee@fosstodon.org · Reply to 洪 民憙 (Hong Minhee)

I'm bringing along the Japanese version of the tutorial, Creating your own federated microblog.

github.com/dahlia/fedify-micro

The cover of the Japanese version of the Fedify tutorial, Creating your own federated microblog.
ALT text

The cover of the Japanese version of the Fedify tutorial, Creating your own federated microblog.

A page of the Japanese version of the Fedify tutorial, Creating your own federated microblog.
ALT text

A page of the Japanese version of the Fedify tutorial, Creating your own federated microblog.

Due to the Internet Archive's unavailability, the https://purl.archive.org/socialweb/webfinger context is unable to be loaded, so a patch was made to preload (embed) the JSON-LD context. This patch was applied to versions 0.15.3, 1.0.5, and 1.1.1, so please update if you are experiencing this issue.

Release Fedify 1.1.1 · dahlia/fedify

Released on October 23, 2024. The fetchDocumentLoader() function now preloads the following JSON-LD context: https://purl.archive.org/socialweb/webfinger.

@internetarchive@mastodon.archive.org
Last week, along with a DDOS attack and exposure of patron email addresses and encrypted passwords, the Internet Archive’s website javascript was defaced, leading us to bring the site down to access and improve our security. 

The stored data of the Internet Archive is safe and we are working on resuming services safely. This new reality requires heightened attention to cyber security and we are responding. We apologize for the impact of these library services being unavailable.

The Wayback Machine, Archive-It, scanning, and national library crawls have resumed, as well as email, blog, helpdesk, and social media communications.  Our team is working around the clock across time zones to bring other services back online. In coming days more services will resume, some starting in read-only mode as full restoration will take more time. 

We’re taking a cautious, deliberate approach to rebuild and strengthen our defenses. Our priority is ensuring the Internet Archive comes online stronger and more secure.

As a library community, we are seeing other cyber attacks—for instance the British Library, Seattle Public Library, Toronto Public Library, and now Calgary Public Library. We hope these attacks are not indicative of a trend.

For the latest updates, please check this blog and our official social media accounts: X/Twitter, Bluesky and Mastodon.

Thank you for your patience and ongoing support.
ALT text

Last week, along with a DDOS attack and exposure of patron email addresses and encrypted passwords, the Internet Archive’s website javascript was defaced, leading us to bring the site down to access and improve our security. The stored data of the Internet Archive is safe and we are working on resuming services safely. This new reality requires heightened attention to cyber security and we are responding. We apologize for the impact of these library services being unavailable. The Wayback Machine, Archive-It, scanning, and national library crawls have resumed, as well as email, blog, helpdesk, and social media communications. Our team is working around the clock across time zones to bring other services back online. In coming days more services will resume, some starting in read-only mode as full restoration will take more time. We’re taking a cautious, deliberate approach to rebuild and strengthen our defenses. Our priority is ensuring the Internet Archive comes online stronger and more secure. As a library community, we are seeing other cyber attacks—for instance the British Library, Seattle Public Library, Toronto Public Library, and now Calgary Public Library. We hope these attacks are not indicative of a trend. For the latest updates, please check this blog and our official social media accounts: X/Twitter, Bluesky and Mastodon. Thank you for your patience and ongoing support.

@hongminhee@fosstodon.org · Reply to 洪 民憙 (Hong Minhee)

The version 1.1.0 of , an server framework, released! The key changes include:

  • Added uility functions for traversing remote collections. See also the Traversing remote collections section in the docs.

  • Added EmojiReact class to Activity Vocabulary API. [FEP-c0e0]

  • Added successor property to the Actor types in the Activity Vocabulary API.

  • Added DidService class to Activity Vocabulary API. [FEP-9091]

  • Added Export class to Activity Vocabulary API. [FEP-9091]

  • Added service property to the Actor types in the Activity Vocabulary API. [FEP-9091]

  • The default time window for verifying HTTP Signatures of incoming requests is now an hour (was a minute). This new default window is according to the ActivityPub and HTTP Signatures document.

  • In the fedify inbox command's web interface, the Raw Activity tab is added to show the raw JSON object of the received activity.

For details, see the full changelog as well!

Release Fedify 1.1.0 · dahlia/fedify

Released on October 20, 2024. Added utility functions for traversing remote collections. [#150] Added Context.traverseCollection() method. Added traverseCollection() function. Added TraverseColl...

The version 1.1.0 of , an server framework, released! The key changes include:

  • Added uility functions for traversing remote collections. See also the Traversing remote collections section in the docs.

  • Added EmojiReact class to Activity Vocabulary API. [FEP-c0e0]

  • Added successor property to the Actor types in the Activity Vocabulary API.

  • Added DidService class to Activity Vocabulary API. [FEP-9091]

  • Added Export class to Activity Vocabulary API. [FEP-9091]

  • Added service property to the Actor types in the Activity Vocabulary API. [FEP-9091]

  • The default time window for verifying HTTP Signatures of incoming requests is now an hour (was a minute). This new default window is according to the ActivityPub and HTTP Signatures document.

  • In the fedify inbox command's web interface, the Raw Activity tab is added to show the raw JSON object of the received activity.

For details, see the full changelog as well!

Release Fedify 1.1.0 · dahlia/fedify

Released on October 20, 2024. Added utility functions for traversing remote collections. [#150] Added Context.traverseCollection() method. Added traverseCollection() function. Added TraverseColl...

The Japanese version of the tutorial, Creating your own federated microblog, is now available in paperback!

Note that the AsciiDoc source of the book is fully open source, which is available at this repository!

https://fedibird.com/@hongminhee/113331365440336287

fedibird.com

洪 民憙(ホン・ミンヒ) (@hongminhee@fedibird.com)

添付: 2 枚の画像 印刷所に注文した『自分だけのフェディバースのマイクロブログを作ろう!』の紙の本、到着した‼️

now has an driver! This means you can use as Fedify's message queue. To use it, first install the @fedify/amqp package, then set it up like below:

import { createFederation } from "@fedify/fedify";
import { AmqpMessageQueue } from "@fedify/amqp";
import { connect } from "amqplib";

const federation = createFederation({
  queue: new AmqpMessageQueue(await connect("amqp://localhost")),
  // ... other configurations
});

Oh, and we've also added results from AmqpMessageQueue to our benchmarks.

The results of the benchmarks for Fedify's outbox queue.
ALT text

The results of the benchmarks for Fedify's outbox queue.

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/

fedify.dev

Fedify

Fedify is a TypeScript library for building federated server apps powered by ActivityPub and other standards, so-called fediverse.

now has an driver! This means you can use as Fedify's message queue. To use it, first install the @fedify/amqp package, then set it up like below:

import { createFederation } from "@fedify/fedify";
import { AmqpMessageQueue } from "@fedify/amqp";
import { connect } from "amqplib";

const federation = createFederation({
  queue: new AmqpMessageQueue(await connect("amqp://localhost")),
  // ... other configurations
});

Oh, and we've also added results from AmqpMessageQueue to our benchmarks.

The results of the benchmarks for Fedify's outbox queue.
ALT text

The results of the benchmarks for Fedify's outbox queue.