home.social

#fedidev — Public Fediverse posts

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

  1. Here is my work-in-progress FEP for using JSON Resume with ActivityPub:

    FEP-6158: ActivityPub 'Resume' Object: JSON Resume expressed as JSON-LD

    codeberg.org/reiver/fep/src/br

    I prefer to write for clarity, so it still needs work.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONResume #fep6158 #fep_6158

  2. Here is my work-in-progress FEP for using JSON Resume with ActivityPub:

    FEP-6158: ActivityPub 'Resume' Object: JSON Resume expressed as JSON-LD

    codeberg.org/reiver/fep/src/br

    I prefer to write for clarity, so it still needs work.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONResume #fep6158 #fep_6158

  3. Here is my work-in-progress FEP for using JSON Resume with ActivityPub:

    FEP-6158: ActivityPub 'Resume' Object: JSON Resume expressed as JSON-LD

    codeberg.org/reiver/fep/src/br

    I prefer to write for clarity, so it still needs work.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONResume #fep6158 #fep_6158

  4. Here is my work-in-progress FEP for using JSON Resume with ActivityPub:

    FEP-6158: ActivityPub 'Resume' Object: JSON Resume expressed as JSON-LD

    codeberg.org/reiver/fep/src/br

    I prefer to write for clarity, so it still needs work.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONResume #fep6158 #fep_6158

  5. Here is my work-in-progress FEP for using JSON Resume with ActivityPub:

    FEP-6158: ActivityPub 'Resume' Object: JSON Resume expressed as JSON-LD

    codeberg.org/reiver/fep/src/br

    I prefer to write for clarity, so it still needs work.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONResume #fep6158 #fep_6158

  6. I may have written a JSON-LD schema for JSON Resume.

    It is defined in terms of ActivityPub.
    For example:

    'Resume' is a sub-type of an ActivityPub 'Object'. There are some new fields defined. Etc.

    ...

    Now the question is — where do I put it?

    Do I create a pull-request to the JSON Resume resume-schema repo?

    Do I create a FEP?

    Do I put it somewhere else?

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  7. I may have written a JSON-LD schema for JSON Resume.

    It is defined in terms of ActivityPub.
    For example:

    'Resume' is a sub-type of an ActivityPub 'Object'. There are some new fields defined. Etc.

    ...

    Now the question is — where do I put it?

    Do I create a pull-request to the JSON Resume resume-schema repo?

    Do I create a FEP?

    Do I put it somewhere else?

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  8. I may have written a JSON-LD schema for JSON Resume.

    It is defined in terms of ActivityPub.
    For example:

    'Resume' is a sub-type of an ActivityPub 'Object'. There are some new fields defined. Etc.

    ...

    Now the question is — where do I put it?

    Do I create a pull-request to the JSON Resume resume-schema repo?

    Do I create a FEP?

    Do I put it somewhere else?

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  9. I may have written a JSON-LD schema for JSON Resume.

    It is defined in terms of ActivityPub.
    For example:

    'Resume' is a sub-type of an ActivityPub 'Object'. There are some new fields defined. Etc.

    ...

    Now the question is — where do I put it?

    Do I create a pull-request to the JSON Resume resume-schema repo?

    Do I create a FEP?

    Do I put it somewhere else?

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  10. I may have written a JSON-LD schema for JSON Resume.

    It is defined in terms of ActivityPub.
    For example:

    'Resume' is a sub-type of an ActivityPub 'Object'. There are some new fields defined. Etc.

    ...

    Now the question is — where do I put it?

    Do I create a pull-request to the JSON Resume resume-schema repo?

    Do I create a FEP?

    Do I put it somewhere else?

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  11. My personal desire would be to create a format from scratch (because you are in control, you get something bespoke to your needs, and it is personally satisfying), but —

    I think there is probably an advantage to using something (such as JSON resume) that already has wide adoption.

    I guess that makes me inclined towards the latter.

    ...

    So, if I go that way, I would have to decide: plain JSON or JSON-LD.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  12. My personal desire would be to create a format from scratch (because you are in control, you get something bespoke to your needs, and it is personally satisfying), but —

    I think there is probably an advantage to using something (such as JSON resume) that already has wide adoption.

    I guess that makes me inclined towards the latter.

    ...

    So, if I go that way, I would have to decide: plain JSON or JSON-LD.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  13. My personal desire would be to create a format from scratch (because you are in control, you get something bespoke to your needs, and it is personally satisfying), but —

    I think there is probably an advantage to using something (such as JSON resume) that already has wide adoption.

    I guess that makes me inclined towards the latter.

    ...

    So, if I go that way, I would have to decide: plain JSON or JSON-LD.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  14. My personal desire would be to create a format from scratch (because you are in control, you get something bespoke to your needs, and it is personally satisfying), but —

    I think there is probably an advantage to using something (such as JSON resume) that already has wide adoption.

    I guess that makes me inclined towards the latter.

    ...

    So, if I go that way, I would have to decide: plain JSON or JSON-LD.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  15. My personal desire would be to create a format from scratch (because you are in control, you get something bespoke to your needs, and it is personally satisfying), but —

    I think there is probably an advantage to using something (such as JSON resume) that already has wide adoption.

    I guess that makes me inclined towards the latter.

    ...

    So, if I go that way, I would have to decide: plain JSON or JSON-LD.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  16. RE: mastodon.social/@reiver/116597

    More on a resume / CV on the Fediverse on Social Web.

    Another option could be to use something like "JSON resume":

    jsonresume.org/

    github.com/jsonresume/resume-s

    It seems to be popular.

    It isn't JSON-LD. Although I think it would be straightforward to translate it to JSON-LD, if that was desired.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  17. RE: mastodon.social/@reiver/116597

    More on a resume / CV on the Fediverse on Social Web.

    Another option could be to use something like "JSON resume":

    jsonresume.org/

    github.com/jsonresume/resume-s

    It seems to be popular.

    It isn't JSON-LD. Although I think it would be straightforward to translate it to JSON-LD, if that was desired.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  18. RE: mastodon.social/@reiver/116597

    More on a resume / CV on the Fediverse on Social Web.

    Another option could be to use something like "JSON resume":

    jsonresume.org/

    github.com/jsonresume/resume-s

    It seems to be popular.

    It isn't JSON-LD. Although I think it would be straightforward to translate it to JSON-LD, if that was desired.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  19. RE: mastodon.social/@reiver/116597

    More on a resume / CV on the Fediverse on Social Web.

    Another option could be to use something like "JSON resume":

    jsonresume.org/

    github.com/jsonresume/resume-s

    It seems to be popular.

    It isn't JSON-LD. Although I think it would be straightforward to translate it to JSON-LD, if that was desired.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  20. RE: mastodon.social/@reiver/116597

    More on a resume / CV on the Fediverse on Social Web.

    Another option could be to use something like "JSON resume":

    jsonresume.org/

    github.com/jsonresume/resume-s

    It seems to be popular.

    It isn't JSON-LD. Although I think it would be straightforward to translate it to JSON-LD, if that was desired.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD #JSONresume

  21. On Tags (including Hash-Tags) in ActivityPub.

    2/

    A new version of ActivityPub could extend the type of "tag" from:

    Object | Link

    to:

    Object | Link | xsd:string

    And that would make the following valid ActivityPub:

    "tag": ["apple", "banana", "cherry"]

    Of course, it would have to be specified how to interpret this. (Ex: as "type":"Hashtag", or whatever.)

    #ActivityPub #ActivityStreams #FediDev #HashTag #HashTags #Tag #Tags

  22. On Tags (including Hash-Tags) in ActivityPub.

    1/

    I think new developers coming to ActivityPub want to write something like:

    "tag": ["apple", "banana", "cherry"]

    It is unfortunate that that isn't valid ActivityPub. But, that it must instead be:

    "tag": [
    {
    "type": "Hashtag",
    "name": "#apple"
    },
    {
    "type": "Hashtag",
    "name": "#banana"
    },
    {
    "type": "Hashtag",
    "name": "#cherry"
    }
    ]

    ...

    #ActivityPub #ActivityStreams #FediDev #HashTag #HashTags #Tag #Tags

  23. RE: mastodon.social/@reiver/116597

    There is also the other question of — would the resume / CV be JSON-LD.

    On one hand, if it was in JSON-LD, it would make it machine-legible similar to ActivityPub.

    On the other hand, I don't think anyone is going to write JSON-LD (especially HTML embedded in a JSON string value) by hand. But, I do think some people will want to write their resume by hand.

    It feels like user-experience is fighting with JSON-LD based machine-legibility.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD

  24. How could you represent a resume / CV on the Fediverse and Social Web? Where would you put it? Etc?

    I think it is tempting to put the whole resume in the Actor document.

    But, it is probably better for the Actor document to point (rather than include) it. And, have the resume / CV live somewhere else.

    It should probably be done in a way that let's people have multiple resumes / CV. For example, for different roles / career tracks, etc.

    #ActivityPub #ActivityStreams #FediDev #ProToGo #JSONLD

  25. "A new challenger appears!"

    RE: bitsocial.net/

    ...

    Memes aside, if you are a Fediverse developer, it can be useful to pay attention to what others are doing. Notice what works for them and what doesn't. What their trade-offs are. Etc. And, if there is anything we can learn from them. And, perhaps even find ways to cooperate towards shared goals.

    #BitSocial #FediDev

  26. Remote Inbox Architecture

    2/

    The Remote Inbox server deals with incoming activities, objects, etc, from other users..

    The front-end can get the inbox (and other feeds') data from the Remote Inbox server.

    (You'd probably want to store cached data from the Fediverse elsewhere from these two servers, as I've said before. But, that is a separate thread.)

    #ActivityPub #ActivityStreams #FediDev #RemoteInbox

  27. Remote Inbox Architecture

    1/

    This, the Remote Inbox Architecture, is an architecture for a Fediverse back-end server that I think could be useful.

    Here is how it works — there are (at least) 2 servers involved: (1) the main back-end server, and (2) a remote inbox server.

    The actor file on main back-end server "points" the inbox to the remote server.

    It separates the user's content from the front-end related functionality

    ...

    #ActivityPub #ActivityStreams #FediDev #RemoteInbox

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

    Early Bird tickets are only available for a limited time.

    We want this event to be accessible to as many people as possible, so we’re also offering a reduced-fare (early bird) ticket option for attendees who need an even lower-cost option.

    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/

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

    Early Bird tickets are only available for a limited time.

    We want this event to be accessible to as many people as possible, so we’re also offering a reduced-fare (early bird) ticket option for attendees who need an even lower-cost option.

    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

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

    Early Bird tickets are only available for a limited time.

    We want this event to be accessible to as many people as possible, so we’re also offering a reduced-fare (early bird) ticket option for attendees who need an even lower-cost option.

    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

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

    Early Bird tickets are only available for a limited time.

    We want this event to be accessible to as many people as possible, so we’re also offering a reduced-fare (early bird) ticket option for attendees who need an even lower-cost option.

    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

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

    Early Bird tickets are only available for a limited time.

    We want this event to be accessible to as many people as possible, so we’re also offering a reduced-fare (early bird) ticket option for attendees who need an even lower-cost option.

    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

  33. On moving an actor's content.

    4/

    Or, instead of using the ActivityPub 'Update' activity —

    Couldn't we use the ActivityPub 'Move' activity.

    w3.org/TR/activitystreams-voca

    With the "origin" and "target" fields.

    Where "origin" contains the old ID URL, and "target" contains the new ID URL.

    .

    #ActivityPub #ActivityStreams #FediDev

  34. On moving an actor's content.

    3/

    There a many different conventions we could come up with to allow an ActvityPub 'Update' activity to be used to change an object's "id" field.

    We (the Fediverse developer community) just need to pick one that everyone is willing to implement.

    For example, perhaps the "origin", "result", or "target" field should be used:

    w3.org/TR/activitystreams-voca

    w3.org/TR/activitystreams-voca

    w3.org/TR/activitystreams-voca

    Or —

    ...

    #ActivityPub #ActivityStreams #FediDev

  35. On moving an actor's content.

    2/

    Could an ActivityPub 'Update' activity be used to move objects from one server to another server?

    Could an 'Update' activity be used to change an object's "id" field?

    After all, the "id" is used to identity what is being changed. It is the targeting mechanism.

    How can you provide the old "id" to target the (old) object you want to change the "id" of, while also providing a new "id"?

    w3.org/TR/activitypub/#update-

    ...

    #ActivityPub #ActivityStreams #FediDev

  36. On moving an actor's content.

    1/

    One of the things that comes up on the Fediverse from time to time — is the ability for people to move their accounts.

    For example, someone started off at:

    @joeblow@example.com

    But, now wants to "move" to:

    @misterx@host.example

    There is a mechanism to do that.

    That mechanism moves their followers, their followees, BUT —

    It does NOT move their content over!

    That is a problem. Could we address this‽

    ...

    #ActivityPub #ActivityStreams #FediDev

  37. ActivityPub being treated as JSON is a good thing.

    5/

    JSON-LD has similar complexity to RDF. They are actually related formats.

    ActivityPub uses JSON-LD, and thus has the potential for the same type of developer user-experience problems as RSS 1.0.

    But I think ActivityPub is its own "RSS 2.0".

    Why‽ Because people can and do treat ActivityPub as JSON (rather than JSON-LD).

    That is a strength. It makes ActivityPub much simpler and easier to understand than JSON-LD.

    #ActivityPub #FediDev

  38. ActivityPub being treated as JSON is a good thing.

    4/

    RSS 2.0 won the RSS war.

    I think the reason RSS 2.0 beat RSS 1.0 is because the RDF-based syntax of RSS 1.0 made it complex. It made it too complex.

    While both RSS 1.0 and RSS 2.0 were XML-based, RSS 2.0 wasn't RDF-based. RSS 2.0's syntax was much simpler and easier to understand.

    I think that was a big reason why RSS 2.0 won — it had a better developer user-experience.

    ...

    #ActivityPub #FediDev

  39. ActivityPub being treated as JSON is a good thing.

    3/

    It would be reasonable for anyone to assume that RSS 2.0 is a newer version of RSS 1.0. And there were many who tried to promote that view.

    But, really they were completely different formats.

    The "RSS" in 1.0 and 2.0 didn't even stand for the same thing.

    1.0 RSS = RDF Site Summary

    2.0 RSS = Really Simple Syndication

    ...

    #ActivityPub #FediDev

  40. ActivityPub being treated as JSON is a good thing.

    2/

    There are different versions of RSS.

    Most people who know of RSS (if they even know it at all) know of RSS 2.0. But, it wasn't the only version of RSS.

    (RSS isn't even the first technology of its kind.)

    When the online developer community became aware of RSS, there was a fight between two version of RSS:

    RSS 1.0 versus RSS 2.0

    ...

    #ActivityPub #FediDev

  41. ActivityPub being treated as JSON is a good thing.

    1/

    Some of us are old enough to remember RSS and blogs.

    Some of us are old enough to remember the absurd levels of hype that blogs and RSS attracted — similar to the modern AI hype and recent crypto hype. During that era, it felt like everyone any their pet cat wanted a blog with an RSS feed. During that era, there was a get-rich-quick fever around blogs and RSS.

    Web-Browsers even added built-in support for RSS.

    #ActivityPub #FediDev

  42. I think ActivityPub Partial Updates won't work well with attachments or tags.

    Not unless there is a way to reliably just target the item in the attachments or tags array that you want to modify. AFAIK, there isn't.

    You have to download the old version of the whole attachments or tags array first, update it locally, and then upload the whole (updated) thing. This creates a race-condition.

    See also: mastodon.social/@reiver/116446

    #ActivityPub #ActivityStreams #FediDev

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

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

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