Fedify: ActivityPub server framework's avatar

Fedify: ActivityPub server framework

@fedify@hollo.social

9 following1,147 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/

@hongminhee@fosstodon.org

여러분의 인스턴스를 `fedify node` 커맨드를 써서 `neofetch` 스타일로 비주얼라이즈 해보고, 해시태그와 함께 올려보세요!

`fedify` 커맨드를 깔려면 아래 링크에 적힌대로 따라하시면 됩니다!

fedify.dev/cli#installation

`fedify node -b misskey.io` 커맨드의 아웃풋.
ALT text

`fedify node -b misskey.io` 커맨드의 아웃풋.

`fedify node -b venera.social` 커맨드의 아웃풋.
ALT text

`fedify node -b venera.social` 커맨드의 아웃풋.

`fedify node https://hollo.social/@fedify` 커맨드의 아웃풋.
ALT text

`fedify node https://hollo.social/@fedify` 커맨드의 아웃풋.

`fedify node fosstodon.org` 커맨드의 아웃풋.
ALT text

`fedify node fosstodon.org` 커맨드의 아웃풋.

@kur0den0010@chpk.kur0den.net

➜  ~ fedify node -b chpk.kur0den.net
✔ NodeInfo document fetched.
chpk.kur0den.net
================
Software:
  cherrypick v4.12.0
  https://github.com/kokonect-link/cherrypick
  https://github.com/kokonect-link/cherrypick
Protocols:
  activitypub
Outbound services:
  atom1.0
  rss2.0
Users:
  8 (total)
Local posts:
  41,891
Local comments:
  0
Open registrations:
  No

@hongminhee@fedibird.com

皆さんのフェディバース上のサーバーを`fedify node`コマンドで可視化して「」ハッシュタグで共有してください!
QT: hollo.social/@fedify/0192e1c1-
[参照]

Visualize your server in the fediverse with the fedify node command and share it with us using the hashtag!

(See also how to install the fedify command.)

The result of fedify node https://hollo.social/@fedify command. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify node https://hollo.social/@fedify command. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup venera.social. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup venera.social. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup misskey.io. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup misskey.io. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup fosstodon.org. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup fosstodon.org. The NodeInfo document is visualized along with the favicon.

Visualize your server in the fediverse with the fedify node command and share it with us using the hashtag!

(See also how to install the fedify command.)

The result of fedify node https://hollo.social/@fedify command. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify node https://hollo.social/@fedify command. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup venera.social. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup venera.social. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup misskey.io. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup misskey.io. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup fosstodon.org. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup fosstodon.org. The NodeInfo document is visualized along with the favicon.

@poes@kauaku.us

#fedify

minat tapi kayaknya terlalu overkill untuk 1 user instance, butuh postgres, redis dll.

Fedify CLI : node info for kauaku.us
ALT text

Fedify CLI : node info for kauaku.us

@aliceif@mkultra.x27.one

post your neofetch fedify node outputs!
https://fedify.dev/cli

console output for fedify node mkultra.x27.one -b
on the left, an ascii art version of the lily flowers server icon
on the right, information
Software:
  misskey v2024.10.1
  https://misskey-hub.net/
Protocols:
  activitypub
Outbound services:
  atom1.0
  rss2.0
Users:
  17 (total)
Local posts:
  8,559
Local comments:
  0
Open registrations:
  No
ALT text

console output for fedify node mkultra.x27.one -b on the left, an ascii art version of the lily flowers server icon on the right, information Software: misskey v2024.10.1 https://misskey-hub.net/ Protocols: activitypub Outbound services: atom1.0 rss2.0 Users: 17 (total) Local posts: 8,559 Local comments: 0 Open registrations: No

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

For details, see the full changelog as well!

Fedify 1.2.0 is available at JSR and npm.

Starting with the next release of , v1.2.0, we will support traceable logs for easier debugging. Fedify's traceable logs are implemented using the implicit contexts introduced in LogTape 0.7.0, and most of the logs that Fedify records are given a requestId or messageId. This means that logs can be grouped into requests or background tasks for better analysis.

Want to try it out in advance? Try Fedify v1.2.0-dev.468+2e17cd69 (JSR & npm)!

@thisismissem@hachyderm.io · Reply to colin mitchell
botsin.space PSA

@muffinista that's quite sad news, but I understand it.

Is your fork of Mastodon open-source? (it should be but y'know)

I'm thinking maybe the next-generation botsin.space could be running something more specialised for bots?

e.g., something written on @fedify instead of mastodon

The next release of Fedify will introduce the fedify node command, which fetches the NodeInfo of the asked instance and visualizes it in neofetch-style.

The result of fedify lookup misskey.io. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup misskey.io. The NodeInfo document is visualized along with the favicon.

The result of fedify node https://hollo.social/@fedify command. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify node https://hollo.social/@fedify command. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup venera.social. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup venera.social. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup fosstodon.org. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup fosstodon.org. The NodeInfo document is visualized along with the favicon.

The next release of Fedify will introduce the fedify node command, which fetches the NodeInfo of the asked instance and visualizes it in neofetch-style.

The result of fedify lookup misskey.io. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup misskey.io. The NodeInfo document is visualized along with the favicon.

The result of fedify node https://hollo.social/@fedify command. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify node https://hollo.social/@fedify command. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup venera.social. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup venera.social. The NodeInfo document is visualized along with the favicon.

The result of fedify lookup fosstodon.org. The NodeInfo document is visualized along with the favicon.
ALT text

The result of fedify lookup fosstodon.org. The NodeInfo document is visualized along with the favicon.

@thisismissem@hachyderm.io

If you're running GoToSocial prior to v0.17.0, please, for the love of all good developers sanity, please upgrade.

GoToSocial prior to v0.17.0 had a broken JSON-LD context, which prevents federation from working correctly with some servers (e.g., anything built on Fedify)

Screenshot of GoToSocial versions according to FediDB, something like 25% of servers are pre version 0.17.0
ALT text

Screenshot of GoToSocial versions according to FediDB, something like 25% of servers are pre version 0.17.0

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

@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/

@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

@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.

@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.