How do we handle Groups (Reconciling FEP-400e and FEP-1b12)?
-
This is a topic to track the FEP-400e and FEP-1b12 reconciliation, aka "How do we handle Groups". I've made this a wiki to let implementers describe their current status quo
Implementations
See also
https://socialhub.activitypub.rocks/t/developers-meeting-2-groups/2302https://socialhub.activitypub.rocks/t/how-to-use-groups/1005https://socialhub.activitypub.rocks/t/groups-implementation/591https://socialhub.activitypub.rocks/t/lets-discuss-groups/519https://socialhub.activitypub.rocks/t/standardizing-on-activitypub-groups/1984
-
silverpill@socialhub.activitypub.rocksreplied to angus@socialhub.activitypub.rocks last edited by
I think in order to reconcile FEP-400e and FEP-1b12 the following changes can be made:
- Both FEP-400e and FEP-1b12 implementations: support FEP-7888 (context collection)
- FEP-400e implementations: upgrade to Conversation Containers
- FEP-1b12 implementations: add
target
property toAnnounce
activity that points to context collection.
Activity types will still be different (
Add
vsAnnounce
), but consuming implementations can easily accept both. -
julian@community.nodebb.orgreplied to silverpill@socialhub.activitypub.rocks last edited by
@silverpill@socialhub.activitypub.rocks Unless I'm reading this wrong, you're advocating that we should:
- Reduce the number of moving parts to 2 (400e bows out in favour of 171b)
- Encourage broader adoption of a resolvable
context
property (this would be the one differentiator that can be used as feature detection) - Implementations should accept both
Add
andAnnounce
activities as valid for appending to a resolvable context collection.
Let me know if I have that right, I'd like to discuss this at the upcoming ForumWG meeting Thursday.
-
silverpill@socialhub.activitypub.rocksreplied to julian@community.nodebb.org last edited byjulian:
Unless I'm reading this wrong, you're advocating that we should:
Yes, that's correct. I believe it is also important to make
context
a collection of activities, because reactions are part of a conversation too (I didn't fully realize that until I added support for FEP-1b12Announce(Like)
andAnnounce(Dislike)
) -
trwnh@socialhub.activitypub.rocksreplied to silverpill@socialhub.activitypub.rocks last edited by
disagree that
context
should contain likes and dislikes. i think those should go in collections likelikes
or an extension-defineddislikes
.but also,
context
is agnostic to what it contains. this is why i was thinking of maybe defining new types to signal that the collection should contain "posts" (objects that havecontent
) only, or if it can contain other non-"post" objects like Like/Announce/etc activities.the main mechanism for deciding what goes in a context collection is more or less "whatever declares that
context
and gets delivered to / added by the authority" -
silverpill@socialhub.activitypub.rocksreplied to trwnh@socialhub.activitypub.rocks last edited bytrwnh:
disagree that
context
should contain likes and dislikes. i think those should go in collections likelikes
or an extension-defineddislikes
.So servers will need to make additional requests for every object in a context collection when backfilling a thread? This is quite inefficient.
The goal is 0 additional requests because every activity in collection is signed.
-
trwnh@socialhub.activitypub.rocksreplied to silverpill@socialhub.activitypub.rocks last edited by
it's only inefficient if you care about like/dislike/share counts. i am fundamentally disagreeing that those activities should be considered part of a conversation. it adds nothing to the conversation to just tell everyone "i like this" with zero additional input to the conversation. now, if you wanted to clarify and say "i like this because ..." then maybe you actually are contributing to the conversation. you'd do that by putting
content
on your Like, which turns it into a "post". (posts dont have to be Notes or Articles. activities can be considered "posts" if they havecontent
.) -
julian@community.nodebb.orgreplied to trwnh@socialhub.activitypub.rocks last edited by
From an implementor point of view, I will say that if I receive a context and it contains the entire activity history, I will simply retrieve everything and normalize it down to the items that I do care about.
For example, a collection containing:
Create(Note), Like(Note), Announce(Note), EmojiReact(Note), Create(Note)
would be collapsed down to
Note, Like, Announce, (ignored), Note
Whereas a collection containing just the objects would not need collapsing (it'd just be
Note, Note
). Either way, it containing the entire history does not impede my ability to parse it.Sure, I'd miss some of the activities around it, so that's a concern, but it's not a dealbreaker. That's why I'm on the fence about this one.
-
julian@community.nodebb.orgreplied to julian@community.nodebb.org last edited by
My personal opinion is that this could be a non-issue. If the verbiage on the FEP were amended so that it says:
The collection MAY contain complete activities (this includes Create, Update, Delete, Like, EmojiReact and other activities) OR simple objects.
I would have no problem with this, but I do not know if this is a problem for others.
-
fentiger@mastodon.socialreplied to julian@community.nodebb.org last edited by
@julian I'd lean towards activities, because it's a lot easier to remove data you don't care about, than to reinvent data that you do care about but never received.