Skip to content

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone

Context deletion vs. Removal brainstorming

Technical Discussion
30 3 76
  • @julian mastodon doesn't resolve anything directly over HTTP but they do the equivalent internally with an SQL query. the case where a Collection has an inbox is unhandled because mastodon ignores anything that isn't Person/Group/Organization/Application/Service. mastodon i think also disallows addressing collections that aren't your own followers collection (potentially overzealous spam protection?)

    @julian in "technical terms" the reason no one has to worry about this issue is because no one implements activitypub, and when they deliver, they generally disallow delivering to any collections except your own followers collection.

    imagine addressing someone else's followers collection, or your own following collection, or a group's members collection, or a public collection. those are all possible in activitypub and would behave according to the specified delivery algorithm for any AP outbox

  • @julian in "technical terms" the reason no one has to worry about this issue is because no one implements activitypub, and when they deliver, they generally disallow delivering to any collections except your own followers collection.

    imagine addressing someone else's followers collection, or your own following collection, or a group's members collection, or a public collection. those are all possible in activitypub and would behave according to the specified delivery algorithm for any AP outbox

    @julian i mean, if i sent nodebb an activity addressed to collection.example right now, what would you do with it? mastodon would use that as a signal to upgrade any "direct" or "followers" post to a "limited" post. this was implemented as part of their early support for "circles", which i think are so far only a thing on fedibird and bonfire maybe? i'm not sure how audience would be inherited in further interactions but mastodon would probably default to followers-only as overridden by API

  • @julian in "technical terms" the reason no one has to worry about this issue is because no one implements activitypub, and when they deliver, they generally disallow delivering to any collections except your own followers collection.

    imagine addressing someone else's followers collection, or your own following collection, or a group's members collection, or a public collection. those are all possible in activitypub and would behave according to the specified delivery algorithm for any AP outbox

    trwnh@mastodon.social but that's exactly it, nobody does it.

    That's perhaps not a compelling reason to remove it from the spec, but if it's already on the chopping block then I don't feel as strongly about sticking to that part of it.

  • @julian i mean, if i sent nodebb an activity addressed to collection.example right now, what would you do with it? mastodon would use that as a signal to upgrade any "direct" or "followers" post to a "limited" post. this was implemented as part of their early support for "circles", which i think are so far only a thing on fedibird and bonfire maybe? i'm not sure how audience would be inherited in further interactions but mastodon would probably default to followers-only as overridden by API

    trwnh@mastodon.social I can't speak for how Mastodon would handle it, but if an arbitrary collection were addressed, I don't see why it would change visibility of the object.

    Public and unlisted are containing as:Public in to and cc respectively. Followers-only is sender's follower collection addressed, and otherwise it's mentioned-only post.

    Would Mastodon try to resolve the collection for actors? Good question. If it did it would likely resolve it, see that it isn't an Actor, and give up. However I'm venturing into conjecture now.

  • @julian in theory there shouldn't be anything wrong with saying a Collection is also something else, but activitypub's delivery algorithm will have unintended consequences if you address a Collection that has its own inbox

    also Remove is defined with respect to object+target, not object+origin. yes, this is somewhat confusing because in english we remove "from" rather than remove "to", but that's far from the only slip-up. (currently AS2 also defines you Invite an Event to a Person...)

    trwnh@mastodon.social said in Context deletion vs. Removal brainstorming:
    > also Remove is defined with respect to object+target, not object+origin.

    That's fine, I'll make the corresponding change.

    I was basing it off this line in the AS spec:

    > If specified, the origin indicates the context from which the object is being removed. [[source](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-remove)]

  • @julian if "no one POSTs to outbox" is an argument for axing the outbox, then i don't know what we'd be discussing, because what would be left? i mean, maybe we can say "addressing collections no longer expands delivery to items", but then we presumably need an alternative that doesn't involve addressing actors one-by-one.

  • @julian that's pretty much exactly what happens iirc, except instead of "it isn't an actor", the check mastodon does is "it isn't a Person/Group/Organization/Application/Service".

    multityping [OrderedCollection, Service] as you propose would cause mastodon to try to process it as an actor, but likely fail when it doesn't pass the webfinger assertion and therefore can't be converted to an Account entity.

  • @julian yes, this is an area where AP actually contradicts AS2 for no good reason. semantically it should be origin, but the side effects of AP are defined wrt target.

  • @julian that's pretty much exactly what happens iirc, except instead of "it isn't an actor", the check mastodon does is "it isn't a Person/Group/Organization/Application/Service".

    multityping [OrderedCollection, Service] as you propose would cause mastodon to try to process it as an actor, but likely fail when it doesn't pass the webfinger assertion and therefore can't be converted to an Account entity.

    @julian mastodon has a level between "followers-only" and "mentioned-only", which represents exactly this case -- "limited". this means that there are addressees who are not are not accounts, and who are not your followers. to mastodon, these are basically "unknown recipients", and it records the fact that they were addressed but not who they are (its database model doesn't support this)

    but activitypub only has actors and collections (while overlooking that the same thing might be both)

  • it feels like an unnecessary abstraction for the purposes of skirting around a limitation in the ActivityPub specification.

    What limitation?

    The problem is not that ActivityPub has a limitation, the problem is that it doesn't have enough. It can't be used to build a real application because it doesn't specify what is valid and what is not. it doesn't even specify what an "actor" is.

    Fortunately, the answers to these questions were found and documented in FEP-fe34 and FEP-2277. Object observers are likely compatible with both FEP-fe34 and FEP-2277. Other ideas are not compatible.

    In your proposed structure (feel free to correct if wrong), a resolvable context would declare an observer property pointing to an Actor, who would be federating actions out on its behalf.

    Yes. I think some property can also be added to posts to simplify discovery e.g. Note.contextObserver.

    However, it has the same technical hurdle — lack of existing implementation — than the alternative, which is to multi-type the collection into ["OrderedCollection", "Service"] or similar.

    So ["OrderedCollection", "Service"] is supposed to be an actor that is also a dynamic container? That doesn't make any sense, and I don't know how to implement that in C2S setting. It also conflicts with FEP-fe34 and FEP-2277.

  • it feels like an unnecessary abstraction for the purposes of skirting around a limitation in the ActivityPub specification.

    What limitation?

    The problem is not that ActivityPub has a limitation, the problem is that it doesn't have enough. It can't be used to build a real application because it doesn't specify what is valid and what is not. it doesn't even specify what an "actor" is.

    Fortunately, the answers to these questions were found and documented in FEP-fe34 and FEP-2277. Object observers are likely compatible with both FEP-fe34 and FEP-2277. Other ideas are not compatible.

    In your proposed structure (feel free to correct if wrong), a resolvable context would declare an observer property pointing to an Actor, who would be federating actions out on its behalf.

    Yes. I think some property can also be added to posts to simplify discovery e.g. Note.contextObserver.

    However, it has the same technical hurdle — lack of existing implementation — than the alternative, which is to multi-type the collection into ["OrderedCollection", "Service"] or similar.

    So ["OrderedCollection", "Service"] is supposed to be an actor that is also a dynamic container? That doesn't make any sense, and I don't know how to implement that in C2S setting. It also conflicts with FEP-fe34 and FEP-2277.

    If I used an object observer for a topic/context, and proceeded to delete that context, the object observer would go away too.

    That is, unless you're inferring that I take steps to preserve the object observer for some period of time (if not forever?)


Gli ultimi otto messaggi ricevuti dalla Federazione
  • read more

  • @julian i'd say the confusion is primarily that we've shifted topic around several different things and i'm still not sure which is the intended topic of the discussion :x

    - deleting posts that are in a thread
    - removing posts from a thread
    - implications for downstream posts in a thread when some ancestor in the reply chain is deleted/removed
    - deleting a thread that is in a forum
    - removing a thread from a forum
    - moving a thread to the "uncategorized" forum
    - ...?

    read more

  • @julian if the intent is to signal what happens when nodebb moves a thread to "uncategorized", then i think the simplest thing is for nodebb to treat "uncategorized" as a forum in itself, still. you already assign them an id of -1, so you are in effect treating the "uncategorized" category as a category still.

    read more

  • @julian the confusing thing to me, though, is that both Delete and Remove already don't imply anything about posts in the thread if the thread is deleted/removed from the forum.

    by default, if you Delete a thread, the forum might still have a broken link to the now-deleted thread, and the posts also have broken links to the thread.

    by default, if you Remove a thread from the forum, the posts still exist within the thread.

    read more

  • trwnh@mastodon.social specifically however, is that you're not deleting the context. Just removing it.

    NodeBB has the concept of a context not belonging to an audience (the "uncategorized" pseudo category.) in those specific situations, contexts would be removed from the audience, not deleted.

    Lemmy and Piefed don't have these concepts, so they simply delete them. So therein lies some of the confusion I believe.

    read more

  • @julian like removing a whole thread from the forum? Remove(object=thread, target=forum)? this seems like something altogether different than removing posts from a thread.

    removing threads from a forum is possible but if the thread is owned by the forum then the forum can also delete them.

    the part that differs between impls is whether Delete(thing that is a context) should do anything to objects where context = the Delete.object, right? i think it makes the most sense to just orphan them.

    read more

  • trwnh@mastodon.social it signals that the actor is removing the context from the targeted audience.

    The audience can optionally announce it, and receivers synchronizing with that audience (per 1b12) should follow suit and remove the context as well.

    read more

  • @julian what does Remove(Context) mean here?

    read more
Post suggeriti
  • 0 Votes
    15 Posts
    44 Views
    trwnh@mastodon.social Yes, you're right. There are nuances and situations where you would explicitly not want to inherit the root object's context. I am dealing with the typical day-to-day use case of replying to an object with the expectation that is be part of the same existing context. However I am more than happy to make this clear in the FEP and spell out alternative situations where context inheritance would not apply. The situation I found myself in was one where anybody can (and does) include whatever context they want. In that case, it's difficult to determine whether disparate contexts are actually referring to a common set of the same objects, or whether they were disparate on purpose (i.e. a fork.) To that end, it meant that as a receiver there was no guarantee that any contexts I'd be sent would map to any contexts I know. Strict root-level inheritance for the common use-case would at least disambiguate a lot of this.
  • 0 Votes
    1 Posts
    13 Views
    Es wäre etwas anderes, wenn ich keine Beweise hätte. Wenn ich nur eine zufällige Person wäre, die wilde Behauptungen ohne jegliche Dokumentation aufstellt, wäre das natürlich Unsinn.Aber ich habe Beweise. Ich habe das aus erster Hand gesehen und sogar das Risiko auf mich genommen, Dinge von der Arbeit zu teilen, um es zu untermauern.Dieser Ort soll doch besser sein als Blue Sky, Twitter, Facebook und Reddit – richtig?Wenn dem so ist, warum werden dann Betrüger geschützt und behandelt, als gehörten sie zu einer besonders geschützten Personengruppe?#Betrug #Täuschung #Fediverse #ActivityPub #Twitter #Reddit #Facebook #BlueSky
  • 0 Votes
    1 Posts
    14 Views
    Summer/Autumn 2025: Little coding, but lots of socializing and planningAt the first October weekend I (@linos) was attending the Berlin FediDay 2025. It was a meetup of the Berlin and German community, developers of Fediverse applications, and representatives of German speaking media institutions. It was great to see old friends again and meet some online contacts for the first time. We were discussing the future and the role of the Fediverse, which was super motivating. #FediDayTwo weeks later, I travelled to Sofia, Bulgaria, to attend this year’s OpenFest, give a talk and lead a workshop on how the Fediverse can help announce and discover events. Unfortunately, the talk didn’t attract much attention, as LLMs are currently drawing more of an audience. But the discussions with those in attendance were very interesting. The workshop was mainly about trying out #Gancio, #WordPress and #Mastodon and learning about the possibilities for local communities by trying out the applications themselves. I simply provided real test instances, created a list of tasks, including minor pitfalls, and, of course, answered all the questions that came up – and there were quite a few! And a big thank you to the crew and the organizing team, who were so friendly and simply wonderful throughout. #OpenFestYesterday, I had an awesome online meeting with the incredibly cool folks behind LAUTI, a free and open-source software for hosting small event calendars. #LAUTI is aimed at small and medium-sized communities and has a big focus on social, cultural and activist stuff. The instance for the Stuttgart area, run by the collective that develops it (@klasse_methode@chaos.social), can be found at https://einftopf.info. The developers are in the process of exploring the potential of #ActivityPub and the #Fediverse. I’m very excited and think this could be really great! In case you’ve been wondering: I see LAUTI kind of in between #Mobilizon and #Gancio. In my opinion, it would not be a competitor to them, but it could be a great addition to the Fediverse by filling this gap.I will be at the #SFSCON in Bolzano, Italy, in two weeks. There will be a whole afternoon focusing on the Fediverse! So in case you’re there you’re invited to join my short talk about Interoperability of Events in the Fediverse: status quo and vision. Or you’re welcome any time to say hello and let’s have a chat.After that, it’s time to sit down and get back to programming. But it’s very important to me to continually evaluate and understand what the priorities are, and to remind myself why it’s so important that we all continue our work in this area.#ActivityPub #FediDay #Fediverse #Gancio #Lauti #Mastodon #Mobilizon #OpenFest #SFSCON #WordPress
  • 0 Votes
    1 Posts
    23 Views
    Week in Fediverse 2025-10-03Servers- flohmarkt v0.12.1- Gush! v0.0.23- NodeBB v4.6.0- ActivityPub for WordPress v7.5.0- Ktistec v2.4.15- Hollo v0.6.12- tootik v0.19.6- NeoDB v0.12.3- Vernissage Server v1.23.0- PieFed v1.2.3- September 2025 (Bandwagon)- ONI news for September (Oni)- Bonfire Social 1.0rc3- ActivityBot: A Simple ActivityPub Bot Server in a Single PHP FileClients- Fedilab v3.35.1- Pachli v3.0.0For developers- ActivityPub Fuzzer: Emulates known Fediverse software, helping solve the problem where developers have to manually test compatibility with other projectsArticles- Getting started with Mastodon's Quote Posts - technical implementation details for servers- Fediverse Report – #136-----#WeekInFediverse #Fediverse #ActivityPubPrevious edition: https://mitra.social/objects/019987c8-484d-f913-d511-5e8329f9741f