#activity-streams — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #activity-streams, aggregated by home.social.
-
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 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.
-
Yes. I think you are asking exactly the right question:"What does it mean in this context?"
Many replies to the #poll ponder related questions, or state an "it depends". It is clear there's a lot of nuance and edge cases.
Reformulated, how delete should work is solution-specific, depends on domain, use cases, and stakeholders in SX terms.
And Delete activity in #ActivityStreams is not the well-understood part of #ActivityPub it is treated as today. See also:
-
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.
-
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.
...
-
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.
...
-
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
-
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:
https://github.com/kukhariev/node-uploadx/blob/master/proto.md
I like that it uses Content-Range in the protocol. I would have done the similar.
-
It seems as if the uploadMedia ActivityPub extension does not provide a way to resume an upload that didn't previously compete.
https://www.w3.org/wiki/SocialCG/ActivityPub/MediaUpload
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.
-
What do you think about JSON-LD language maps for "preferredUsername"?
I.e., preferredUsernameMap.
"preferredUsernameMap": {
"en": "hello",
"fa": "درود",
"ko": "안녕하세요"
} -
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'.
-
I think it would be better if instead of Fediverse software outputting the following for ActivityPub/ActivityStreams Notes, Articles, etc:
"attributedTo": "https://mastodon.social/users/reiver",
It would instead output something more like:
"attributedTo": {
"id":"https://mastodon.social/users/reiver",
"type":"Person",
"name":"Charles",
"preferredUsername": "reiver",
"icon": {...},
"image": {...},
}This way the Activity* document contains everything needed to render it.
-
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.
-
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.)
-
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?
-
RE: https://mastodon.social/@reiver/116471973046146144
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").
-
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.
-
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.
-
Can an ActivityPub 'Place' also be an Actor?
https://www.w3.org/TR/activitystreams-vocabulary/#dfn-place
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
-
Should an ActivityPub 'Place' be used to represent a fictional place?
https://www.w3.org/TR/activitystreams-vocabulary/#dfn-place
Such as a fictional place in a story, or a video game?
#ActivityPub #ActivityStreams #FediDev #FediFiction #FediGames
-
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
-
1/
I have been thinking about how to create a Fediverse Game using the ActivityPub 'Question' object.
I have some different ideas, but I think I want to try something simpler and quicker to make first — before attempting a magnum opus 🙂
Here is what I am thinking for a first game...
#ActivitiyPub #ActivityStreams #FediDev #FediGames #Games #VideoGames
-
RE: https://mastodon.social/@reiver/116460489571305159
I think Mastodon will strip image attachments from ActivityPub 'Question' objects.
That is too bad.
That means even if you create an 'Question' with 'Image' attachments elsewhere, you still won't see them in Mastodon (or in the Mastodon client-server API)
…
I guess the work-around is to post a 'Note' with an 'Image' attachment(s), and then reply to it with a 'Question'. That feels clunkier, but doable
#ActivitiyPub #ActivityStreams #FediDev #FediGames #Games #Mastodon #MastoDev #VideoGames
-
RE: https://mastodon.social/@reiver/116456445062337364
If one was to create a Fediverse Game using the ActivityPub 'Question' —
It would be nice if people could play it from a regular Fediverse client.
But, you could also offer a game-specific client that allows for a richer game experience.
#ActivitiyPub #ActivityStreams #FediDev #FediGames #Games #VideoGames
-
RE: https://mastodon.social/@reiver/116456445062337364
One decision to make if one was to create a Fediverse Game using the ActivityPub 'Question' —
Do you just create a bot that connect to a Fediverse server (such as a Mastodon server)?
Or, do you create the Fediverse server, too?
...
There are pros and cons each way.
The former is simpler to build in many ways.
The latter lets you add as many poll choices as you want, and even add extra JSON-LD name-spaces.
#ActivitiyPub #ActivityStreams #FediDev #FediGames #Games #VideoGames
-
Would you play a Fediverse game?
Would you play a Fediverse game about Meta Humans?
#ActivityPub #ActivityStreams #FediDev #FediGames #Fediverse #Games #VideoGames #MetaHumans
-
I think you could create a (certain type of) video game using the ActivityPub 'Question'.
https://www.w3.org/TR/activitystreams-vocabulary/#dfn-question
#ActivitiyPub #ActivityStreams #FediDev #FediGames #Games #VideoGames
-
These are all conventions, and domain-specific conventions at that in my perspective, addressed in latest (long) blog post on grassroots #ActivityPub #fediverse evolution. In other words the choice depends on the domain you are modeling, and the solution requirements.
I am musing on a #Protosocial AP protocol extension, which acts as an overlay network, that operates more according to the Actor Model. Actors can be of many types, can be created on-the-fly, be part of supervision trees, have different lifetimes, etc.
Also they are decoupled from Identity. The have ActorId of course, but a Person actor does not relate directly to the person, and might as well be operated by a bot script. How exactly I'll model that remains open, but #ActivityStreams Profile may play a role, as an Identity visitor's card to exchange, kind of.
-
Yea. The Tombstone object is available in #ActivityStreams but I think it is very tricky indeed to have a proper #prosocial wire implementation.
Suppose someone crosses the line in their conversation, receives harsh criticism, and decides to remove their post, now the wriggling tail of critique and judgment becomes detached from the popular originator toot in the thread. Unattached, floating freely in #social fabric, often without the context on why criticism was deserved. A harrasser comes off easy, one can say. They also have more chance to 'clean their slate', by showing better #behavior and re-earn lost respect if their comms violation wasn't too egregious.
A tombstone inserted in the deletion space, even when totally anonymised, still has mentions of the person in the following replies, which for a full-blown "right to be removed" would involve removing those too. Or else a respondent can make sure that the bad Monday someone had, remains carved in stone.