#ActivityStreams

just small circles 🕊smallcircles@social.coop
2025-06-30

@mamund thank you. I will also give the linked article on agentic systems a read.

Note that #ActivityPub here on the #fediverse has this need to discover and introspect the capabilities of actor endpoints on the network.

This entirely missing. With #ActivityStreams #LinkedData endlessly versatile, a player on the fediverse can freely invent their own flavours on-the-fly, introducing protocol decay and makes #interoperability harder.

Whack-a-mole driven development to moving targets ensues.

It's annoying that most of the ambiguity in #ActivityPub / #ActivityStreams is a direct result of the squishiness of json, and the transport medium being almost literally anything else would have made it a nonissue

infinite love ⴳtrwnh
2025-06-29

let's demo this with a simple case. say you want to `tag` something that is a `Movie` described by schema.org. the `Movie` declares that it has an `actor` who performed in it.

this is redefining the term `actor` as defined at the top-level by -- where `actor` means who performed an `Activity`, not who performed in a `Movie`.

if the activitystreams context was protected, then this would be a fatal error for any validator. you cannot be sure which `actor` was meant!

3/?

infinite love ⴳtrwnh
2025-06-29

say you have a generic property whose range is relatively unbounded -- a grab-bag where anything goes. something like how `attachment` or `tag` are used in . using multiple contexts at the top-level introduces a potential conflict in terms. you could reconcile any conflicts with a custom context, but that prevents reuse / understanding a more well-known context.

unfortunately, due to context propagation, terms defined earlier on can "leak" into the naively merged subgraph.

2/?

Tom Phillipstwp@hachyderm.io
2025-06-18

I've read the #ActivityStreams spec a few times now and the O'Reilly ActivityPub book chapter on it. I could be missing something here, but polymorphism in data is my least favourite thing ever. Is it a link as a string? Is it a link as an object? Is it an object? Is it a mix of all them in an array? The terms object and link are confusingly overloaded too.

I expect the authors put a lot of thought into it, so I'm going to assume I am the problem here and look into JSON-LD again. Maybe there's a simple ways to parse and produce these documents.

The idea of using AS for an app's domain model doesn't appeal to me at all. Much rather marshal to it.

R (rolandinsh)r@toot.lv
2025-06-04

@normis jo vēlējos izaicinājumu. Saprast, uztaisīt un lietot. Un #ActivityStreams vai #ActivityPub ir tikai papildinājumi, tam ko patiesībā taisu - savu aplikāciju ministarteri blogam, rēķiniem, you name it...

R (rolandinsh)r@toot.lv
2025-06-04

Pārstāju te tik bieži rakstīt, jo gribēju uzrakstīt savu Twitteri/Mastadonu. Bet vēlme to padarīt vairāk kā "make it simple, make it work", ir jau aizgājusi kāda ntā iterācija. Beigās (pagaidām) ir parasta pierakstu web aplikācija bez skaistās daļas, tikai #API (jā, #APIfirst piekritējs) un izdzēsu visu #ActivityPub un #ActivityStreams... jo tie izrādās ir vienkārši. Tagad jāpārtaisa vecāka vibe-coded "skaistā" #ReactJS puse. Un tad mobile + desktop. Un tad... :)

@reiver ⊼ (Charles) :batman:reiver
2025-05-22

5/

So, not just Decentralized Social (DeSo), but instead —

Decentralized Social (DeSo), Federated Social (FeSo), Localized Social (LoSo)

The goal is 'social' that is simultaneously — 'Decentralized', 'Federated', and 'Localized', all at the same time.

RE: mastodon.social/@reiver/114551

@reiver ⊼ (Charles) :batman:reiver
2025-05-22

4/

Federation is the word we use to describe that act of bringing together and connecting these separate Decentralized, Localized communities.

This is where protocols such as ActivityPub, ActivityStreams, etc come into play.

Federation is a voluntary choice.
But, so too is Defederation, if desired.

2025-05-21

w3.org/TR/activitystreams-voca

Why is it ok for example 100 to have a string as the value of the "prev" property when it is constrained to be a CollectionPage | Link ?

#ActivityStreams

R (rolandinsh)r@toot.lv
2025-05-12

Taisīt #ActivityPub / #ActivityStreams aplikāciju nemaz nav tik viegli, ja dokumentācija/specifikācija ir tāda "vaļīga". Piem., Vai šis lauks A var saturēt HTML - definitely maybe.

R (rolandinsh)r@toot.lv
2025-04-23

iespējams, uzrakstīju savu "bloga" dzini. Nācās gan noņemt pagaidām visas #ActivityPub / #ActivityStreams iespējas (extra fīčas), bet, kad būs atpakaļ, būs kaut kas startp #WordPress un #Mastodon ar #Pixelfed iespējām. Un ja nebūs slinkums, saderīgs ar #Bluesky :)

Iespējams. Konteinerizēts #PoC strādā uz mana datora :D

Tagad tiksi nenoslinkot un pabeigt, jo patiesībā ir veidots pēc WordPress līdzības, lai var modulāri papildināt (pluginu sistēma), piem., pārrakstīt manu esošo rēķinu sistēmu.

2025-04-17

After toiling away at this for a few months, I'm releasing two new Go projects for the fediverse today:

  • longdistance, a JSON-LD processor.
  • pana, an ActivityStreams library built on longdistance.

I built these projects with the hope to make it easier for folks to get started building on the fediverse themselves. You can read a bit about this on my blog.

(If you happen to have computer touchers in your followers, I would appreciate a boost.)

#golang #LinkedData #ActivityStreams

@reiver ⊼ (Charles) :batman:reiver
2025-03-31

A reasonable ActivityPub / ActivityStreams API to schedule something to be posted in the future might be — to HTTP POST something to an account's outbox with the `published` field set to a date-time in the future.

@reiver ⊼ (Charles) :batman:reiver
2025-03-31

Currently, the way I am determining if content is valid ActivityPub / ActivityStreams content is —

№1:

Determining if it is valid JSON.

№2:

Checking if it has a "type" field.

And that is it.

@reiver ⊼ (Charles) :batman:reiver
2025-03-31

Dealing with JSON-LD would be easier in many ways if everything was defined inline.

Rather than having to get the content from a URL in the context, parse it, etc.

@reiver ⊼ (Charles) :batman:reiver
2025-03-27

"Activities addressed to this special [public address] URI shall be accessible to all users, without authentication."

w3.org/TR/activitypub/#public-

The "public address" is:
w3.org/ns/activitystreams#Publ

(Yes, I am posting this for a reason.)

@reiver ⊼ (Charles) :batman:reiver
2025-03-26

2/

I think there is a need for a "dumb" document format.

HTML is no longer that.

Markdown probably isn't it.

No one really uses enriched-text (IETF RFC 1896).

(I prefer wiki like formats, for various reasons, but —)

I don't think there is an obvious choice for a "dumb" document format, right now.

@reiver ⊼ (Charles) :batman:reiver
2025-03-26

1/

I think HTML being the default content type for ActivityPub / ActivityStreams is unfortunate in some ways.

HTML was originally a "dumb" document format. But, it is now a "smart" application format — with privacy & security concerns.

mastodon.social/@reiver/108237

You should NOT just take whatever HTML is in the 'content', and put it in the web-browser to view it.

You have to sanitize it. Or, render (unsafe) HTML to (safe) HTML.

@reiver ⊼ (Charles) :batman:reiver
2025-03-26

Previews in ActivityPub / ActivityStreams is what should bind the disparate software and user-experiences on the Fediverse.

Not the ActivityStreams 'Note'.

...

Previews using 'icon', 'image', 'name', 'summary', etc.

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst