- From: Benjamin Goering <ben@bengo.co>
- Date: Thu, 23 Mar 2023 18:22:36 -0700
- To: a <a@trwnh.com>
- Cc: Melvin Carvalho <melvincarvalho@gmail.com>, Bob Wyman <bob@wyman.us>, Jacky Alcine <yo@jacky.wtf>, public-swicg@w3.org
- Message-ID: <CAN+OhBOWOescKhw0dRj8MPwZGwDb1J-H78M8Hc=Ywa8HLmT1BA@mail.gmail.com>
from 2018 https://github.com/w3c/activitystreams/issues/479 > Please Indicate One: > * [ ] Editorial > * [ ] Question > * [x] Feedback > * [ ] Blocking Issue > * [ ] Non-Blocking Issue > > Please Describe the Issue: > > I see there is a scheduled vote for next meeting on > https://github.com/w3c/activitystreams/wiki/Extension-process > > I am concerned that it overly encourages using w3.org URLs. Specifically > * (I believe) The CG has very limited capability to affect what URLs like > https://www.w3.org/ns/activitystreams/dating actually resolve to, making > it unnecessarily difficult to have extensions whose URLs resolve to good > human-readable documentation, or even JSON-LD data describing the > vocabulary (depending on 'Accept' header of the request) > * As worded, it encourages a bit of a land grab of good extension names as > soon as a project is even envisioned. It shouldn't be uncommon for > extension ideas to get started and then abandoned, or started and then take > quite some time to be defined and 'published' such that no > backward-incompatible changes are introduced. For example, AS2 itself > changed 'title' to 'name' or something trivial like this several years > after a first draft was published. > * It sounds reasonable to encourage definition extensions in the w3 wiki, > but in practice it isn't so easy to either create a w3 account, get access > to editing the wiki (see [nightpool's experience]( > https://github.com/w3c/activitypub/issues/313#issuecomment-397703016)), > manage changes without git/PRs, or learn any given wiki's esoteric syntax > > I really think we should encourage community extensions to be defined on > URLs outside of w3.org. There should be a clear distinction of > 'work-in-progress' extensions that brand new extension efforts can use and > maybe make backward-incompatible changes in all they want. I think these > extension URLs should always have some sort of 'group prefix' to prevent > over-eagerness to claim good extension names (e.g. ` > https://extensions.activitystreams2.com/work-in-progress/evanp/dating`) > > Several months or years later, when there is a 'v1.0.0' of the extension > promising not to make backward-incompatible changes, the extension effort > may want to do a call for implementations and publish an extension URL > without the 'work-in-progress' warning. (e.g. ` > https://extensions.activitystreams2.com/dating`). At this time, if > desired, the old work-in-progress URLs can be HTTP redirected to the final > URLs. > > Not all extension-authoring groups may have a good, stable place to serve > their extension definitions from, so: > > I own the following domains and would like to offer them up as a place to > define both work-in-progress extensions as well as well-defined and stable > community extensions. I will liberally accept group-namespaced > work-in-progress extension definitions in their respective git repos: > * activitystreams2.com - > https://github.com/gobengo/activitystreams2-extensions > * activitypub.com - https://github.com/gobengo/activitypub-extensions > > I'd also support delegating any 'work-in-progress/{groupName}' directory > to a git submodule, so innovation can happen in a separate repo unhindered > by whoever happens to be in charge of the parent repo (whether w3c or me). > > I'd be happy for these repos to not be under my username. Really what I'm > proposing is that brand new just-idea, > potentially-shifting-under-your-feet, extensions be under > `/{groupName}/{extensionName}` before taking up top-level names. > > Additionally, I would help work on a program to build this repo of > extensions into a useful website for the community to consume them. e.g. > for each extension URL: > * When requested with `Accept: text/html` (e.g. by a web browser), respond > with good human-readable documentation > * When requested with `Accept: application/ld+json`, respond with JSON-LD > describing the vocabulary in terms of rdfs/owl classes, properties, etc. > > I think a plan like this will lead to: > * Removing incentive to grab top-level extension names > * Faster innovation on work-in-progress extensions > * Less hangups and debate on Pull Requests into a top-level namespace > * Better trust that extensions defined outside of work-in-progress will be > stable, well-thought-out > On Thu, Mar 23, 2023 at 6:10 PM Benjamin Goering <ben@bengo.co> wrote: > I was thinking through this and I found this throwback :) > https://github.com/w3c/activitystreams/issues/283#issue-132866529 > > On Thu, Mar 23, 2023 at 3:57 PM a <a@trwnh.com> wrote: > >> > namespacing is overkill for a lot of use cases [...] If plemora and >> mastodon want to have common terms, in JSON, that's good >> >> does this actually work cleanly? my understanding was that JSON-LD >> processors cannot deterministically handle plain JSON they encounter that >> isn't defined in @context. based on the JSON-LD playground, a `term` >> without a mapping will expand to `_:term`; compaction may or may not copy >> the `term` as-is or otherwise expand it; flattening will simply assign a >> blank node identifier that replaces the `term` entirely with `b1`; framing >> will assign `_:b1` to the property name. N-Quads will completely remove any >> such statements where the predicate is not namespaced. >> >> per as2-core, activitystreams documents are defined as compacted against >> the activitystreams context at minimum, and there is this language >> regarding undefined terms: >> https://www.w3.org/TR/activitystreams-core/#jsonld >> >> > Implementations may also use additional properties and values not >> defined in the JSON-LD @context with the understanding that any such >> properties will likely be unsupported and ignored by consuming >> implementations that use the standard JSON-LD algorithms. >> >> so we can't easily depend on "just" attaching properties as plain JSON. >> unless we were to define a conformance profile spec that mandated "plain >> JSON" support, and gave JSON-LD processors extra work to do. (currently, >> the balance is the other way around; plain JSON parsers need to do extra >> work to handle things like `Public` vs `as:Public` vs ` >> https://www.w3.org/ns/activitystreams#Public` >> <https://www.w3.org/ns/activitystreams#Public> being the same thing. >> generic JSON-LD consumers can handle this case trivially.) we might >> similarly imagine a conformance profile which mandated "plain JSON" *only*, >> eliminating support for generic JSON-LD parsers and only supporting >> "JSON-LD enabled Activity Streams 2.0 implementations" which special-case >> the media-type `application/activity+json` and inject the normative >> @context definition if it is missing (which in this case, it very well >> might be). anyone wishing to use flattened or framed JSON-LD would not be >> able to interoperate fully until such extension terms were defined. >> >
Received on Friday, 24 March 2023 01:23:01 UTC