![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
#fedidev
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post
#Fedify now has a queue for incoming activities and they are automatically retried when they fail. The default retry strategy is good enough (exponential backoff + decorrelated jitter), and it's even fully customizable. Updated also the docs:
https://unstable.fedify.dev/manual/inbox#making-inbox-listeners-non-blocking
You can give it a try by installing 0.12.0-dev.265+cb851932, the latest unstable release:
https://jsr.io/@fedify/[email protected]ev.265+cb851932
https://www.npmjs.com/package/@fedify/fedify/v/0.12.0-dev.265
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
In the next version of #Fedify, the #RetryPolicy type is introduced to let you fully customize the retry policy of the task queue for incoming and outgoing activities. Of course, you can also simply adjust the parameters of the built-in exponential backoff + decorrelated jitter policy.
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
Basic implementation of the inbox queue is complete and documentation is being worked on.
https://hollo.social/@fedify/0190687b-1a09-728b-8a0d-bcbd4dca54cd
Fedify: an ActivityPub server framework
In the next version of #Fedify, the Context.hostname
, Context.host
, and Context.origin
properties will be added for better multitenancy/virtual hosting support.
https://github.com/dahlia/fedify/issues/66#issuecomment-2198967566
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post
When there is no queue, if the process fails, the inbox can just respond with a 500 server error and the sender will resend it.
But with a queue, by the time the inbox responds, it doesn't know if the process will fail because it hasn't run yet. So the sender won't retry whether it fails or not.
So, should it have its own retry logic when there is a queue?
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
I'm adding a queue for incoming activities in #Fedify, and I have a concern. If an error occurs while processing an activity, should it retry?
https://hollo.social/@fedify/0190687b-1a09-728b-8a0d-bcbd4dca54cd
Fedify: an ActivityPub server framework
#Fedify has always been queuing outgoing activities, but not incoming activities. Thanks to @ghost's sponsorship, we are now implementing queues for incoming activities!
![Tokyo Outsider (337ppm)'s avatar](https://media.mas.to/accounts/avatars/109/714/296/912/726/526/original/71bf2ab0d54371a1.jpg)
Tokyo Outsider (337ppm)
#ActivityPub, #FediDev and #security question: If instances generally collect only one copy of each post and then share it with the users that need to see it, does that mean nonoriginating instances are trusted to not show that post to users the poster has blocked (or who shouldn't see it because they're not following etc depending on visibility)?
How do the collecting instances know who should see it? (A cached copy of the poster's follow list?)
And does #authorized_fetch change any of this?
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
Today we created #FediDev KR, a community for Korean people who are not only implementing fediverse servers, but also those who are running them, such as server operators, moderators, client app developers, bot developers, writers, translators, researchers, and more. For now, we're based on a Discord server, but we hope to eventually organize offline meetups and workshops. We'd love your support!
![Tokyo Outsider (337ppm)'s avatar](https://media.mas.to/accounts/avatars/109/714/296/912/726/526/original/71bf2ab0d54371a1.jpg)
Tokyo Outsider (337ppm)
How long (hours, roughly) would it take to implement a basic #ActivityPub server from scratch in #Java — absoluet bare bones, like a proof of concept just capable of sending and receiving posts, which could then be developed more before becoming a finished, user-ready system?
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
@[email protected] · Reply to 洪 民憙 (Hong Minhee)'s post
먼저 Discord에 #FediDev KR 서버를 하나 만들었습니다!
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
서울에서 #fedidev 모임하는 생각 💭
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
#Fedify is an #ActivityPub server framework in #TypeScript & #JavaScript. 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:
• Type-safe objects for Activity Vocabulary (including some vendor-specific extensions)
• #WebFinger client and server
• HTTP Signatures
• Middleware for handling webhooks
• #NodeInfo protocol
• #Node.js, #Deno, and #Bun support
• CLI toolchain for testing and debugging
If you're curious, take a look at the Fedify website! There's comprehensive docs, a demo, a tutorial, example code, and more:
Fedify: an ActivityPub server framework
#Fedify has supported optional queuing for outgoing activities, with two built-in message queue backends: InProcessMessageQueue
, which is suitable for development, and DenoKvMessageQueue
, which is only available in Deno.
Fedify has also had two built-in cache backends, MemoryKvStore
, which is suitable for development, and DenoKvStore
, which is only available in Deno.
Now, however, by installing the @fedify/redis package, you can use #Redis as both a message queue backend and a cache backend! Unlike DenoKvMessageQueue
and DenoKvStore
, it's also available for #Node.js and #Bun.
This feature was made possible with the support of @ghost.
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
@[email protected] · Reply to kodingwarrior :vim:'s post
@kodingwarrior 한국에도 #fedidev 모임 같은 거 개최하면 좋겠어요 ㅎㅎ
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
#Fedify now has the official #Hollo account! Please follow @fedify!
https://hollo.social/@fedify/01905d6a-5d70-75bc-881e-d6c155a5051c
Fedify: an ActivityPub server framework
Hello, #fediverse! It's the official fedi account of the Fedify, an #ActivityPub server framework!
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
![洪 民憙 (Hong Minhee)'s avatar](https://cdn.fosstodon.org/accounts/avatars/112/643/523/844/583/361/original/de4e086cad8412c6.jpg)
洪 民憙 (Hong Minhee)
If you'd like to support the development of #Fedify or #Hollo, you can sponsor me on GitHub!
Hollo
Introducing #Hollo. Hollo is an #ActivityPub-enabled single-user microblogging software. Although it's for a single user, it also supports creating and running multiple accounts for different topics.
It's headless, meaning you can use existing #Mastodon client apps instead, with its Mastodon-compatible APIs. It has most feature parity with Mastodon. One big difference with Mastodon is that you can use #Markdown in the content of your posts.
Oh, and Hollo is built using #Bun and #Fedify.
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
Version 0.10.0 of #Fedify, an #ActivityPub server framework, has been released! Starting with this release, Fedify, previously distributed under AGPL 3.0, is now distributed under the MIT License to encourage wider adoption. Here are the major changes:
• In addition to RSA-PKCS#1-v1.5, Fedify now supports Ed25519 for signing and verifying the activities.
• FEP-521a: Multiple key pairs can now be registered for an actor.
• FEP-8b32: Implemented Object Integrity Proofs.
• Added Arrive and Question classes.
![Jeff Sikes's avatar](https://files.mastodon.social/accounts/avatars/109/259/207/144/483/733/original/adaa1f792d2053e0.png)
Jeff Sikes
TIL when you upload a video file to Mastodon, it generates a preview thumbnail. The thumbnail isn't passed through to other servers in the ActivityPub payload (similar to preview cards).
Each receiving platform handles this situation differently. Some regenerate a thumbnail (processing again). Some ignore it and don't show one. Others create blank thumbnails to appease the Mastodon API.
A blurhash is passed, tho, and could be used as a placeholder.
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
#Mastodon sends Create(Question) for the poll, even though the Question itself is an Activity. Does it see Question as a regular Object rather than an Activity?
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
I'm very excited that the #Ghost team has chosen #Fedify to implement #ActivityPub. I've been working closely with the Ghost team, and it's been a lot of fun, and I can't wait to see the ActivityPub implementation at Ghost.
![Jeff Sikes's avatar](https://files.mastodon.social/accounts/avatars/109/259/207/144/483/733/original/adaa1f792d2053e0.png)
Jeff Sikes
Ghost will be using the open source Fedify server framework to manage the activitypub bits and pieces of their service.
https://activitypub.ghost.org/day-4/?ref=build-log-newsletter
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
@[email protected] · Reply to 洪 民憙 (Hong Minhee) 🤏🏼's post
Thanks to @silverpill, #Fedify is finally FEP-8b32 compliant! Though it's not ready for general release yet, it's passing tests in the latest main branch. I'll test it with Mitra and other FEP-8b32-compliant implementations, and if it works well, it'll be included in 0.10.0.
You can try it out in version 0.10.0-dev.205+0cbca257.
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
I just released #Fedify 0.9.1, which fixed one small bug.
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
#Hollo now supports sharing posts (reblogs)!
![Jeff Sikes's avatar](https://files.mastodon.social/accounts/avatars/109/259/207/144/483/733/original/adaa1f792d2053e0.png)
Jeff Sikes
Bonfire, the modular Fediverse platform, is looking for five Elixir developers to act as test subjects to improve the developer onboarding experience. Participants can receive a €50 stipend for their one-hour session.
Please share with your elixir dev friends, and boost!
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
@[email protected] · Reply to 洪 民憙 (Hong Minhee) 🤏🏼's post
Implementing Object Integrity Proofs (FEP-8b32) and my implementation is not passing the test vectors. I haven't found the reason for 24 hours… 😫
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
@[email protected] · Reply to 洪 民憙 (Hong Minhee) 🤏🏼's post
FEP-521a has been implemented in #Fedify.
Actors now have the #assertionMethods property, and the #Multikey class has been added. For example, if you look at the the actor from the Fedify Example Blog (https://fedify-blog.deno.dev/users/fedify-example), you can see that it has the assertionMethods property in addition to the publicKey property.
You can try it out in version 0.10.0-dev.196+55cc34d1.
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
@[email protected] · Reply to 洪 民憙 (Hong Minhee) 🤏🏼's post
#Misskey throws an error when a remote actor has multiple public keys, so I sent a patch to fix this bug.
This is my first patch for Misskey!
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
As a first step towards adding Object Integrity Proofs (FEP-8b32) to #Fedify, I've made it support #Ed25519 keys. I've also enabled multiple keys to be associated with an actor. For example, if you look at the actor from the Fedify Example Blog (https://fedify-blog.deno.dev/users/fedify-example), you'll see that it has two public keys, one for RSA and one for Ed25519.
You can try it out in version 0.10.0-dev.190+4dffb89a.
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
Version 0.9.0 of #Fedify, an #ActivityPub server framework, has been released! Here are the main changes:
• Added Tombstone, Hashtag, and Emoji classes.
• Added normalizeActorHandle() function to normalize an actor handle. This is needed when the domain of the actor handle is an IDN, or when the domain contains capital letters.
• Added an option to the sendActivity() function, excludeBaseUris, to exclude specified servers from sending activities. This can be used when you don't want to send activities to your own server.
• Added Context.parseUri(), a method to parse actor, object, inbox, and collection URIs.
• The time window for HTTP Signatures verification is now configurable.
• The @fedify/fedify/httpsig module has been renamed to . This is in preparation for implementing additional object integrity proofs other than HTTP Signatures.
• Improved interoperability with #Misskey.
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)
洪 民憙 (Hong Minhee) 🤏🏼
@[email protected] · Reply to 洪 民憙 (Hong Minhee) 🤏🏼's post
![洪 民憙 (Hong Minhee) 🤏🏼's avatar](https://todon.eu/system/accounts/avatars/109/274/173/355/176/060/original/7b82f1bf6b79ca78.jpg)