-
Notifications
You must be signed in to change notification settings - Fork 91
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
Call for positions: Baseline definition #374
Comments
My position is that Baseline should be time-based (N months/years after the date all browsers support the feature, aka "keystone"), it should include a broad set of browsers (including Opera and Samsung), and it the time period should be long (I'm aiming for three years).
|
Same as @dfabulich with one precision and a few additional conditions, most of which were in the draft document that @ddbeck prepared:
I don't feel strongly on the effective number of years to start with but would err on the longer part of the spectrum: 2 years, 2.5 years, or 3 years. As far as I can tell, with the browser usage data that we have at hand, we cannot evaluate marketshare precisely, so I read percentages like 93.6% and 95% as describing the same reality. I view the marketshare phases more as a rapidly growing phase followed by a (high enough) plateau, which the analyses that were made seem to confirm. I would aim for the plateau. @ddbeck's document also contained a "The feature has a known specification, published and open to inspection by web developers". I don't feel that's needed in that I think interoperability trumps the need for a specification (with my standardization hat on, I would definitely try to "fix" such situations though!). My expectation is that this definition is a starting point and will be refined over time based on feedback (it does not have to be refined, it just may). |
Thanks Daniel! I've read through the documents again and I have to say I'm learning new things whenever I dive into it or we talk about it, but right now I would summarize my position like this: To me, a baseline feature:
In a later iteration of baseline, I would like to add:
Some research about Webviews was brought to us, but more investigation (and more/better compat data in BCD) is needed so I don't think now is a good time to incorporate that into baseline. |
Our (Microsoft Edge’s) position is less on the definition of Baseline than it is on its fundamental concept.
The following measures might make Baseline less risky:
|
Mozilla Baseline Definition ProposalProposalBaseline should be defined as the longest time matching each of the following criteria:
In addition, the criteria should be subject to a regular revision process. Initially this should be based on user sentiment analysis, to ensure that the specification of baseline is achieving the desired goals. Thereafter periodic — at least annual — recalibrations of the 30 months number should be performed so that it continues to match the rate of rollout of new browser versions to end users. If at some point it becomes practical to adopt a baseline definition that is based directly on user reach, that should be preferred over this definition. Definitions
RationaleBaseline should represent a time at which it's safe for developers to use a feature for all their users, without fear of compatibility issues, and without additional considerations (e.g. use of polyfills). Ideally this definition would be directly based on two considerations:
For the first, we can use the "security supported" status for browsers that are participating in the baseline effort and which have a policy that we can incorporate into decision making. For the second, however, the existing public browser marketshare sources appear to have some methodological problems (e.g. incorrect classification of browser versions, incomplete removal of non-browser traffic from the data). Private data is sometimes available, but not always, and relying extensively on private data lacks transparency. Therefore we propose the use of a time-based proxy for the time for features to reach a large user population. The time after the feature reaches the stable release of the last browser to implement seems like a workable measure, as long as the corresponding value is picked to be conservative i.e. based on the slowest browser to update. Based on the analysis done by Dan Fabulich, and an analysis of Firefox telemetry data, we believe that a period after that final release of at least 30 months is required for the feature to reach enough of the user population to reach the stated goal of authors being able to use it without worrying about lack of user support. Arguably 30 months is somewhat optimistic; in Dan's analysis based on Statcounter data that corresponds to 93% user reach for features released in 2019. As such we would also be happy to increase this to 36 months, which corresponds to 94-95% of users in the Statcounter analysis and more than 95% of users in Firefox telemetry data. Regular reassessments of this methodology, and the numerical parameters chosen are necessary both because there's considerable uncertainty about whether we have chosen the right approach and calibrated the initial definition correctly, and because we expect that the time for features to achieve widespread user reach to itself change over time. For example browsers might switch to a more rapid upgrade cadence, thus moving users to newer versions faster and decreasing the time to baseline. Or browsers might drop support for older devices which are still widely used, leaving a large group of users on older browser releases, and increasing the time to baseline. Finally we note that we expect the 30 months criteria to always overrule the security support criteria at present. However we think that the criteria should include both explicitly since they represent fundamentally different considerations, and any future changes to the baseline definition should not allow it to be shorter than the time for which browser versions continue to receive official support. |
Google's position is that Baseline needs to reflect two important points in time:
These definitions should be revisited annually based on web developer feedback. In other words, we are proposing that there are stages of Baseline, not a single state. Regarding presentation, the two stages should be sufficiently distinct and should not encourage developers to depend on new features as if they are already widely available. But it is important to distinguish between features that are on track to be widely available and those that aren't, and the "interop moment" is what puts a feature on that track. We share some of the concerns of @captainbrosset (Microsoft Edge) about Baseline potentially discouraging early adopters, and think that these stages help with that. |
Speaking for myself (though I’m contract to Google), the top four things I’m thinking about when it comes to a Baseline definition are:
I’d like to acknowledge that I’ve come around to agreeing to a number of issues that I originally did not think much of, including:
I’m very grateful to everyone who has participated so far—I think we’re likely to get better results than we would have if I were left to my own impulses. Finally, there are a number of ideas that I’d like to consider later (or to encourage the WebDX community to take up as separate efforts), but I’m happy with putting them off for now:
|
TL;DR: Our[1] position is that baseline should be defined as "reached on the day when it first shipped in all browsers with more than 1% of global marketshare according to {an agreed upon set of counters}". We propose that, to start, the set of counters would be statscounter and cloudflare. We believe that the best way to display baseline on MDN is a banner saying the feature achieved baseline status “{relative time} ago”. In more detail: We believe the stated positions which call for something like 30-36 months after “universally shipping” are describing a different milestone than most developers are interested in. We believe the shipping-plus-three-years measure would be better termed "ubiquitous", and that it's interesting - and very important to a minority of developers - but is not what most developers will find helpful. This straw poll's numbers indicate only 25-30% have a measure of “years” in their thinking. We regret that the group managed to get painted into a corner where we have already created a single term and publicly suggested what it would mean in the abstract and how it would be used. We understand how it happened, and aren't trying to point fingers. It just leaves us in an unfortunate place, because Igalia believes there are multiple milestones that are interesting, rather than one, and that the emerging consensus in the group seems to be at odds with what most developers will expect. [1] "Our" here should be read as @meyerweb's and mine. While we believe many Igalians would agree, we did not have sufficient time to feel good about saying this was Igalia's position. |
After posting, Brian and I noticed our position roughly aligns with what @foolip posted. Sorry to not have noticed that before posting; we’d have written what we said a little differently. |
TL;DR; I mostly agree with Brian and Eric but I am concerned about the requirement to consider all browsers that have more than N% marketshare. I think that the interop moment is the most important moment to communicate to developers. I think there should be room in the definition to override the N% marketshare requirement. I think that the time based definition with 2-3 years after shipping in all engines is an overcompensation to the current definition. I don't want a web where developers always wait 2-3 years before they start using new features. I also don't want a web where websites only work in the latest releases of browsers. The current definition is a binary label that lacks any context or nuance and still aims to communicate that a feature is safe. It leaves very little room for developers to use their own judgement. My concern is that developers are being told that something is safe to use, when the real answer always is: "it depends". The important nuance for me is the difference between :
I think there is more value in letting go of the binary label. As Brian said :
This already holds enough context to leave room for developers to use their own judgement. It communicates that all implementers agree on what the feature is, how it must work, ... I also agree with @ddbeck that there should be plenty of escape hatches for editorial edits. The intention is to help developers. If there are edge cases where baseline is causing harm then it must be possible to address those issues without having to alter the definition itself. |
Hi folks, a brief schedule update: the governance group held its first meeting on Tuesday, 10 October, as planned. However, we ran out of time before we could cover all the points of discussion, so we'll be continuing soon (date TBD). Thanks to everyone who has given their input so far—it's been very helpful in organizing our discussion. |
Closing the issue as addressed: the governance group converged on a new baseline definition, taking positions expressed here as input. The definition will be reviewed at least once per year. |
If you've joined the recent WebDX calls or participated in the Matrix chat, then you have heard that we're moving toward having the governance group make a decision about the definition of Baseline, so that we can try out a revised definition in front of actual developers. The governance group expects to have the first meeting on or after Tuesday, 10 October 2023.
How you can help: summarize your position
There have been many, many discussion threads over the past couple of months. It's been difficult to keep up. To help the governance group make a decision that considers everyone's viewpoint, please write or link to a summary of your position and chief concerns in this issue before the governance meeting.
Given the large number of participants in these discussions, please forgive me for emphasizing that a summary is highly desirable.
Prior discussions
To review past discussions, see the label https://github.com/web-platform-dx/web-features/labels/baseline-definition. I've added every discussion that was directly related to the definition. I excluded related topics, such as usage data quality or other status definitions (e.g., deprecated). But if I've missed (or mis-categorized) an issue, please let me know.
The text was updated successfully, but these errors were encountered: