-
Notifications
You must be signed in to change notification settings - Fork 72
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
Define how the core browser set was determined #2133
Comments
Hi @tomayac, I'll do my best to answer your as succinctly as I can. I'll respond to the more specific "What if…?" question separately. In the strictest terms, the core browser set was selected by the web-features owners group in a consensus-seeking decision-making process. We worked on the overall definition, including the browser set and releases timeline, until we reached an actual consensus. This process took about 6 months. Most discussions happened in WebDX meetings, the WebDX matrix chat, and in issues labeled here. More broadly, we picked the browser set to accommodate a number of requirements and constraints:
A lot of work went into trying to find some statistical rule (e.g., using StatCounter usage thresholds) that would encompass everything. Unfortunately, data quality and other issues prevented that from happening. So the governance group reviewed all the information and made a judgment about a browser set that we hoped would be satisfactory to developers. The formal Baseline definition document contains a lot of information about our shared motivations, at the time it was adopted. |
To @dgp1130's question, which I'll excerpt here:
When we adopted the Baseline definition, we did not resolve to answer the question of what the meaning of Baseline would be before 29 July 2015 (the first release of Edge) or after some future change to the core browser set. We talked about it and speculated on it but, if I remember correctly, the consensus was that it would be premature to work out a definition versioning scheme or transition policy before we had demonstrated that Baseline was useful to developers. We did commit to an annual review of the definition, to affirmatively decide whether it was still working or to kick off a revision process. Since being unsurprising is part of Baseline's goals, I can't imagine we'd make a change to the core browser set without a lot of advance consultation and notice. I want to note one last thing, though:
It is possible for a feature to move backwards, even with the existing browser set, though it should be a rare event. For example, suppose a feature reaches Baseline widely available status but a browser subsequently unships feature (or ships a bug so serious that it's close to the same thing). We'd have to "un-Baseline" that feature and the feature would have to progress from limited availability through newly available again. Thankfully all of the examples I have for this, such as IndexedDB, are increasingly historic—but there's no rule that says it can't happen again. |
Thank you for this context @ddbeck and thank you for following up on my question @tomayac! What you describe around losing features does sound reasonable. So if I'm understanding correctly, it sounds like exactly how a new browser would be introduced into Baseline is still somewhat ambiguous and undefined and will likely stay that way until such a scenario actually happens? That sounds reasonable given the context and the way these kinds of decisions tend to get made, though I just want to point out that this does have an ecosystem impact. Any library or tool which commits to Baseline support ("We will only require browser APIs which are Baseline as of any given version's release date") doesn't really know what it's committing to in the situation of a new browser addition. As you mentioned, Baseline can already "go backwards", but those cases are relatively exceptional. New browsers are somewhat common, but reaching the threshold for inclusion in Baseline is likely just as, if not more exceptional than unshipping / breaking existing features. So I don't think this is a major problem, but it does mean that any ecosystem tool adopting Baseline as a browser support policy needs to consider what happens in the scenario that a new browser is added. With that currently being undefined in Baseline itself, it's hard to know exactly how to handle that case. The most likely option for a versionable tool would be something like "We will only require browser APIs which are Baseline as of any given version's release date, with the exception of versions X1-X2 which do not support browser Y." All that said, a new browser would certainly be an exceptional circumstance and any versioned tool can adjust its browser policy to match since Baseline support is tied to a specific date, so adding a new browser would presumably not retroactively change Baseline for previous dates. As a result, I don't think this is a major problem, but something to be aware of. Maybe it would make sense to document somewhere that this scenario is still undefined? Or maybe at least commit to not changing the definition of Baseline support for dates prior to inclusion of the new browser (that part feels uncontroversial to me and would help at least versioned tools to adopt Baseline). But otherwise I can imagine that we likely won't see consensus on actually defining it until this scenario really happens. Thanks for the discussion here, this is a really interesting edge case and I appreciate the added context! |
Briefly, summarizing my to do list here:
Absolutely. I've opened #2142 to (begin to) cover this.
Yes, I think it's a good idea to make some sort of guarantee about this, even if it's minimal (e.g., some sort of notice period before making changes to the core browser set). As for the specific shape of that guarantee: Do I understand correctly that you're suggesting that we commit to freezing the browser set for a feature at the time it reaches Baseline status? That is, once a feature reaches Baseline, we'd only score that feature on the (ongoing) support from the core browser set at the time? If I have that right, I'm not sure if we can make that strong a commitment. Over the long haul, I'd expect that if developers cared enough about the new browser to warrant its inclusion that they'd also eventually stop relying on features that don't work in that browser, no matter the historic case for marking that feature as Baseline. But that's an assumption and one I'd like to test a bit. I think there are other plausible routes (e.g., a sunset period or an explicit "legacy" or "vested" status for features that have this quality) and I'd like to do more intentional research into developer expectations about all the options before committing to one. An easier commitment today might be be something like: introducing a new browser won't cancel a Baseline status for an existing feature for at least 30 months (e.g., an off ramp that mirrors the widely available time horizon). Telegraphing the removal of a feature from Baseline—if we know it's going to happen in advance—seems really valuable. This is somewhat related to #311 and #955, where we need the ability to communicate a probable future status (i.e., shipping or unshipping anticipated in a future release). We'll actually have to resolve that sooner than any change to the core browser set, since feature deprecation or removal is a rare but more frequent than the appearance of a new must-support browser. This is also related to #1971, where we should explain (as part of the data) why a given feature has regressed, if it does. |
@ddbeck, I think you might be interpreting this support question in the context of supported features, but I'm actually thinking about this from the set of supported browsers. I'm looking through the lens of "What are the Baseline browser versions?". This is a slightly different question from "What are the Baseline features?", which is a separate artifact that is derived from the set of browser versions. For libraries and frameworks, the goal is partially to identify what features are available in Baselines, but also to identify what workarounds might still be necessary to support Baseline browsers. So in this context, I think I care less about feature support and more about the precise set of versioned browsers at a particular time. Let's look at this from the context of a strongly versioned library/framework released on a particular date. My thinking is that such a tool might use the "widely available" Baseline by defining its browser support as:
Date The above support policy essentially states:
This feels reasonable to me on the surface. However it gets tricky if a new browser is added and regresses the feature set. In theory, any previously released versions of a library/framework should be isolated from that change, given that they only committed to supporting that "widely available" Baseline at their release date (browsers So my ask for the Baseline definition would be to version it in a similar fashion. Say a new browser is added to the core set on date This would still give you the freedom to dictate exactly when and how a new browser is added while allowing the ecosystem to use Baseline without fear of a new browser addition undermining their existing released versions. I expect this might be a more academic concern as in practice I don't expect a large proportion of users would file bugs against their libraries/frameworks/tools saying "Please add support for this newly included browser to all your existing released versions because Baseline has been updated and that retroactively applies to all your prior releases." Most maintainers are just going to close those kinds of issues, but it would be nice if the precise wording of such a browser policy did match the way most humans would be likely to interpret it. |
Based on an interesting question asked on Mastodon by @dgp1130. I was intrigued, but couldn't find based on what criteria the core browser set was determined.
The text was updated successfully, but these errors were encountered: