Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Mark features with one engine support 'experimental' #17391

Closed
wants to merge 3 commits into from

Conversation

OnkarRuikar
Copy link
Contributor

@OnkarRuikar OnkarRuikar commented Aug 16, 2022

Similar to #17357

Summary

These features are supported by only one engine, so should be marked as 'experimental'.

Supporting details

mdn/content#19569 (review)

cc/ @teoli2003

@github-actions github-actions bot added the data:api Compat data for Web APIs. https://developer.mozilla.org/docs/Web/API label Aug 16, 2022
Copy link
Contributor

@teoli2003 teoli2003 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks ok to me. As there will be others PRs like this, I would like a second check on the first one.

@OnkarRuikar told me there are about 130 errors in mdn/browser-compat-data.

@teoli2003
Copy link
Contributor

(Note we are synchronizing, with a script, what is displayed on MDN and what is in bcd. One day it will be displayed automatically but we had 100s of errors so it was really needed).

@teoli2003 teoli2003 requested a review from queengooborg August 16, 2022 05:46
@queengooborg
Copy link
Contributor

On the BCD side, we typically say that a feature that has been in one browser for a long period of time should be considered non-experimental, but what do you guys think about that?

@OnkarRuikar
Copy link
Contributor Author

I used dialed down version the test-status.ts#checkExperimental() to find these. If we consider flags, prefixes, and alternative names then there will be ~316 files modified in the entire repo.

On top of what @queengooborg said, the yarn fix is non functional at the moment, so this "one engine = experimental" is not being enforced strictly. If we mark the old features experimental then people may come complaining.

@queengooborg
What about features that are old but still behind flags?
For example:

What about features that are old but still behind prefixes?
For example:

What about same for alternate names?
For example:

@queengooborg
Copy link
Contributor

I used dialed down version the test-status.ts#checkExperimental() to find these. If we consider flags, prefixes, and alternative names then there will be ~316 files modified in the entire repo.

The function isn't a fully-developed function to decide experimental status -- it's actually only used to set experimental to false, but not to true. My goal is to automate both experimental and standard track status, so that contributors do not have to manually update them!

We have the full breakdown of when to set experimental to true or false in the data guidelines here: https://github.com/mdn/browser-compat-data/blob/main/docs/data-guidelines.md#choosing-an-experimental-status

@OnkarRuikar
Copy link
Contributor Author

OnkarRuikar commented Aug 16, 2022

The function isn't a fully-developed function to decide experimental status -- it's actually only used to set experimental to false, but not to true. My goal is to automate both experimental and standard track status, so that contributors do not have to manually update them!

I think we'll have to involve git history in the script. 🤔


We have the full breakdown of when to set experimental to true or false in the data guidelines here...

If you guys terminate this PR, I'll update the statuses on mdn/content side.
For the special cases mentioned above I've created following PRs:

@teoli2003
Copy link
Contributor

On the BCD side, we typically say that a feature that has been in one browser for a long period of time should be considered non-experimental, but what do you guys think about that?

I think this is a bit problematic. If a browser develops an obscure API that no other vendors is interested in, it will just sit there forever and become non-experimental.

Also, often, for APIs that are the brainchild of one vendor, the first implementation is made by the spec writers. We all know how it goes when there is some internal pressure to release: if the feature works for the purpose, management pushes for its release. When a second vendor implements it later, that's when the actual review of the API happens and where changes are implemented (if still possible). If not possible, a better API is developed and adopted by all vendors, the original API staying in one browser, deprecated, until most users have migrated (or died out).

That's why I think that not marking such APIs as experimental is detrimental to web developers. The risk of change, or event marked as deprecated, is real. When not experimental the web developer assumes that it is safe to consider it stable enough to stay forever on the Web platform. Features implemented by one vendor don't provide this guarantee.

@OnkarRuikar
Copy link
Contributor Author

OnkarRuikar commented Aug 17, 2022

If not possible, a better API is developed and adopted by all vendors, the original API staying in one browser, deprecated, until most users have migrated (or died out).

…Features implemented by one vendor don't provide this guarantee.

I think the best example of this could be: https://bugs.chromium.org/p/chromium/issues/detail?id=695508#c18
Further down the conversation they suggest to use polyfill to stop using the API.

Perhaps you can use the polyfill below to get off the filesystem API?

@github-actions
Copy link

This pull request has merge conflicts that must be resolved before it can be merged.

@queengooborg queengooborg added not ready This is not yet ready to be merged. It's pending a decision, other PR, or a prerequisite action. meeting agenda Issues or pull requests in need of discussion in a project meeting. labels Nov 22, 2022
@github-actions
Copy link

This pull request has merge conflicts that must be resolved before it can be merged.

Copy link
Member

@Elchi3 Elchi3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quite a lot of support data is wrong here thus leading to experimental setting. I think we should rather fix the data than set experimental.

@@ -247,7 +247,7 @@
"webview_android": "mirror"
},
"status": {
"experimental": false,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually in Safari, not sure which version though.
https://github.com/WebKit/WebKit/blob/main/Source/WebCore/html/ImageBitmapOptions.idl#L37

But that makes it non-experimental.

@@ -28,7 +28,7 @@
"webview_android": "mirror"
},
"status": {
"experimental": false,
"experimental": true,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@@ -26,7 +26,7 @@
"webview_android": "mirror"
},
"status": {
"experimental": false,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@@ -699,7 +699,7 @@
"webview_android": "mirror"
},
"status": {
"experimental": false,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@github-actions github-actions bot added the merge conflicts 🚧 This PR needs to merge latest "main" branch to resolve a merge conflict or other issue. label Apr 27, 2023
@github-actions
Copy link

This pull request has merge conflicts that must be resolved before it can be merged.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
data:api Compat data for Web APIs. https://developer.mozilla.org/docs/Web/API meeting agenda Issues or pull requests in need of discussion in a project meeting. merge conflicts 🚧 This PR needs to merge latest "main" branch to resolve a merge conflict or other issue. not ready This is not yet ready to be merged. It's pending a decision, other PR, or a prerequisite action.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants