Re: 400e, 7888, and conversation containers
-
silverpillreplied to julian on last edited by [email protected]
There is a draft of Conversation Containers FEP: https://codeberg.org/silverpill/feps/src/branch/main/171b/fep-171b.md
And I've come up with a plan for FEP-400e and FEP-1b12 convergence: https://socialhub.activitypub.rocks/t/how-do-we-handle-groups-reconciling-fep-400e-and-fep-1b12/4088/41
(ap) -
Erlend Sogge Heggenreplied to silverpill on last edited bysilverpill1:
And I've come up with a plan for FEP-400e and FEP-1b12 convergence:
Would love to read more! Please provide a valid link.
-
@[email protected] I believe you can access that here: https://socialhub.activitypub.rocks/t/how-do-we-handle-groups-reconciling-fep-400e-and-fep-1b12/4088/41
-
@julian @erlend_sh Thank you, this is the correct link. The URL in my post leads to AP object, I forgot that Discourse doesn't redirect when you view those in the browser. It also doesn't seem to support Update activities
-
@[email protected] Thanks for sharing this. I'm confused by these two sentences:
Collection type SHOULD be
Context
.
...
Add.target
MUST be a partial representation of the collection. Thus, if type of the collection isContext
, anyAdd
activity modifying that collection can be identified byAdd.target.type
.My context collection is of type
OrderedCollection
. I don't believeContext
is one of the AS2 core types.I don't see any reference to collection
type
beingContext
in @[email protected]'s original document. -
-
That wasn't in my original doco and I'm not using it currently. I'll need to see what problem is solved by having Context before I offer an opinion.
I recall @[email protected] took issue with the fact that 'context' and 'target' are the same object and he felt this was duplicitous. There's also a bit of an issue that a "partial object" (defined in FEP-400e) isn't really defined anywhere in the base specs either - and perhaps using Context will help resolve that.
Since it's a SHOULD, my original implementation is arguably compliant with the FEP without it. -
Context
helps with identifying thetarget
. When I receive anAdd
activity, I need to know what collection is being modified. Is it afeatured
collection, acontext
, or something else?One solution is to keep an index of all known collections and search through it every time Add is received.
Another solution would require cooperation from producers, but I think it is a bit cleaner: embed partial representation of atarget
and use specific type there, likeContext
, instead ofCollection
. Then, as a consumer, I can simply checktarget.type
instead of searching fortarget.id
in my collection index. -
@trwnh @mikedev @julian This object design pattern (partial embeddings) can be used in other situations too. We can use a new property like
partial: true
do indicate partial representations:Partially embedded objects
Sometimes object is not embedded fully and only a few of its properties are included. One example of this practice can be found in FEP-400e which requires objects on a wall to have a target property that contains an “abb…
SocialHub (socialhub.activitypub.rocks)
-
@silverpill @mikedev @julian "partial embedding" is a red herring. all embeddings are partial embeddings as far as you know. even fetching from the origin isn't guaranteed to respond with all statements/properties. (open world assumption, remember?) and you're going to have to fetch from origin anyway because you can't trust non-authoritative representations.
i think you'd be better off indexing the collections.
-
@trwnh @mikedev @julian If a relevant authority makes a claim about an object, I have no reason to not believe it. The default assumption is full representation, so if object is signed, or embedded within another object of the same origin, I wouldn't fetch it. Unless it is known to be partial - and that can be indicated by a special property, or can be required by some specification (as FEP-400e does).
-
@silverpill @mikedev @julian the default assumption should not be "full representation", because you can never have the entire set of knowable facts about a given subject.
what we should strive for instead is to make sure that any representation served is useful. this is not the same thing as it being "full". for example, there may be private attributes that are not being served.