Thanks. I will also include a link to the SWICG mailing list thread on the same subject:
When I wrote [these JSON schemas for ActivityPub](https://github.com/redaktor/Ac…
Thanks. I will also include a link to the SWICG mailing list thread on the same subject:
Follow up is calling for a meeting: Let's meet. Was: Re: Should the specs be forked and maintained elsewhere? from Johannes Ernst on 2023-03-23 (public-swicg@w3.org from March 2023)
Let’s get something done.
I declare myself bold enough to call a meeting with the following proposed coordinates:
When:
Wednesday, March 29, 2023, 10-11am pacific daylight savings time.Where: Sean’s Jitsi
https://meet.privacysafe.io/
Room “ActivityPub”. (I can’t spell swicg and neither can my spell checker)Who:
Anybody on this list
Anybody who cares about the future of ActivityPub and related efforts
Anybody attending FediForum (we will declare this to be one session so hopefully some attendees will show up here)Objective:
Collect views on the future of ActivityPub (and related) standardization
Emerge with some sense of common direction (or be more clear about where disagreements may lie)
A couple of next stepsI’m offering to play facilitator for this one meeting (no promises beyond that) although I would gladly not do that if somebody else volunteers. I’m just tired of waiting
That’s the straw proposal, please propose modifications.
Thanks,
Johannes.
It’s a good idea. Even if we don’'t plan to make any changes, it would be nice to have a backup in case something bad happens.
I have done some thinking about it, spurred on by people saying no on some mailing list somewhere.
I actually already “forked” the ActivityPub Specification. It’s here. So if somebody wants to create something, at least I will find incredibly valuable, finish this idea:
One might take inspiration from ActivityPub Implementation Report …
Could you add that at the bottom of the wiki post in the list that’s emerging, @helge ?
PS. I forgot who started a website to document AP development. It was a recent announcement, dedicated domain. Would like to gauge if they wanna join on Codeberg with that. Anyone?
If someone starts working on upgraded specification documents
Activity Streams Core definitely needs to be revisited first or discarded. I would expect this to be the place, where the requirements on an ActivityStreams object are clearly stated. So it should be something like:
and so on. Having clearly defined minimal requirements will enable better interoperability.
why? it works
as2 documents are consistent with json-ld compacted form given the activitystreams context document, but can otherwise be parsed as plain JSON
why? it’s just an optional hint. the only types that matter are the Activity subtypes, which have defined side-effects only within activitypub.
if you mean “transient” (passing), then this is the word used for objects without an id
. if you mean “transitive”, then an “intransitive” activity is one without an object. i don’t know what it’s like in other languages (it probably varies), but in English, we have sentences in the form subject-verb-object-target, and only subject and verb are required. object is required if the verb is performed upon something. target is required if the verb is performed to/from something.
actor
is what defines an Activity, so this is a tautological statement to some extent.
i see no reason to require published
, and the use of object
and target
is already specified in activitypub per the English rules above.
Clients submitting the following activities to an
outbox
MUST provide theobject
property in the activity:Create
,Update
,Delete
,Follow
,Add
,Remove
,Like
,Block
,Undo
. Additionally, clients submitting the following activities to an outbox MUST also provide thetarget
property:Add
,Remove
.
Servers performing delivery to the
inbox
orsharedInbox
properties of actors on other servers MUST provide theobject
property in the activity:Create
,Update
,Delete
,Follow
,Add
,Remove
,Like
,Block
,Undo
. Additionally, servers performing server to server delivery of the following activities MUST also provide thetarget
property:Add
,Remove
.
The next sentence I wrote answers this. I’ll repeat it: I would expect the ActivityStreams specification to be the place, where the requirements on an ActivityStreams object are clearly stated.
If your argument is: They are stated in the ActivityPub Specification, then it’s a vote to discard the ActivityStreams Specification.
to clarify:
it’s all predicated on having as2-core as the foundation. everything else extends from there.
Evidence why I think ActivityStreams Core needs a rewrite:
Yes, that really works. Thanks for helping out… (Actually, I somehow suspected that, but as all related chapters in Matodon’s documentation claims it supports JSON-LD, I was mislead to believe that… Hooray for claiming to implement standards and then not doing!) So, now I just need to do that in a nice (not special-cased) way in my JSON-LD serializer.
If ActivityStreams Core simply stated: “All objects are Json-LD 1.1.” the entire confusion (including mine) could have been avoided.
Bonus content: Also note how messed up HTTP Signatures currently are! They depend on a correct interpretation of ActivityStreams Core.
“All objects are JSON-LD” means that you lose the ability to treat them as “plain JSON”. The thing that allows them to be “plain JSON” consumed is the requirement to compact against the activitystreams context before presentation. The caveat is entirely in how extension contexts get included or not – you MAY compact against additional extension contexts, or you might not. AS2-Core warns that extensions might not be supported by all software because of this. There’s not really any getting around it, either – you can’t force people to understand the same context as you. It devolves into forcing JSON parsers to understand multiple different representations of term names:
term
may be shared but without checking @context
you have no idea if it’s the same. not recommended unless you explicitly target certain projects for compatibilityex:term
compact term will almost certainly not be understood because the prefix may be anythingIf I were to provide guidance purely from an ease-of-compatibility perspective, I would recommend ONLY compacting against the activitystreams context for s2s-related stuff. Any extensions SHOULD be serialized as full IRI, and then JSON-LD consumers can compact against whatever context they understand, if they wish to work with shorthand term
names. But in practice, this isn’t how it works – implementations like Mastodon expect the same shortname as their context.
See this issue here on transient ids and types
When I wrote [these JSON schemas for ActivityPub](https://github.com/redaktor/Ac…
It is unclear to me how well issues are resolved before they are closed
It seems to be the opinion of one person, with the aim to develop a primer
Melvin wrote:
It is unclear to me how well issues are resolved before they are closed
It seems to be the opinion of one person, with the aim to develop a primer
Yes, the recently closed issues were closed based on the opinion of one person, evanp, with a number of folk watching, and sometimes briefly commenting, as he reviewed the issues. The issue review is done via a scheduled Jitsi conference. Often, a closing results in an addition to the growing primer on the wiki. Thus, we’re building up a collection of commentary on previously stated issues in a somewhat organized collection that should make it easier for folk to resolve issues in the future. I think this is a good thing and that it is much better than simply leaving all issues open – as has been the practice in the past. Of course, if anyone disputes the closure, or the text added to the wiki, an issue can always be reopened or resubmitted with additional explanation.
What would be a better process?
bob wyman
An extra pair of eyes would be good
In the WG we had a ‘commenter satisfied’ label to double check the issue was solved
A label could be added for this process, but it seems that you could just search based on time and user
Question is what happens if there’s a mistake? How do we know the resolution is correct. Was the subtype issue correct? Was the functional properties resolution correct? Was the resolution about @type correct?
Melvin asked:
Question is what happens if there’s a mistake? How do we know the resolution is correct. Was the subtype issue correct? Was the functional properties resolution correct? Was the resolution about @type correct?
If there is a mistake, then anyone who detects it can simply open a new issue that explains the issue. Those who agree, or disagree, can comment on the new issue. In time, that issue will also be resolved and a new cycle may begin. Why isn’t that better than leaving almost all issues open and unresolved, even after extensive comments, as has been the practice in the past?
bob wyman
I agree that opening new issues and engaging in discussions is an effective way to handle mistakes and move projects forward. In fact, this approach is employed quite successfully within, for example, Nostr
https://github.com/nostr-protocol/nips/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc
You can see the effectiveness of this approach by looking over half a dozen pull requests updated within the last 24 hours:
The success of this model largely depends on dedicated and knowledgeable leadership, operating in a timely manner. Unfortunately, not all projects, including the W3C repo, have had the same level of consistent attention and commitment. As a result, some issues have been left unaddressed for several years, which can discourage community members from investing their time and effort.
The issue about subclasses was closed, and the resolution didnt make a lot of sense. When I asked for clarification it, the resolution was deleted and completely changed. The question about functional properties was closed, and the answer in the wiki was a hand wavy commentary about “these properties”. Its not even clear what “these properties” are. I did ask for clarification on the issue, and there’s no reply.
Case in point can an actor have more than one inbox. Certainly when I developed the idea of semantic inbox, which lead to solid inbox, and then ldp inbox and then activitypub inbox the idea was that of an http version of email. While you might have one main email address, and one main semantic inbox, as a system grows large people often will have 2-3 inboxes for different contexts.
Id be happier if there was a two step process for closing issues. First adding a label. Then someone who knew linked data (e.g. sarven) could double check it, and close the issue. I’ve suggested that if an explanation is put in the wiki the exact version is linked. So let’s see if that improves things. It might work.
Melvin wrote:
“The question about functional properties was closed, and the answer in the wiki was a hand wavy commentary about “these properties”. Its not even clear what “these properties” are.”
Given the context of the issue, “these properties” are “Functional Properties.” That terminology probably comes from at least the Owl Vocabulary. The Owl definition states that “A functional property is a property that can have only one (unique) value y for each instance.” While ActivityStreams denotes the cardinality of some properties, ActivityPub does not. This may lead to some confusion and some implementers may produce instances of Functional Properties that have array values when they should not. So, those who consume data should be prepared to receive data that does, in fact, contain functional properties that do have array values. In other words, one should follow the standard rule that says “You should be strict in what you write, but liberal in what you read.”
I’m not sure I understand where the ambiguity is coming from.
bob wyman
He wrote: “Publishers should not include array values for these properties”
What are ‘these properties’?
https://www.w3.org/wiki/ActivityPub/Primer/Cardinality_of_properties
In terms of process wouldn’t it be better to stick to more common ways how Github project workflows are done?
So that might be done with:
W3C does have this, e.g. with JSON-LD. That could work better, yes.
Github labels alone can be very useful.
GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 330 million projects.