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 74
  • @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
  • Hi all,

    I've recently had some questions about what tool to use for note taking during taskforce meetings, personally I've been using hedgedoc from social.coop, but it's a private instance and you need an invited account. I've also used hackmd in the past. I've seen other taskforces use Google Docs, and I think one even used CryptPad.

    Officially the W3C way of scribing meetings is via an IRC bot: https://www.w3.org/2006/tools/wiki/WebExBestPractices#Meeting_Record_(Minutes)

    However, this isn't necessarily the most approachable to many members of the Social Web CG.

    At the end of the day, the most important part is that taskforce leads capture meeting notes and preserve them, e.g., in the taskforce github repository on swicg or swicg/meetings. (I could also automate taskforce to swicg/meetings sync)

    I currently own the socialcg.org and swicg.org domains, and I'd be happy to spin up a hedgedoc server on a subdomain there that taskforce leads can use for creating and taking meeting notes. However, to do this I'd need to figure out some funding for it (not particularly a lot, but some amount of money — somewhere in the range of €60-180 a year, I'd guess).

    What tooling would you like to use for taking meeting notes? Would having a hedgedoc install for the CG be valuable?

    (I am also in the process of hosting the Activity Summary Bot on a VPS, which produces these emails to the mailing list weekly: https://lists.w3.org/Archives/Public/public-swicg/2025Oct/0028.html — it was running on github actions but kept failing there due to GitHub restrictions, so I've had a VPS on a server sponsored by one of the large fediverse hosts to replace GitHub Actions for more reliable delivery)

    Yours,
    Emelia

    read more

  • @nutomic if you're implying that I should have spoken sooner, I'm pretty sure I did. I remember exchanging messages with both you and @dessalines when you started lemmy...

    I have no specific memory about this topic, but to my recollection lemmy federation was pushed as fait-accomplit at one point without me seeing any previous research on your guys part.

    read more

  • @julian This sounds like an implementation detail to me. Some fedi platforms delete a child object when its parent is deleted, others don't.

    If you want to make the removal of a subtree explicit, I'd recommend a Remove where object is an array (similar to what @mariusor suggested):

    Remove(object: Note[], target: Context)

    This also helps with migrating away from Announce(Delete). I saw your FEP draft, will provide more feedback once I read it in full.

    @rimu @nutomic @melroy @BentiGorlich

    read more

  • I fail to see what the fundamental difference is. If you are unsure about the target with Delete/Object, you can also resolve the context of Object to figure that out. Anyway the instance where the Group is hosted is always the authority, so the state there is the correct one.

    Actually I would rather think of this from a different perspective, namely from the perspective of the mod who clicks the remove button. That would happen when a post is offtopic or violates the rules, and then the intent clearly is to remove all replies as they are not useful. It wouldnt make sense to leave up a single reply two levels deep just because it wasnt included in the context for some reason.

    read more

  • I'm sure that approach works as well. This would have been worth discussing 4 or 5 years ago when I was just implementing federation in Lemmy for the first time. By now FEP-1b12 is already an established standard which is used by various platforms, and it would be completely unfeasible to replace it with something else.

    read more

  • I do agree that with_replies, or similar, would be the easiest approach, but I don't think it is the most specific.

    The bool suggests that all replies to a given object are deleted. However, you do not know whether your idea of what the reply tree is matches that of the originating server (which replies are included, etc.?)

    Remove(Context), on the other hand does imply both that the container is deleted, and all of its replies, which are dereferenceable by resolving the context directly. It also has the benefit of being able to provide a pointer to where it was removed from, which is useful.

    So to me it's not just a matter of preference, but that there are additional benefits to Remove

    I will of course concede that it is more work to deliver Remove.

    cc thisismissem

    read more

  • @julian @jdp23 well, a Delete can be operated on an array of objects. :D

    Send one with all the objects that are affected from the local instance (and probably you must keep in mind that not all replies might be).

    read more

  • thisismissem seems I misspoke, as Nutomic's reply above clarifies: the tree stays but is effectively orphaned. Lemmy v1.0 will allow the reply tree to be accessed post-deletion.

    The original query does still remain the same: what would be the best way forward to explicitly signal the deletion (or technically, the removal) of an entire reply tree?

    cc jdp23@neuromatch.social mariusor@metalhead.club

    read more
Post suggeriti
  • 0 Votes
    1 Posts
    12 Views
    Today's deep dive into #activitypub#selfhosting a #pixelfed instance, I send a Follow request to a selfhosted #wordpress blog with AP plugin. The returned Accept Follow payload gets processed by InboxWorker where it just fizzles.I then send a Follow request to this account hosted on mastodon.social. That payload gets processed by InboxValidator instead, then on to ActivityHandler and down the FollowPipeline as expected.Only message difference is #mastodon adds a 'username' field.Bug?
  • 0 Votes
    1 Posts
    12 Views
    I’m setting up the ActivityPub Fuzzer. What’s not clear to me is whether or not this thing can run over localhost on two different ports or whether a proxy is required.#activitypub
  • 0 Votes
    6 Posts
    15 Views
    @Eckernfoerde @tagestipp @nordwetter @admin here we are 🙂 @eckernforde https://de.fedimeteo.com/eckernforde
  • 0 Votes
    1 Posts
    0 Views
    Guest?
    EDIT - informationThis tutorial is supposed to be published by the tutorial profile of this server.It is designed to have several chapters, each being distinctively seperated by an own titel. In total as of now there are like besides this introduction like 6 chapters.posting and edition time of and by this EDIT profileof ver05 as of now 1hsmastodon review contact: @bitpickup--Categories:@helpers@forum.friendi.ca SPOILER - click to open/close || IntroductionThis tutorial is an adaption of the tutorial "creating a friendica server - ubuntu" by @hankg based on the experience of the installation report by @jesuisatirebitpickup:squeet.me/display/962c3e10-576…and specific help by @raroun.Server specs and friendica version used:VPS server | Ubuntu 22.04 LTSPHP Version 8.1.2-1ubuntu2.144 Core CPU, 8 GB Ram with 300GB NVME DiskFriendica [STABLE] | 'Giant Rhubarb' 2023.05 - 1518SPOILER - click to open/close || Installation environment and HowToThe only reasonable way to work with a VPSserver on the web is using the console.If you are not familiar with that don't worry, it is easy and the only thing you have to do is being able to copy/paste the commands displayed:¡Copy/paste only the codeBoxes like this one, located outside of the spoilers of this tutorial one after another without altering the sequence!Of course it is necessary to change the specific file names and passwords for you indiviual site, but that's all. promise!On the console you wont be able to copy/paste with the keyboard ctrl-C/ctrl-V technique, you'll have to use the mouse "right click, chose option" technique.This tutorial was created on a #debian #linux desktop environment.There shouldn't be differences if you want to do this from a #windows machine.The method used for communication between your local computer and the VPS server is called #SSH:Wikipedia - Secure Shell:"Cryptographic network protocol for secure data communication, remote shell services or command execution and other secure network services between two networked computers."#linux #debian #ubuntu #friendica #fediVerse #fediTutorial #tutorial #fediHelp #fediTips #activityPub #HowTo #DIY #VPS #server #selfHosting@admin@tupambae.org @tutorial@tupambae.org