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 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
    1 Posts
    2 Views
    ich werde nie verstehen warum 2025 so viele #programmierer extra den komplizierten weg wählen. sehe es hier bei #activitypub - viele bibliotheken mit hunderte von files ...ich habe das gleiche mit einfachem php geschafft und unter 100 zeilen code....und jetzt kann ich posts senden und empfangen
  • 0 Votes
    1 Posts
    11 Views
    Right on the heels of WordPress 6.9 we released a new version of the ActivityPub plugin, making quote comments visible in the Reactions block and bringing you new ways of customizing your author pages.Quotes Join the Reactions PartyWhen someone quotes your post on Mastodon or other Fediverse platforms, you’ll now see it right alongside your likes and reposts. Quotes get their own row in the Fediverse Reactions display, making it easy to see at a glance who’s building on your ideas and adding their own commentary.Behind the scenes, we improved how we’re detecting quotes. Different platforms have their own ways of handling quote posts, and not all of them speak the same language. The plugin now understands these variations better, so whether someone quotes you from Mastodon, Misskey, or elsewhere, it just works.This means your engagement stats tell a fuller story. A quote isn’t just a repost—it’s someone adding their voice to yours, and now WordPress can recognize and display that distinction.Show Off Your Fediverse IdentityIf you’ve set up extra fields on your Fediverse profile—things like your website, pronouns, location, or links to other accounts—you can now display them directly on your WordPress site with the new Extra Fields block.Drop it onto any page, post, or your author archive template, pick a style that fits your theme, and your profile details appear right where your visitors can see them. Choose from a clean table layout, a stacked list, or styled cards. You can also control how many fields to show and customize colors to match your site.ChangelogAddedAdd documentation guide for using ActivityPub blocks in classic themes with Block Template PartsAdded a new Fediverse Extra Fields block to display ActivityPub extra fields, featuring compact, stacked, and card layouts with flexible user selection options.Added support for quote comments, improving detection and handling of quoted replies and links in post interactions.Add notifications for boosts, likes, and new followers in Mastodon apps via the Enable Mastodon Apps pluginAdds support for turning tags, categories, and custom taxonomies into federated collections in the Reader view so you can browse and follow topics more seamlessly.Prevent email notifications for comments on ActivityPub custom post types.Send a Reject activity when a quote comment is deleted, revoking previous quote permissions and ensuring consistent inbox handling.Store and retrieve webfinger acct for remote actors to improve identification and reduce lookupsChangedImprove gallery and image block markup for ap_posts with better alt text and optimized layouts.Improve support for media attachments by handling Audio, Document, and Video object types in addition to Images.Maintain consistent return values in Create handler.Remove trailing hashtags from incoming posts to prevent duplication with taxonomy tags.Store comments and reactions from followed actors on reader posts, and keep them separate from your site’s comments in wp-admin.Update compatibility testing for PHP 8.5 and WordPress 6.9Use tag name instead of slug for hashtag display.FixedAlways includes id, first, and last links in collection responses, ensuring followers and following lists display correctly in Mastodon.Automatically approves reactions on ActivityPub posts in the Reader view for a smoother, more seamless interaction experience.Deliver public activities to followers only.Disable REST API endpoints for internal post types.False mention email notifications for users in CC field without actual mention tags.Fix “Filename too long” errors when downloading attachments from URLs with query parameters (e.g., Instagram CDN URLs).Fix make_clickable corrupting existing anchor tags in ActivityPub contentFix PHP 8.5 deprecation warnings for ReflectionProperty::setAccessible() and ReflectionMethod::setAccessible()Improved handling of unusual activity data to avoid errors when activities contain unexpected formats.Preserve original ActivityPub activity timestamps when creating posts and comments instead of using current time.Prevented duplicate email notifications when ActivityPub instances re-send Follow activities for already-following actors.Prevents unwanted comment types—like pingbacks, trackbacks, notes and custom system comments, from being federated, ensuring only real user comments are shared with the fediverse.Removed a redundant instruction from the custom post content settings to simplify the UI.Reply block now shows fallback link when oEmbed fails instead of empty div.Simplified reply links by removing special handling for federated comments, making replies work the same for all comments where replying is allowed.Undefined array key warning in Scheduler::async_batch when called without arguments.DownloadsWordPress.org: activitypub.7.7.0.zipGitHub: tag/7.7.0Thank You!As always, a huge thanks to everyone who contributed code, reported bugs, tested early builds, and shared ideas. Every bit of feedback helps make ActivityPub for WordPress better for the whole community.Version 7.7.0 is available now—update and let us know what you think!
  • 0 Votes
    1 Posts
    3 Views
    Monthly meetings are held on the first Thursday of each month, at 13h00 to 14h00 Eastern Time (currently 18h00 to 19h00 UTC). You can find them listed in the SocialCG Calendar. The next meeting will be held (tomorrow) on 4 December 2025. Meeting link: https://meet.jit.si/ap-forum-wg Discussions will continue re: Mastodon context issues (backfill not possible at the moment) Context (topic/thread) deletion and moving between audiences (communities/categories) Deleting entire tree vs. one post. with_replies or Remove(Context)? Draft FEP for the above Cross-posting (stalled?)
  • 0 Votes
    1 Posts
    3 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