Lobsters
Fedify 1.0.0 released by @hongminhee https://lobste.rs/s/khzn8u #distributed #web
https://github.com/dahlia/fedify/discussions/141
@[email protected] · 7 following · 373 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.
Website | GitHub | JSR | npm |
---|---|---|---|
Fedify 1.0.0 released by @hongminhee https://lobste.rs/s/khzn8u #distributed #web
https://github.com/dahlia/fedify/discussions/141
activitypub typescript server framework called Fedify announces first stable release. It is being used by the open source Ghost CMS platform. Can't wait to see what other apps are created with Fedify
Github repo here: https://github.com/dahlia/fedify/releases/tag/1.0.0
#fedify #framework #typescript #activitypub #foss #opensource #oss #ghostcms #ghostblog #fediverse
@[email protected] · Reply to Pelle Wessman's post
@voxpelli No, we haven't been aware of the SWF until yesterday.
Fedify, an ActivityPub framework, has finally released its first stable version, 1.0.0! Here are key changes:
From this version, the term handle across Fedify will only be used to refer to fediverse handles (e.g., @[email protected]
). An actor's internal unique ID (e.g., b379dbdc-3b4f-4ef4-88c2-fc25632d1c22
) is referred to as an identifier, and the WebFinger name (e.g., hongminhee
) is referred to as a username.
The term handle in the API will be maintained for a while for backward compatibility, but deprecation warnings will be logged, and it is planned to be removed in the future.
For more details, please refer to the related documentation.
Linked Data Signatures is an outdated standard, but it's still relied upon by major fediverse implementations such as Mastodon.
In addition to HTTP Signatures and Object Integrity Proofs, Fedify now supports Linked Data Signatures from this version, thus supporting all types of signature methods used in the fediverse. This makes Fedify an ActivityPub implementation with the best interoperability.
However, Fedify users don't need to do anything special to use Linked Data Signatures. If an incoming activity has Linked Data Signatures, it automatically verifies the signature, and all outgoing activities will have signatures in three formats: HTTP Signatures, Linked Data Signatures, and Object Integrity Proofs.
For more details, please refer to the related documentation.
From this version, you can forward activities received in the inbox to other actors using the InboxContext.forwardActivity()
method.
At first glance, you might think that you could just resend an activity received in the inbox using the Context.sendActivity()
method. However, if you do this, the original signature is removed before the activity is delivered to the inbox, and when sending it, the signature of the forwarding actor is attached instead, causing the receiving side of the forwarded activity to not trust it.
On the other hand, when using the InboxContext.forwardActivity()
method, the activity is forwarded with the original signature preserved, avoiding this problem. (Of course, the original activity itself must be signed with Linked Data Signatures or Object Integrity Proofs.)
For more details, please refer to the related documentation.
Delete(Application)
on fedify inbox
terminationFrom this version, fedify inbox
will send a Delete(Application)
activity to all peer servers it encountered when terminated. This is typically an activity sent when deleting an account, which will help prevent residual data related to temporary actors from remaining on other servers.
The @fedify/postgres package, which implements PostgreSQL drivers for the KvStore
and MessageQueue
interfaces, has been released alongside this version.
The PostgreSQL driver is a backend that can be sufficiently used in production, especially recommended for projects already using PostgreSQL.
Additionally, an option to select the PostgreSQL driver has been added to the fedify init
command.
With the release of version 1.0.0, Fedify will now maintain API backward compatibility as much as possible. (Of course, in the long term, there may be a 2.0.0 that breaks backward compatibility.) This should be good news for those who have been hesitant to use Fedify because there hasn't been a stable version until now!
So, hoping that more services will support ActivityPub in the future, I conclude this post!
@[email protected] · Reply to Fedify: an ActivityPub server framework's post
Okay, now #Fedify implements misskey:isCat
property, and it will be shipped with Fedify v1.0.0.
https://github.com/dahlia/fedify/commit/f75c19cf84cabb012e68e2893ce63c10c4416b21
Does #Fedify need to support the misskey:isCat
property?
Option | Voters |
---|---|
Should support it. | 21 (75%) |
Does not need to support it. | 7 (25%) |
Looks like #Fedify v1.0.0 will be released this week! Is there anything you'd like to see added or fixed before then?
The next version of #Fedify, v1.0, adds ParallelMessageQueue
, which makes it easy to parallelize sending and receiving activities without increasing the number of processes or nodes.
It's available for preview in v1.0.0-dev.408+f4e245b4 (JSR & npm).
https://unstable.fedify.dev/manual/mq#parallel-message-processing
I'm quietly really pleased with having been the mover for this change in @fedify.
Too many ActivityPub servers have put usernames in Actor URLs and it creates a complete mess when wanting to allow users to change their usernames, and created other confusion when you had non-user Actors that you wish to federate.
Here's the PR that prompted the change: https://github.com/dahlia/fedify/pull/140
https://hollo.social/@fedify/01920e31-2b71-7d3e-9d05-f5a6f347598b
I'm quietly really pleased with having been the mover for this change in @fedify.
Too many ActivityPub servers have put usernames in Actor URLs and it creates a complete mess when wanting to allow users to change their usernames, and created other confusion when you had non-user Actors that you wish to federate.
Here's the PR that prompted the change: https://github.com/dahlia/fedify/pull/140
https://hollo.social/@fedify/01920e31-2b71-7d3e-9d05-f5a6f347598b
@[email protected] · Reply to Fedify: an ActivityPub server framework's post
The #Fedify docs now have a section on actor identifiers and #WebFinger usernames.
https://unstable.fedify.dev/manual/actor#actor-identifier-and-webfinger-username
Starting with #Fedify v1.0.0, the term handle
throughout Fedify will only be used to refer to a fediverse handle (e.g., @[email protected]
). An actor's internal unique ID (e.g., b379dbdc-3b4f-4ef4-88c2-fc25632d1c22
) will be referred to as identifier
and a WebFinger name (e.g., hongminhee
) will be referred to as username
. The term handle
in the API will be retained for the time being for backwards compatibility, but a deprecation warning will be logged and will be deprecated in the future.
Q: Which does your #ActivityPub implementation implement, HTTP Signatures, Linked Data Signatures, or Object Integrity Proofs?
In the next release of #Fedify, v1.0.0, you'll be able to forward received activities inside an inbox listener without any modifications.
You can preview this feature in v1.0.0-dev.398+5c6e1394 (JSR & npm).
https://unstable.fedify.dev/manual/inbox#forwarding-activities-to-another-server
Once the next version of #Fedify, v1.0.0, is released, the API will be stabilized. Are there any features you'd like to see before the API is stabilized?
Q: Which does your #ActivityPub implementation implement, HTTP Signatures, Linked Data Signatures, or Object Integrity Proofs?
@[email protected] · Reply to Antolius's post
@antolius We're definitely thinking about implementing C2S interactions, and it's certainly on our roadmap! But the problem is that we don't have a de facto standard for authentication yet.
Once the next version of #Fedify, v1.0.0, is released, the API will be stabilized. Are there any features you'd like to see before the API is stabilized?
@[email protected] · Reply to Sean Tilley's post
1/3 @deadsuperhero As someone new to developing ActivityPub apps the poor documentation was a big turn off. @fedify have done a great job in making it easier to build new apps and their documentation is much better. The new book by @evan is also a great read for new AP developers.
However given that the Activity Vocab was defined way back in 2017 by the W3C and Mastodon the biggest AP client still doesn't support all the verbs is a disappointment. e.g summary, listen etc.
@squaredot3301 Integrating with more web frameworks is always on Fedify's roadmap, so if there's a web framework you're looking for in particular, open an issue in our issue tracker!
In the next release of #Fedify, v1.0.0, you'll be able to forward received activities inside an inbox listener without any modifications.
You can preview this feature in v1.0.0-dev.398+5c6e1394 (JSR & npm).
https://unstable.fedify.dev/manual/inbox#forwarding-activities-to-another-server
#Fedify started out exclusively for #Deno, but now also supports #Node.js and #Bun. However, the #logo we created in the early days still features the character from Deno. Should Fedify change its logo now?
Option | Voters |
---|---|
Yes, because it's misleading. | 5 (28%) |
A logo is a logo, no need to change it. | 13 (72%) |
@[email protected] · Reply to Darius Kazemi's post
@darius Fedify is super cool. I’ve been eyeing it for some future projects, just gotta get better at JavaScript 😅
It’s pretty wild, though, that you can totally take this library, and spin up a working Fediverse app with it. Having to do all of the federation stuff from scratch seems like it would be a nightmare.
Damn... Fedify is really good. It seems like the ActivityPub library I always wanted for Node applications (rather than a reference server like the one I created for ExpressJS).
I love that it's built so you can take an existing app and quickly drop in the federation features you need (like oh okay I need my application to Follow/Accept/Reject/Undo and have the ability to Create an Article but that's it, cool, Fedify has me covered)
@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post
One of the benefits of #Fedify is that you don't have to worry about whether a property of an Activity Vocabulary object has a URL or embeds an actual object. If you need an object, you can call the `getObject()` method (which will fetch a remote object if necessary). If you need a URI, you can access the `objectId` property.
https://fedify.dev/manual/vocab#object-ids-and-remote-objects
#Fedify has over 400 stars on GitHub now! 🎊
Creating your own federated microblog by @hongminhee https://lobste.rs/s/albrk0 #distributed #web
https://fedify.dev/tutorial/microblog
LobstersにFedifyチュートリアル「自分だけのフェディバースのマイクロブログを作ろう!」の英語版を投稿しました。
https://lobste.rs/s/albrk0/creating_your_own_federated_microblog
I submitted the @fedify tutorial “Creating your own federated microblog” to @lobsters!
https://lobste.rs/s/albrk0/creating_your_own_federated_microblog