Fedify: an ActivityPub server framework's avatar

Fedify: an ActivityPub server framework

@[email protected] · 7 following · 372 followers

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.

WebsiteGitHubJSRnpm

https://fedify.dev/

https://github.com/dahlia/fedify

https://jsr.io/@fedify/fedify

https://www.npmjs.com/package/@fedify/fedify

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

@[email protected]

It's the output of the fedify node command for fosstodon.org.

The output of the fedify node command for fosstodon.org.
The output of the fedify node command for fosstodon.org.
aliceif's avatar
aliceif

@[email protected]

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
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
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

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.

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

@[email protected]

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)!

Emelia 👸🏻's avatar
Emelia 👸🏻

@[email protected] · Reply to colin mitchell's post

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

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

@[email protected]

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 node https://hollo.social/@fedify command. 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.
The result of fedify lookup venera.social. 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.
The result of fedify lookup fosstodon.org. 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.
The result of fedify lookup misskey.io. 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.
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

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 node https://hollo.social/@fedify command. 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.
The result of fedify lookup venera.social. 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.
The result of fedify lookup fosstodon.org. 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.
The result of fedify lookup misskey.io. 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.
Emelia 👸🏻's avatar
Emelia 👸🏻

@[email protected]

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
Screenshot of GoToSocial versions according to FediDB, something like 25% of servers are pre version 0.17.0
Fedify: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

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

モナコ広告 :fedibird1: @技術・雑談's avatar
モナコ広告 :fedibird1: @技術・雑談

@[email protected]

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

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

Emelia 👸🏻's avatar
Emelia 👸🏻

@[email protected] · Reply to Emelia 👸🏻's post

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

Emelia 👸🏻's avatar
Emelia 👸🏻

@[email protected]

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/

洪 民憙(ホン・ミンヒ)'s avatar
洪 民憙(ホン・ミンヒ)

@[email protected] · Reply to 洪 民憙(ホン・ミンヒ)'s post

今日Fedify/Holloのブースに訪問してくれた皆様、本当にありがとうございました‼️機会があれば是非またお会いましょう!

洪 民憙(ホン・ミンヒ)'s avatar
洪 民憙(ホン・ミンヒ)

@[email protected] · Reply to 洪 民憙(ホン・ミンヒ)'s post

FedifyとHolloのブースです!

NTSK's avatar
NTSK

@[email protected]

初手Holloさん!!

モナコ広告 :fedibird1: @技術・雑談's avatar
モナコ広告 :fedibird1: @技術・雑談

@[email protected]

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

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

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

@[email protected] · Reply to Anil Dash's post

The main way to do that is to use a library that implements ActivityPub for you, like Fedify. https://fedify.dev/

Pablo Berganza (he/him)'s avatar
Pablo Berganza (he/him)

@[email protected]

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: an ActivityPub server framework's avatar
Fedify: an ActivityPub server framework

@[email protected]

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

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

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

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

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.
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.
A page of the Japanese version of the Fedify tutorial, Creating your own federated microblog.
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@[email protected]

I'm off to Tokyo tomorrow to attend OSC2024 Tokyo/Fall this Saturday!

event.ospn.jp/osc2024-fall/

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

@[email protected]

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's avatar
internetarchive

@[email protected]

Latest update from @brewsterkahle (Oct 17, 5:58pm): blog.archive.org/2024/10/18/in

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.
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.
Charles Chin's avatar
Charles Chin

@[email protected]

Fedify 越来越强大了,官方甚至还出了一篇教程: fedify.dev/tutorial/microblog

段風桜 Dampuzakura(わかいい)'s avatar
段風桜 Dampuzakura(わかいい)

@[email protected]

dahlia/microblog: A simple federated microblog example using Fedify for educational purpose

github.com/dahlia/microblog

Windowsで試してみた

> This program is for educational purposes only. Do not use it for any other purpose, since it has not been tested for security.
だけどこれ普通に使えたら便利そう

fedify.dev/
@fedify

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

@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post

Want to build your own software? Follow the tutorial for , the ActivityPub server framework!

fedify.dev/tutorial/microblog

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

@[email protected]

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!

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

@[email protected]

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!

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

@[email protected]

Let's create your own implementation using !

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

@[email protected]

Even though I am a slow coder, it only took me about a month to create most of 's features in . Having a framework makes a huge difference in productivity.

Hollo's avatar
Hollo

@[email protected]

We now have and 's official server! Join us now!

https://discord.gg/hGXXxUq2jK

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

@[email protected]

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

Older →