-
Notifications
You must be signed in to change notification settings - Fork 240
Add a features/draft/vendor/ directory an exempt it from CI #3726
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
I don't really understand how this is going to work. If a vendor adds a draft feature here, how do they refer to the feature in e.g. an intent to prototype email or standards-position request? If the feature is updated "later" how is one supposed to handle references to the old name in immutable data (e.g. email)? Basically I don't understand the concept of an "unpublished web feature". I think the use cases require there to be an agreed ID for early stage features, but which tools that don't care about early stage features can filter out. If this proposal amounts to features getting an like |
That is effectively the proposal, yes. This PR doesn't say how to refer to these features externally, but |
I think we should make that explicit, and ensure that we have group agreement on the proposal. Having a feature lifecycle that makes sense across a range of usecases feels like the important part; exactly how we represent that in the repo feels like implementation details. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll start with my assumptions. I'm expecting a loop like this:
- Vendor creates a draft
.ymlfile for vendor-originating feature X. - web-features mints a real feature Y.
- web-features deletes draft X and records somewhere that draft X became real feature Y.
- Vendor checks that record and replaces their feature X identifier with real feature identifier Y (or however they want to handle that mapping on their end).
I'm also assuming that we do not expect vendors to do any reconciliation with each other (we'll do that when we mint a feature). For example, two standards positions requests on the same day could trigger the creation of two vendor drafts referring to the same feature and we don't care, as long as everyone's generating unique vendor draft IDs.
If that's right, then I think this is a good place to start. I've left some comments on some specifics.
| - A web-features maintainer creates a real feature entry and replaces the draft | ||
| feature with a pointer to that feature. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be nice to have a stub/example file showing a mapping from a completed draft to a real feature ID.
Or we could have a JSON file showing former vendor draft paths (this would be nicer for us, to have the folder contain only un-minted features, but would require vendors to do a little more than not overwrite an existing file).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been resolved below. After the live review session with Philip, I was brought around to the idea that the resolution of a draft can and should happen in-place, rather than deleting or moving the files. While this is less convenient for me personally as a maintainer, it's less complex for the bots that are going to commit this stuff (e.g., the process for creating a draft file is, more or less, "don't clobber an existing file").
|
Also, FWIW, I have been reading "vendor" in the sense of "vendorization" and not that these things would be the sole domain of browser vendors. If, for instance, WPT or State of… surveys wanted to get in on this process, then that could happen here just as well. |
|
@ddbeck and I live reviewed this just now. I've updated the README to say that Note that I don't think we need to publish these anywhere to start out. |
ddbeck
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm much happier with the examples here. I think this is enough for us to go on to start experimenting with this.
| - A web-features maintainer creates a real feature entry and replaces the draft | ||
| feature with a pointer to that feature. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been resolved below. After the live review session with Philip, I was brought around to the idea that the resolution of a draft can and should happen in-place, rather than deleting or moving the files. While this is less convenient for me personally as a maintainer, it's less complex for the bots that are going to commit this stuff (e.g., the process for creating a draft file is, more or less, "don't clobber an existing file").
| ## Example | ||
|
|
||
| The [processing instructions in HTML](https://chromestatus.com/feature/6534495085920256) | ||
| feature is created as `vendor/html-pis.yml` file with this contents: | ||
|
|
||
| ```yml | ||
| # features/draft/vendor/html-pis.yml | ||
| explainer: https://github.com/WICG/declarative-partial-updates/blob/main/patching-explainer.md | ||
| chrometatus: https://chromestatus.com/feature/6534495085920256 | ||
| ``` | ||
|
|
||
| When the real web-features entry is created, it is decided to consider this part | ||
| of `<template for>`, so the draft vendor feature is updated like this: | ||
|
|
||
| ```yml | ||
| # features/draft/vendor/html-pis.yml | ||
| kind: moved | ||
| redirect_target: template-for | ||
| ``` | ||
|
|
||
| Any references to `vendor/html-pis` can be updated to refer to `template-for`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's my expectation that we'll revise this to use a fully-realized example, once we've been through it once or twice.
ddbeck
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm much happier with the examples here. I think this is enough for us to go on to start experimenting with this.
jgraham
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this needs to consider the workflow for consumption, rather than just the publishing workflow. If these feature names are going to appear anywhere in public (explainers, s-p requests, status counters, intent emails), it needs to be possible for people to reference them just like other feature ids.
| @@ -0,0 +1,44 @@ | |||
| # Draft vendor features | |||
|
|
|||
| This directory is for features proposed by a browser vendor, to support the | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why only browser vendors?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It doesn't have to be, we can change this to allow anyone in principle. Possibly there could be a bot that looks for a specific format in WPT's WEB_FEATURES.yml files, for example.
| # Draft vendor features | ||
|
|
||
| This directory is for features proposed by a browser vendor, to support the | ||
| early use of web-features before there is a published web-features ID, and a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we don't publish these anywhere we still can't reference them from e.g. standards positions without recreating all the build infrastructure to know what are valid definitions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you expect to reference these in standards positions, we can publish somewhere. How about a JSON file on GitHub pages that's updated for every commit to this repo?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, I expect you to reference them in standards positions (requests) :p
But yes, publishing them separately to the main ids would be fine for me.
| feature is created as `vendor/html-pis.yml` file with this contents: | ||
|
|
||
| ```yml | ||
| # features/draft/vendor/html-pis.yml |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think if the subdirectory is vendor then there should be a vendor name for each proposal e.g. vendor/google/html-pis.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If it's just about the naming, could we call it tentative or proposed instead and not have any further nesting?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I quite like proposed.
No description provided.