⚠️ We’re now entering the “extinguish” part of “Embrace, extend, extinguish”.
-
️ We’re now entering the “extinguish” part of “Embrace, extend, extinguish”. We’ve had the first proposals in @socialcg to remove requirements of #activitypub that have been in place for 7+ years, and without an explanation how the removal improves anything.
https://en.m.wikipedia.org/wiki/Embrace,_extend,_and_extinguishReact if you’d like a #ActivityPubSpecAlert when there are proposals to change the requirements of ActivityPub as we’ve begun to see the last couple weeks.
bengo@mastodon.social what's the context for this?
-
-
-
@silverpill @bengo "To maximize interoperability, consumers can accept all three representations."
Same as with the original post, it would be useful to link to actual proposals in the form of an email, or repo comment or pull request. I see only a single contributor for that wiki page, so I still have no idea who proposed what and why it's harmful. But I'd really like to know.
-
@silverpill @bengo "To maximize interoperability, consumers can accept all three representations."
Same as with the original post, it would be useful to link to actual proposals in the form of an email, or repo comment or pull request. I see only a single contributor for that wiki page, so I still have no idea who proposed what and why it's harmful. But I'd really like to know.
Revisit the `https://www.w3.org/ns/activitystreams#Public` == `as:Public` == `Public` equivalence and guidance · Issue #404 · w3c/activitypub
Motivation Continuing from #264 and with this JSON-LD playground link, we make the following observations: First, that the AS2-Core spec requires that AS2 documents MUST be consistent with the JSON-LD compacted form; Second, that within ...
GitHub (github.com)
It's quite long, but the summary is:
- AP says that the identifier of the special public collection is
https://www.w3.org/ns/activitystreams#Public
(section 5.6).
- JSON-LD programs may replacehttps://www.w3.org/ns/activitystreams#Public
withas:Public
. There is a note in AP that warns about this quirk.
- One proposed erratum re-frames the current normative text.as:Public
is presented as a "correct" variant, andhttps://www.w3.org/ns/activitystreams#Public
is said to be "erroneous". Another proposed erratum replaceshttps://www.w3.org/ns/activitystreams#Public
withas:Public
in all examples.Why is it harmful?
-
https://www.w3.org/ns/activitystreams#Public
is used everywhere. Even among those few implementations that do JSON-LD processing, most don't produceas:Public
. The whole problem is made-up.
-as:Public
andPublic
are not valid HTTP URIs, so you need to special-case them when you parse audiences. These variants should be banned, but what happens is the opposite.
- Specification will become even more confusing than it is now, because examples will contradict the normative text. -
Revisit the `https://www.w3.org/ns/activitystreams#Public` == `as:Public` == `Public` equivalence and guidance · Issue #404 · w3c/activitypub
Motivation Continuing from #264 and with this JSON-LD playground link, we make the following observations: First, that the AS2-Core spec requires that AS2 documents MUST be consistent with the JSON-LD compacted form; Second, that within ...
GitHub (github.com)
It's quite long, but the summary is:
- AP says that the identifier of the special public collection is
https://www.w3.org/ns/activitystreams#Public
(section 5.6).
- JSON-LD programs may replacehttps://www.w3.org/ns/activitystreams#Public
withas:Public
. There is a note in AP that warns about this quirk.
- One proposed erratum re-frames the current normative text.as:Public
is presented as a "correct" variant, andhttps://www.w3.org/ns/activitystreams#Public
is said to be "erroneous". Another proposed erratum replaceshttps://www.w3.org/ns/activitystreams#Public
withas:Public
in all examples.Why is it harmful?
-
https://www.w3.org/ns/activitystreams#Public
is used everywhere. Even among those few implementations that do JSON-LD processing, most don't produceas:Public
. The whole problem is made-up.
-as:Public
andPublic
are not valid HTTP URIs, so you need to special-case them when you parse audiences. These variants should be banned, but what happens is the opposite.
- Specification will become even more confusing than it is now, because examples will contradict the normative text. -
Revisit the `https://www.w3.org/ns/activitystreams#Public` == `as:Public` == `Public` equivalence and guidance · Issue #404 · w3c/activitypub
Motivation Continuing from #264 and with this JSON-LD playground link, we make the following observations: First, that the AS2-Core spec requires that AS2 documents MUST be consistent with the JSON-LD compacted form; Second, that within ...
GitHub (github.com)
It's quite long, but the summary is:
- AP says that the identifier of the special public collection is
https://www.w3.org/ns/activitystreams#Public
(section 5.6).
- JSON-LD programs may replacehttps://www.w3.org/ns/activitystreams#Public
withas:Public
. There is a note in AP that warns about this quirk.
- One proposed erratum re-frames the current normative text.as:Public
is presented as a "correct" variant, andhttps://www.w3.org/ns/activitystreams#Public
is said to be "erroneous". Another proposed erratum replaceshttps://www.w3.org/ns/activitystreams#Public
withas:Public
in all examples.Why is it harmful?
-
https://www.w3.org/ns/activitystreams#Public
is used everywhere. Even among those few implementations that do JSON-LD processing, most don't produceas:Public
. The whole problem is made-up.
-as:Public
andPublic
are not valid HTTP URIs, so you need to special-case them when you parse audiences. These variants should be banned, but what happens is the opposite.
- Specification will become even more confusing than it is now, because examples will contradict the normative text.@silverpill @bengo I see spec contributors having a disagreement over compatibility/priority between AP and other specs, but where's the EEE? The OP even outlines 3 different options from his POV to start the discussion on it.
The person who inexplicably blocked me right after I asked for details made vague accusations about EEE going on, and I'm still just trying to find out what they were talking about.
-
@silverpill @bengo I see spec contributors having a disagreement over compatibility/priority between AP and other specs, but where's the EEE? The OP even outlines 3 different options from his POV to start the discussion on it.
The person who inexplicably blocked me right after I asked for details made vague accusations about EEE going on, and I'm still just trying to find out what they were talking about.
I don't know what @bengo means by EEE, but he also said
remove requirements of activitypub that have been in place for 7+ years, and without an explanation how the removal improves anything
And I gave you an example.
The OP even outlines 3 different options from his POV to start the discussion on it.
To understand what is wrong here you just need to compare those options with the actual text:
ActivityPub
The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.
(www.w3.org)
-
I don't know what @bengo means by EEE, but he also said
remove requirements of activitypub that have been in place for 7+ years, and without an explanation how the removal improves anything
And I gave you an example.
The OP even outlines 3 different options from his POV to start the discussion on it.
To understand what is wrong here you just need to compare those options with the actual text:
ActivityPub
The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.
(www.w3.org)
I've also thrown about claims of EEE to some fediverse software without tangible evidence of intent, so I'll speak up here. I'm sure the project developers themselves would disagree, but many times these actions pass the walks-like-a-duck test. And it happens repeatedly. So even if it wasn't the intention, the pattern of actions has no distinguishing difference to performing the action with an intent that EEE will be the outcome.
It's sort of like the Krasnov example. Trump may not be a Russian asset, but his actions have resulted in the exact same outcomes that a hypothetical Russian asset in his position would produce; so it walks like a duck, and it happens repeatedly. -
@pfefferle @julian @bengo @csarven @raucao @oblomov
i think the context is this github issue: https://github.com/w3c/activitypub/issues/320
was put to the swicg mailing list as a cfc by evan: https://lists.w3.org/Archives/Public/public-swicg/2025Jun/0038.html
bengo requested a clear "error description" and "candidate correction": https://lists.w3.org/Archives/Public/public-swicg/2025Jun/0039.html
to clarify, no requirements are being removed: https://lists.w3.org/Archives/Public/public-swicg/2025Jun/0043.html
i agree that cfc emails should include an "error description" and "candidate correction". perhaps https://github.com/w3c/activitypub/issues/320#issuecomment-2971191447 suffices?
-
I don't know what @bengo means by EEE, but he also said
remove requirements of activitypub that have been in place for 7+ years, and without an explanation how the removal improves anything
And I gave you an example.
The OP even outlines 3 different options from his POV to start the discussion on it.
To understand what is wrong here you just need to compare those options with the actual text:
ActivityPub
The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.
(www.w3.org)
@silverpill @raucao no requirements are being changed here. "the identifier is foo" does not mean "the identifier MUST always be expressed using the literal sequence of characters f, o, o".
speaking of requirements, please read the first sentence of https://www.w3.org/TR/activitystreams-core/#jsonld and note the MUST.
"as:Public should be banned" is completely uncalled for.
and you currently need to special-case the full URI too! this is because it is not a real object. the real mistake is addressing Public at all.
-
I don't know what @bengo means by EEE, but he also said
remove requirements of activitypub that have been in place for 7+ years, and without an explanation how the removal improves anything
And I gave you an example.
The OP even outlines 3 different options from his POV to start the discussion on it.
To understand what is wrong here you just need to compare those options with the actual text:
ActivityPub
The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.
(www.w3.org)
@silverpill @bengo "We’re now entering the “extinguish” part of “Embrace, extend, extinguish”
He means that an unspecified large corporate player, who adopted AP at some point, is now moving past the Embrace and Extend phases to literally Extinguish the protocol or the smaller competitors using it.
I'm the first person to support him in banging the drum about this all day long, if he could point me to where this is happening. Alas, insta-block instead of explanation, strongly suggesting BS.
-
I've also thrown about claims of EEE to some fediverse software without tangible evidence of intent, so I'll speak up here. I'm sure the project developers themselves would disagree, but many times these actions pass the walks-like-a-duck test. And it happens repeatedly. So even if it wasn't the intention, the pattern of actions has no distinguishing difference to performing the action with an intent that EEE will be the outcome.
It's sort of like the Krasnov example. Trump may not be a Russian asset, but his actions have resulted in the exact same outcomes that a hypothetical Russian asset in his position would produce; so it walks like a duck, and it happens repeatedly.@mikedev I have no evidence that people at SocialCG are acting on behalf of any software project. Yes, all of them are Mastodon users, but I doubt Mastodon devs are super excited about the errata we've been discussing here or the overall direction of SocialCG's work.
And that is exactly the problem: there is no input from developers (I am the only active participant who maintains an ActivityPub application with more than 1 user).
-
@silverpill @raucao no requirements are being changed here. "the identifier is foo" does not mean "the identifier MUST always be expressed using the literal sequence of characters f, o, o".
speaking of requirements, please read the first sentence of https://www.w3.org/TR/activitystreams-core/#jsonld and note the MUST.
"as:Public should be banned" is completely uncalled for.
and you currently need to special-case the full URI too! this is because it is not a real object. the real mistake is addressing Public at all.
"the identifier is foo" does not mean "the identifier MUST always be expressed using the literal sequence of characters f, o, o".
It does literally mean that. Furthermore, ActivityPub requires identifiers to be dereferenceable URIs, so even in an alternative reality where "X is Y" has a different meaning,
as:Public
is not a valid identifier.ActivityStreams requirements don't matter because we're implementing ActivityPub, not ActivityStreams.
-
"the identifier is foo" does not mean "the identifier MUST always be expressed using the literal sequence of characters f, o, o".
It does literally mean that. Furthermore, ActivityPub requires identifiers to be dereferenceable URIs, so even in an alternative reality where "X is Y" has a different meaning,
as:Public
is not a valid identifier.ActivityStreams requirements don't matter because we're implementing ActivityPub, not ActivityStreams.
@silverpill @trwnh @raucao I don't think this is accurate or helpful. The first sentence of the AP spec: "The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.". Later, "ActivityPub uses ActivityStreams for its vocabulary." AS2 is referenced many times in the spec. It definitely *does* matter in an ActivityPub context.
-
@silverpill @bengo "We’re now entering the “extinguish” part of “Embrace, extend, extinguish”
He means that an unspecified large corporate player, who adopted AP at some point, is now moving past the Embrace and Extend phases to literally Extinguish the protocol or the smaller competitors using it.
I'm the first person to support him in banging the drum about this all day long, if he could point me to where this is happening. Alas, insta-block instead of explanation, strongly suggesting BS.
@raucao from my own perspective as a user and developer for the fediverse, the only perpetrator of EEE strategies is Mastodon.
They're the ones that implement only the parts of the spec that suits them, and add other unrelated bits, and inadvertently bully everyone else into supporting the same or face not being federated with the majority of the fediverse.
I suspect that's not what @bengo meant, but you never know.
-
@silverpill @trwnh @raucao I don't think this is accurate or helpful. The first sentence of the AP spec: "The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.". Later, "ActivityPub uses ActivityStreams for its vocabulary." AS2 is referenced many times in the spec. It definitely *does* matter in an ActivityPub context.
-
@silverpill @steve @raucao <Note> is <as:Note> is <https://www.w3.org/ns/activitystreams#Note>, but only "Note" is consistent with compacted JSON-LD.
Fundamentally, identifiers are expressed in different ways depending on context. The prefix mechanism produces compact URIs, which are still intrinsically URIs despite their lexical form not being a valid URI. If you care about referents, you need to expand them.
"as:Public" is canonical for object properties (type:id). Disliking this fact doesn't make it untrue.
-
@silverpill @steve @raucao <Note> is <as:Note> is <https://www.w3.org/ns/activitystreams#Note>, but only "Note" is consistent with compacted JSON-LD.
Fundamentally, identifiers are expressed in different ways depending on context. The prefix mechanism produces compact URIs, which are still intrinsically URIs despite their lexical form not being a valid URI. If you care about referents, you need to expand them.
"as:Public" is canonical for object properties (type:id). Disliking this fact doesn't make it untrue.
@silverpill @steve @raucao The only thing I can really suggest is dropping the use of the prefix mechanism by undefining the `as` term, then rewriting all other term definitions to not use the `as:` prefix. This might make sense since the media type nominally guarantees the meaning of certain terms, and you really shouldn't define your own custom terms in the `as:` namespace, so maybe it's okay to say that no one should ever use `as:`. Is that the resolution you'd prefer?
-
@silverpill @steve @raucao The only thing I can really suggest is dropping the use of the prefix mechanism by undefining the `as` term, then rewriting all other term definitions to not use the `as:` prefix. This might make sense since the media type nominally guarantees the meaning of certain terms, and you really shouldn't define your own custom terms in the `as:` namespace, so maybe it's okay to say that no one should ever use `as:`. Is that the resolution you'd prefer?
@trwnh @steve @raucao I am not convinced that there is a problem in the first place.
ActivityPub says the identifier is
https://www.w3.org/ns/activitystreams#Public
. JSON publishers use full URI. Server implementations that perform JSON-LD processing (e.g. Iceshrimp) also produce full URI, they figured it out. Then, why make a change?If this issue is purely theoretical, then it must be addressed without changing ActivityPub.