-
Notifications
You must be signed in to change notification settings - Fork 46
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
Support for non-browser specs #436
Comments
This updates the URLs of a few specs that started their journey on TR: - CSS Fonts Level 5 - Incremental Font Transfer - MathML Core - WebXR AR Ligtning estimation This also adds the navigation speculation specs to the monitoring list for now, ignoring the core spec that just targets these two specs. Fixes #436
This updates the URLs of a few specs that started their journey on TR: - CSS Fonts Level 5 - Incremental Font Transfer - MathML Core - WebXR AR Ligtning estimation This also adds the navigation speculation specs to the monitoring list for now, ignoring the core spec that just targets these two specs. Fixes #436
Reopening as "fixes" reference in merged PR was wrong... |
Could such specs go in a separate package, and ideally a separate repo? |
That is one option. We still don't really have a clear view of what we want to end up with in practice and it affects more than just the browser-specs repo. There will be scenarios where people will want to merge the lists and scenarios they will want to consider lists separately. In the xref example, goal is probably to end up with only one database, currently at Webref. In the WoT example, we would want the IDL to be separated from the rest of the IDL. We may end up duplicating browser-specs and webref, but that introduces a bit of maintenance overhead and will impact some of the tools as well. |
I think it's a wonderful feature of browser-specs that it only includes things that are implemented in some browser. It would be great if the browser-specs keeps being that, it's in the name after all. If this repo is renamed all-the-specs and only a subset ends up in the browser-specs package, that would be fine for my usage. |
Quick summary: Goal is to expand the list of specs to non-browser specs and release the new list as an npm package named web-specs, while keeping the browser-specs npm package intact. Reffy would then depend on web-specs and crawl the whole list. Webref would need to be slightly updated to filter out non browser specs when it prepares the curated versions of the To achieve this, I propose to:
One good thing about introducing such a workflow is that it will also make validation of the diff an explicit step of the release process. That is something that I do manually looking at the history of commits before I hit the release button, and it is sometimes useful to spot problems that tests cannot cover (such as weird spec titles). A more concrete list of todos:
Once we have something in place, we may consider renaming the repository if that feels needed. |
@tidoust that sounds good, and means I can keep using browser-specs in the way I have so far. |
This update brings a number of changes to the preparation and release of browser-specs as an NPM package in order to support extending the list of specs to also contain specs that are not targeted at browsers. A new `categories` property was added to the description of specs. It contains a list of categories that the spec belongs to. The only category so far is `"browser"` for specs that target web browsers. That category is automatically computed based on the name of the group that develops the spec for now. Explicit info in `specs.json` may be used to override the computed value. The code reuses the list of groups and repos in `src/data/ignore.json` to identify specs that do not target web browsers for the time being. That list should get split into two lists on a short term basis: a list of groups and repos that `find-specs.js` should indeed ignore, and a list of groups and repos linked to specs that are not targeted at browsers (we won't ignore them anymore, but we won't flag them with a `"browser"` category). That split is not done in this update. In general, I expect the logic in `compute-categories.js` to evolve based on non-browser specs that we add to the list. The release workflow is a copy-and-paste from the one used in webref: - A new `packages` folder contains the list of packages that can be released. Two packages: `web-specs` which contains all the specs, and `browser-specs` which contains all specs that target Web browsers. - A `prepare-packages.js` script prepares the contents of these packages. - A `bump-packages-minor.js` script bumps the minor version of these packages whenever a new spec gets added to the package or when a spec gets removed. - A `prepare-release.js` script prepares a pre-release PR per package that contains the diff to release (the actual PR is a patch bump on the package version) - A `release-package.js` script actually releases the packages to NPM when the pre-release PR gets merged. Jobs were adjusted accordingly. In particular, the build job now only commits updates provided that tests pass, so as not to end up with a committed list that we know is wrong. It also creates the pre-release PRs as needed. The release job tags the released commit on the main branch, and updates the `web-specs@latest` and `browser-specs@latest` branches. The `web-specs@latest` is the one intended to be published to GitHub Pages. Note the packages READMEs are automatically completed based on the main README. It could be interesting to further general common scripts between browser-specs and webref. The scripts are sufficiently similar that this seems worth pursuing, and sufficiently different that this makes is a bit painful. Plus I'm not too crazy about having to create yet another repo for hosting that common glue code. I propose to address that later on. This addresses #436.
This update brings a number of changes to the preparation and release of browser-specs as an NPM package in order to support extending the list of specs to also contain specs that are not targeted at browsers. A new `categories` property was added to the description of specs. It contains a list of categories that the spec belongs to. The only category so far is `"browser"` for specs that target web browsers. That category is automatically computed based on the name of the group that develops the spec for now. Explicit info in `specs.json` may be used to override the computed value. The code reuses the list of groups and repos in `src/data/ignore.json` to identify specs that do not target web browsers for the time being. That list should get split into two lists on a short term basis: a list of groups and repos that `find-specs.js` should indeed ignore, and a list of groups and repos linked to specs that are not targeted at browsers (we won't ignore them anymore, but we won't flag them with a `"browser"` category). That split is not done in this update. In general, I expect the logic in `compute-categories.js` to evolve based on non-browser specs that we add to the list. The release workflow is a copy-and-paste from the one used in webref: - A new `packages` folder contains the list of packages that can be released. Two packages: `web-specs` which contains all the specs, and `browser-specs` which contains all specs that target Web browsers. - A `prepare-packages.js` script prepares the contents of these packages. - A `bump-packages-minor.js` script bumps the minor version of these packages whenever a new spec gets added to the package or when a spec gets removed. - A `prepare-release.js` script prepares a pre-release PR per package that contains the diff to release (the actual PR is a patch bump on the package version) - A `release-package.js` script actually releases the packages to NPM when the pre-release PR gets merged. Jobs were adjusted accordingly. In particular, the build job now only commits updates provided that tests pass, so as not to end up with a committed list that we know is wrong. It also creates the pre-release PRs as needed. The release job tags the released commit on the main branch, and updates the `web-specs@latest` and `browser-specs@latest` branches. The `web-specs@latest` is the one intended to be published to GitHub Pages. Note the packages READMEs are automatically completed based on the main README. It could be interesting to further general common scripts between browser-specs and webref. The scripts are sufficiently similar that this seems worth pursuing, and sufficiently different that this makes is a bit painful. Plus I'm not too crazy about having to create yet another repo for hosting that common glue code. I propose to address that later on. This addresses #436.
Plan suggested above has now been implemented. There may remain bugs as the whole release workflow has not yet run for real (coz' server issues right now) but I'll address them as they appear. In short:
New non-browser specs have not yet been added to the list. Let's make sure that everything works as planned first ;) |
@tidoust I'm not sure I follow. Will a new |
Yes.
I was more thinking of a minor version bump. From a browser-specs package perspective, this will just remove a handful of specs (Patent Policy, Process document, i18n glossary), which we usually qualify as a minor update.
That's only I you decided to check out the |
Alright, sounds good! I don't really care about semver, so whatever version component you'd like to bump is fine with me :) |
This issue tracks the extension of the browser-specs to cover non-browser specs.
The browser-specs was created to track specs that target Web browsers. Once in a while, selection criteria are a bit fuzzy but list boundaries have remained relatively clear so far and have shown value for integration in tools and projects such as Webref, MDN, WPT.
Now, some tools actually need to ingest more than just "browser" specs. Notably, spec authoring tools would happily extend their cross-referencing (xref) terms database so that other specs may benefit from it as well. For instance, a given WoT spec may need to reference a WoT term defined in another WoT spec. Currently, it cannot rely on the xref mechanism for that.
We already had to add a few specs to browser-specs that don't meet selection criteria, e.g. the Process and Patent Policy specs. This somewhat works but can break expectations from tools that rely on browser-specs to stick to actual browser specs, see #390 (comment)
Introducing other specs may create other side effects. For instance, the WoT Scripting API defines WebIDL that is not implemented in browsers and should not be included in the
@webref/idl
package.It seems useful to have a way to open up browser-specs to non-browser specs. It should equally be easy to get back to a browser-only list of specs. We could perhaps maintain two lists of specs in the browser-specs repo. Or perhaps keep one list and flag non-browser specs somehow.
The text was updated successfully, but these errors were encountered: