home.social

#fedidev — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #fedidev, aggregated by home.social.

  1. Internet domain name (ex: example.com) are a reasonable option for making identity on the Internet more human-friendly.

    But, Internet domain names are a poor choice as the base primitive for identity.

    At best you rent an Internet domain name. But, they can be lost if you don't pay the rent. They can even be seized — even if you do pay.

    There are many examples of this this, but — consider Sci-Hub.

    How many times has Sci-Hub had its Internet domain names seized. Numerous!

    #FediDev #SciHub

  2. I wonder how much Fediverse software would be able to handle an "OrderedCollectionPage" with a "orderedItems" of "Link" IRIs?

    ...

    From the back-end point-of-view it is easier.

    From the front-end point-of-view it is more work.

    From a performance point-of-view, network calls can be costly, so perhaps it is better for the back-end to fetch the data (rather than the client).

    #FediDev

  3. A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a #fediverse server built on #Cloudflare Workers, D1, R2, and Queues, using Fedify.

    I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

    They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

    I'm glad to see Fedify put to use for something like this. Worth checking out.

    The source code is on GitHub under AGPL 3.0.

    #ActivityPub #fedidev

    RE: https://hackers.pub/@siliconsjang/2026/siliconbeest-v1.0.0

  4. A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a #fediverse server built on #Cloudflare Workers, D1, R2, and Queues, using Fedify.

    I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

    They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

    I'm glad to see Fedify put to use for something like this. Worth checking out.

    The source code is on GitHub under AGPL 3.0.

    #ActivityPub #fedidev

    RE: https://hackers.pub/@siliconsjang/2026/siliconbeest-v1.0.0

  5. A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a #fediverse server built on #Cloudflare Workers, D1, R2, and Queues, using Fedify.

    I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

    They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

    I'm glad to see Fedify put to use for something like this. Worth checking out.

    The source code is on GitHub under AGPL 3.0.

    #ActivityPub #fedidev

    RE: https://hackers.pub/@siliconsjang/2026/siliconbeest-v1.0.0

  6. A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a #fediverse server built on #Cloudflare Workers, D1, R2, and Queues, using Fedify.

    I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

    They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

    I'm glad to see Fedify put to use for something like this. Worth checking out.

    The source code is on GitHub under AGPL 3.0.

    #ActivityPub #fedidev

    RE: https://hackers.pub/@siliconsjang/2026/siliconbeest-v1.0.0

  7. A friend of mine, @siliconsjang, released SiliconBeest v1.0.0 today. It's a #fediverse server built on #Cloudflare Workers, D1, R2, and Queues, using Fedify.

    I like the starting point: after watching fediverse servers go down together during Cloudflare outages, they thought, why not just run on Cloudflare directly?

    They're aiming for something cheap enough that a small instance can stay on Cloudflare's free plan, and a somewhat bigger one can fit in the $5/month tier. It's still early; a lot is missing, and Mastodon/Misskey API compatibility is more of a long-term goal.

    I'm glad to see Fedify put to use for something like this. Worth checking out.

    The source code is on GitHub under AGPL 3.0.

    #ActivityPub #fedidev

    RE: https://hackers.pub/@siliconsjang/2026/siliconbeest-v1.0.0

  8. In ActivityPub, these are all equivalent:

    "type":"Banana"

    "type":["Banana"]

    "type":{"@id":"Banana"}

    "type":[{"@id":"Banana"}]

    "type":{"id":"Banana"}

    "type":[{"id":"Banana"}]

    "@type":"Banana"

    "@type":["Banana"]

    "@type":{"@id":"Banana"}

    "@type":[{"@id":"Banana"}]

    "@type":{"id":"Banana"}

    "@type":[{"id":"Banana"}]

    #ActivityPub #ActivityStreams #FediDev #JSONLD

  9. In ActivityPub, these are all equivalent:

    "type":"Banana"

    "type":["Banana"]

    "type":{"@id":"Banana"}

    "type":[{"@id":"Banana"}]

    "type":{"id":"Banana"}

    "type":[{"id":"Banana"}]

    "@type":"Banana"

    "@type":["Banana"]

    "@type":{"@id":"Banana"}

    "@type":[{"@id":"Banana"}]

    "@type":{"id":"Banana"}

    "@type":[{"id":"Banana"}]

    #ActivityPub #ActivityStreams #FediDev #JSONLD

  10. RE: mastodon.social/@reiver/112921

    2/

    I want this (back-end Fediverse servers and front-end Fediverse clients as separate projects) for myself, too.

    To try to make development for myself easier.

    One of the Fediverse servers of this type that I have been working on is Microdon:

    codeberg.org/reiver/microdon

    It is meant for a light-weight single-user use-case.

    ...

    I have found myself working on it (Microdon) again recently.

    ...

    ("Microdon" is the name of several fish if you are curious about the name.)

    #FediDev #Microdon

  11. RE: mastodon.social/@reiver/112921

    1/

    The Fediverse would be better off if if back-end servers and front-end clients were separate projects.

    I have been arguing that for a while.
    (I know I am not the only one.)

    With respect to Fediverse server, there are different types you might want, depending on your needs. And, it would be nice if you could pick and choose (separate from your choice of front-end).

    For example, is it single-user or mutli-user? Should it be light-weight, or deal with high-scale? Etc?

    #FediDev #Microdon

  12. RE: jaz.co.uk/2026/05/12/there-are

    Once again, Jaz lays out a fantastic vision for Fediverse design. Chronological feeds are better than rage-bait algorithms, but they give give loudmouths too much real estate.

    - Design for people, not protocols
    -Community, not one person’s stream of consciousness
    - Community notes (from trusted sources) on divisive issues

    Read his posts and support his work!

    about.iftas.org/donate/

    It’s time for #Fedidev’s to figure out how to get this done.

  13. @yezanek

    Post about your thoughts and progress.

    If you use the #FediDev hash-tag, other Fediverse developers will see it, too.

  14. How much Fediverse software would fail if the "to" or "cc" of an activity contained:

    WWW.W3.ORG/ns/activitystreams#

    Rather than:

    w3.org/ns/activitystreams#Publ

    I.e., an upper-case Internet domain.

    WWW.W3.ORG versus www.w3.org

    (What about WwW.w3.OrG?)

    #ActivityPub #FediDev

  15. Boundaries between AP and AS2, and between AS2 and non-AS2 socialhub.activitypub.rocks/t/

    Looking to hear from #ActivityPub and #FediDev audiences: When do you expect a link (either an id or a Link.href) to have an AS2 representation? When do you expect it might *not* have one? Is there a good way to make those expectations clearer or more explicit? Please weigh in.

  16. ActivityPub specifications don't seem to provide a way to do Idempotent POSTs to your outbox.

    That seems like a problem for C2S to me.

    Networks are unreliable. You cannot tell the difference between an unreceived request vs an unreceived response. You'll get unwanted identical duplicate activities.

    Although it isn't difficult to solve — a convention just needs to be picked.

    For example, a new Idempotency field could be added to the JSON-LD payload.

    #ActivityPub #ActivityStreams #FediDev

  17. I just migrated my personally hosted Bluesky PDS to Northsky.social because I was tired of paying Hetzner for something I rarely use.

    Instead I'll happily donate similar funds to Northsky.

    I wouldn't say it was a grandma friendly process, but it worked as expected.

    I'm still a bit upset the fediverse in general doesn't have this specific process figured out yet.

    This is my social home and that's not changing. I hope to see progress on true account migration soon.

    #FediDev

  18. Jetzt online ansehen:

    Aufzeichnung der #2MR-Session »#Technik für Tomorrow« ⚙️ für demokratiestärkende #SocialMedia
    👉 watch.2mr.social/w/aRrRjoatJgT

    Moderiert von @melaniebartos 🙏 und mit Tech-Projekten von:
    🔹 @sabrinkmann von @54gradsoftware #Flensburg
    🔹@honeywinter von @fediway #Leipzig
    🔹 @samuel_p von @ossrox #Magdeburg
    🔹 Björn Adamski, 3Q Video

    🚀

    #FediAdmin #OpenWeb #FOSS #CivicTech #WissKomm #Fedidev

  19. I've finally done it! My Grand Unified Theory of IT is complete thanks to ! It's actually not that complicated! I call it, "The Zero-Consequence Model":

    By inserting AI into everything, when something goes wrong, it's not your fault! It's the AI that caused it; the model's at fault, not you 👍

    It's the perfect way to run an IT organization! What could possibly go wrong‽

  20. 🌐 FediCon 2026 is coming up — and Early Bird (discounted) tickets are still available!

    We want FediCon to be open and accessible, which is why there is also an affordable (Reduced fare) ticket option for those who want it.

    Come be part of the conversations shaping the Fediverse and the future of the Social Web.

    📅 August 6–9, 2026
    📍 UBC campus, Vancouver, BC, Canada

    🎟️ Get your FOSSY ticket here:
    2026.fossy.ca/attend/tickets/

    #FediCon #FediCon2026 #FOSSY #FOSSY2026 #FediDev #Fediverse

  21. 🎟️ Early Bird tickets for FediCon 2026 are still on sale — don't miss your chance to grab a discounted pass!

    We believe this event should be accessible to everyone, so there’s also an affordable (reduced fare) ticket option available for those who need it.

    Join us for a gathering all about the Fediverse, the Social Web, and the people building what comes next.

    📅 August 6–9, 2026
    📍 UBC campus, Vancouver, BC

    🎫 Get your FOSSY ticket, which gets you into FediCon:
    2026.fossy.ca/attend/tickets/

    #FediCon #FediCon2026 #FOSSY #FOSSY2026 #FediDev #Fediverse

  22. I have been thinking about payments on the Fediverse (for a while).

    3/

    That obviously is not an exhaustive list of archetypes with their wants and pains.

    But, I do think we need an extensive list — that we can check any proposed Fediverse payment system against.

    .

    #AssetFlow #FediDev

  23. I have been thinking about payments on the Fediverse (for a while).

    2/

    For example —

    A parent (archetype) may want to send money to their spouse, or give allowance to their child, etc.

    Someone working abroad (archetype) may want to send money back home to their family (i.e., remittance).

    An SMB (archetype) may want to accept payment for the sale of a product.

    A freelancer (archetype) may want to get paid for their irregular income.

    Etc.

    ...

    #AssetFlow #FediDev

  24. I have been thinking about payments on the Fediverse (for a while).

    1/

    To make sure a Fediverse payment system is useful we should think in terms of a set Archetypes and each of their wants and a pains.

    (Product people often call "Archetypes": Personas. Marketers often call "Archetypes": Segments.)

    ...

    #AssetFlow #FediDev

  25. There is a comparison that can be made between ActivityPub and Event-Sourcing.

    3/

    With ActivityPub, Activities are often applied to an object. That object gets assigned an ID in the form of a URL.

    (And, by URL I mean URL, URI, IRI, etc.)

    One doesn't have to read through all the Activities in an inbox, outbox, etc to get the final state of an object.

    One can just get the JSON-LD document from the object's ID URL to get the final state.

    #ActivityPub #ActivityStreams #EventSourcing #FediDev

  26. There is a comparison that can be made between ActivityPub and Event-Sourcing.

    2/

    With Event-Sourcing, you can "project" the events to get another (often more peformant) view of the data in the events.

    Without having to incur the cost of having to read all the events to figure out the final state.

    ...

    #ActivityPub #ActivityStreams #EventSourcing #FediDev

  27. There is a comparison that can be made between ActivityPub and Event-Sourcing.

    1/

    With Event-Sourcing, your source-of-truth is an append-only series of events.

    Ex: USER_REGISTERED, EMAIL_ADDRESS_VERIFIED, PASSWORD_CHANGED, etc.

    In ActivityPub, this is similar to the inbox, outbox, etc being an append-only series of Activity.

    Ex: Create, Like, Undo, etc.

    ...

    #ActivityPub #ActivityStreams #EventSourcing #FediDev

  28. Drafting a proposal to add API support in #Fedify for the ActivityPub Media Upload extension, the SocialCG-incubated #C2S companion that lets clients upload media via a dedicated endpoints.uploadMedia endpoint, separate from the outbox.

    The sketched API mirrors the outbox listeners shipped in Fedify 2.2: setMediaUploader(path, callback) paired with .authorize(). Return a vocab.Object for 201 Created, or a URL for 202 Accepted.

    This is still an early design draft. Feedback on the shape, semantics, and edge cases is very welcome:

    https://github.com/fedify-dev/fedify/issues/754

    #ActivityPub #Fedify #fediverse #fedidev

  29. Just thinking out loud —

    If we wanted to support resumable uploads in C2S API, then — we probably need some URL to upload the file chunks to.

    When a user POST to their own outbox, the HTTP "201 Created" response will have a "Location" header that provides a URL.

    Maybe that could be used as the upload URL.

    Or, maybe the JSON-LD document at that URL might contain a URL under the "object" field that could be used as the upload URL.

    Other options too

    #ActivityPub #ActivityStreams #FediDev

  30. I can think of different ways to support resumable uploads with ActivityPub, but — just to see what others are doing —

    PeerTube seems to have resumable uploads already.

    PeerTube seems to use this protocol for it:

    github.com/kukhariev/node-uplo

    I like that it uses Content-Range in the protocol. I would have done the similar.

    #ActivityPub #ActivityStreams #FediDev

  31. It seems as if the uploadMedia ActivityPub extension does not provide a way to resume an upload that didn't previously compete.

    w3.org/wiki/SocialCG/ActivityP

    If, for example, you are working with large files (such as video files) this would matter.

    Because if you uploaded 1GB, and the upload stopped, you would want to resume at where it stopped, and not have to upload from the beginning again.

    This would be important for ActivityPub C2S adoption.

    #ActivityPub #ActivityStreams #FediDev

  32. What do you think about JSON-LD language maps for "preferredUsername"?

    I.e., preferredUsernameMap.

    "preferredUsernameMap": {
    "en": "hello",
    "fa": "درود",
    "ko": "안녕하세요"
    }

    #FediDev #JSONLD #ActivityPub #ActivityStreams

  33. I've lost a lot of work in @moshidon because it doesn't save my half-written post as a draft when the app is being closed, or crashes, or the OS is shutting down.

    Any chance of getting the apps to detect anything that triggers quitting the app, and save any text in a compose window to drafts? Or maybe autosave texts to some kind of buffer as they're typed, from which they can be recovered when the app reopens after being unexpectedly shut down?

    #drafts #Moshidon #FediverseApps #FediDev

  34. Both Mastodon and Pixelfed seem to attach images as ActivityPub/ActivityStreams "type" = 'Document'.

    I would have expected "type" = 'Image'.

    'Document' isn't wrong. It is valid.

    But, I would have expected the more specific type of 'Image'.

    #ActivityPub #ActivityStreams #FediDev

  35. I think it would be better if instead of Fediverse software outputting the following for ActivityPub/ActivityStreams Notes, Articles, etc:

    "attributedTo": "mastodon.social/users/reiver",

    It would instead output something more like:

    "attributedTo": {
    "id":"mastodon.social/users/reiver",
    "type":"Person",
    "name":"Charles",
    "preferredUsername": "reiver",
    "icon": {...},
    "image": {...},
    }

    This way the Activity* document contains everything needed to render it.

    #ActivityPub #ActivityStreams #FediDev

  36. What if web-browsers could render the ActivityPub / ActivityStreams JSON-LD source-code into the document it represents?

    Fediverse clients can do it — why can't browsers?

    I previously created a small-net / small-web browser client named SpaceMonkey.

    It supports protocols such as Gemini, HTTP, HTTPS, Mercury, etc. And, formats such as GemText, HTML, Markdown, etc.

    It now supports the ActivityPub / ActivityStreams JSON-LD format, too.

    #ActivitiyPub #ActivityStreams #FediDev #SpaceMonkey

  37. Was the original intent of the ActivityPub / ActivityStreams "name" field to be a title?

    (It seems as if some software is using it that way.)

    w3.org/TR/activitystreams-voca

    #ActivityPub #ActivityStreams #FediDev

  38. What should the file-extension for ActivityPub / ActivityStreams documents be?

    I.e., for application/activity+json data?

    I've been using .activity

    Ex: filename.activity

    (The extension cannot be .json or .jsonld if you want to be able to detect it just based on the file-extension.)

    What do you think?

    #ActivityPub #ActivityStreams #FediDev

  39. If you'd like to preview the #tutorial I'm writing on building a small federated image sharing service, similar to @pixelfed, with @fedify and @nuxt, here it is:

    https://pr-731-0.fedify.pages.dev/tutorial/content-sharing

    If you'd like to give feedback after reading it, please leave a comment on the following PR:

    https://github.com/fedify-dev/fedify/pull/731

    #Fedify #fedidev #ActivityPub #Nuxt #Pixelfed

  40. RE: mastodon.social/@reiver/116471

    If an ActivityPub Actor is something that has an "inbox" or an "outbox" (i.e., it could have just one or both) then —

    Perhaps we should also be talking about "sources" and "sinks", too. Where —

    An ActivityPub Source is an Actor with just an "outbox" (and no "inbox").

    And, an ActivityPub Sink is an Actor with just an "inbox" (and no "outbox").

    #ActivityPub #ActivityStreams #FediDev

  41. And, if this is the case, then every ActivityPub / ActivityStreams library should be on the look-out for "inbox" and "outbox" fields on everything.

    Doesn't matter what it is. An "Event", an "Image", a "Link", a "Place", a "Video", even things in other namespaces.

    #ActivityPub #ActivityStreams #FediDev

  42. What makes an ActivityPub Actor an Actor?

    I think it is probably a bad idea to just restrict it to things with 'type': "Application", "Group", "Organization", "Person", and "Service". Restricting it to just those would mean you couldn't have new actor types (and sub-types) in the future.

    So then, do we do it in a duck-typing way? And if "yes", how?

    Maybe if something has an "inbox" OR and "outbox" it is an Actor. I.e., it could have just one of those.

    #ActivityPub #ActivityStreams #FediDev

  43. Can an ActivityPub 'Place' also be an Actor?

    w3.org/TR/activitystreams-voca

    With followers, an outbox, etc.

    That could be useful for both real-life places, and fictional places in stories, and in video games.

    #ActivityPub #ActivityStreams #FediDev #FediFiction #FediGames

  44. FEP-8b32 (Object Integrity Proofs) is getting updated: https://codeberg.org/fediverse/fep/pulls/839

    I added two new requirements:

    - Objects identified using fragment IDs SHOULD NOT have integrity proofs. It is enough to secure the top-level document.
    - Verifiers SHOULD ignore proofs that use unsupported algorithms and verification methods. This requirement provides forward compatibility, which is important because sooner or later we will need to use different algorithms.

    #fep_8b32 #fep #fedidev

  45. 2/

    The game will be social.

    Your player gains things in the game by being followed (and perhaps following back) Actors on the Fediverse.

    For example, you would have a team. The characters on your team would be Fedivese Actors / accounts. This could be bot accounts, but could also be the accounts of other people playing the game.

    Same with energy sources, special powers, etc — all Fedivese Actors / accounts.

    #ActivitiyPub #ActivityStreams #FediDev #FediGames #Games #VideoGames