Skip to content
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

Withhold origin trial features from API Reference generation #42

Open
jpmedley opened this issue Nov 29, 2022 · 4 comments
Open

Withhold origin trial features from API Reference generation #42

jpmedley opened this issue Nov 29, 2022 · 4 comments

Comments

@jpmedley
Copy link

jpmedley commented Nov 29, 2022

The API reference displays items that are in origin trials without indicating them as such. This has a number of problems.

  • The existence of an origin trial is no guarantee of shipping. In eight years, I've seen features that were shipped with a different API surface, I've seen features that went through a second origin trial with a different design, and I've seen features that did not ship at all.
  • Because this feature is only available in an origin trial, extension developers can't count on its availability. To even use it, host sites must have opt-in to the origin trial. In the most optimistic case, this feature is only available to 1 web site in every 1.5 million.
  • Our documentation gives no indication that this is experimental, much less how I could test it if I wanted to.
  • We do not publicize origin trials that affect extensions and provide no general guidance for how an extension developer can participate in an origin trial.
  • Do we even want extension developer participating in origin trials?

For example, so that extensions can handle Back/Forward (sic) caching a few things have been added to extension APIs. One of them is called FrameType. One of the values of FrameType is "fenced_frame". But Fenced Frame is in an origin trial that finished by the time Chrome shipped 108 on November 29.

This issue is a request to either hide or correctly label items that are in origin trials. I favor hiding since labeling such items requires additional documentation and publicity that may or may not be useful to our developers.

Regardless of which option we chose, the first step will be making the conversion process aware of origin trials.

@jpmedley
Copy link
Author

cc: @dotproto @ali-spivak

@dotproto
Copy link

cc: @rdcronin

@dotproto
Copy link

dotproto commented Dec 2, 2022

Just chatted with Devlin about this. At the moment, I think it makes sense for documentation to reflect that certain capabilities related to origin trials are exposed, but we shouldn't completely omit them. There are a couple of relevant factors here:

Lower level brower concepts – Extensions can integrate very deeply with browser implementation details in order to do what they do. Not all extensions will need to handle features like the "fenced_frame" FrameType, but the ones that do do.

Trials for thee but not for me – If a website opts into a trial that overlaps with extensions APIs, that opt-in only affects their website and no others. But extensions span all websites a user visits. That overlapping trial can lead to buggy behavior in the extension and that could be a critical problem for the extension.

Overlap is (relatively) uncommon – Origin trials and extensions capabilities don't often overlap. In the past 5 years the only 2 cases I can think of right now are MPArch (bfcache & related work) and fenced frames. That said, fenced frames are related to Google's Privacy Sandbox effort and due to how closely that effort ties into web platform primitives there may be more overlap in the future.

At the moment I think the most practical course is to add a callout about (and link to) the origin trial to the API docs in Chromium source as appropriate and give ourselves follow-up issues for future milestones to check if the callout is still necessary/accurate.

We should keep an eye on how frequently we encounter origin trial-related extension doc concerns and the related maintenance cost of these efforts. If the maintenance burden gets high enough (or the engineering cost gets low enough), we can revisit this approach and discuss automating the process.

@jpmedley
Copy link
Author

jpmedley commented Dec 2, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants