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

Baseline Survey #208

Closed
dfabulich opened this issue May 26, 2023 · 4 comments
Closed

Baseline Survey #208

dfabulich opened this issue May 26, 2023 · 4 comments
Labels
baseline definition Issues related to the definition of Baseline

Comments

@dfabulich
Copy link
Collaborator

There's been a lot of discussion around the definition of the Dynamic Baseline here on this repository, especially #174.

I'd like to use this issue to try to brainstorm ideas for a developer survey or interview approach, something that would allow us to use data to move forward on some of our open questions.

Background

Baseline is defined here:

https://web.dev/baseline/
https://web.dev/introducing-baseline/

To summarize, web developers have said in surveys that "keeping up with changes to the web platform or web standards" is their biggest pain point. https://web.dev/deep-dive-into-developer-pain-points/ (This data is from 2021, and I guess it could use a refresh, but I think there's broad agreement that this is still a major pain point in 2023.)

The goal of Baseline is to make it easier to keep up with changes.

The stated approach is to find a definition of Baseline that will "work for most developers most of the time." (I've criticized this guideline in #174, because it's not possible to use data to decide whether a feature does or doesn't work for a developer most of the time.)

With those goals in mind, Baseline was initially defined as "features that are supported in 2+ major versions." It's a clear, simple definition, supported by survey results.

The survey results that were used to support the "2+ major version" definition are available here: https://github.com/web-platform-dx/developer-research/blob/main/vendor-research/browser-support-matrix-survey.pdf (Be sure to download the PDF; Github does NOT render all pages directly on that page!)

Questions to investigate

  • Which kind of metric should be definition of Baseline?
    • A number of major versions?
    • A certain percentage of market share?
    • Months/years since all major browsers?
  • How high should the bar be for Baseline?
    • 2+ versions?
    • 95% share?
    • A full year?
  • Do these questions have different answers, depending on whether the feature has good alternatives?
    • Polyfill?
    • Equivalent Substitute?
    • Progressive Enhancement?

Note that most of the questions below are about the variations on polyfill vs. substitute vs. progressive enhancement. It's possible that the survey could be a lot shorter if we want to elide these questions. (But I think it makes sense to keep these questions, because if you ask me "when would you use a new web feature?" the answer would have to be, "It depends. Does it have a good polyfill? A substitute? Can I progressively enhance it?")

A rough draft at proposed survey questions

This survey is about how and when you'd decide to start using a new browser feature, where not all users have upgraded to browsers that natively support the feature.

Question: Pollyfillable Feature

Imagine a new Web API feature that can be safely and correctly polyfilled, allowing the feature to work on older browsers that weren't designed to support the feature. The polyfill supports all users on all browsers, but not all users have browsers that natively support the feature.

How would you decide when to use a feature like this?

  • I would polyfill the feature to work in all browsers, so I would not wait for browsers to widely support it.
  • I would wait for at least one major browser (Chrome, Edge, Firefox, or Safari) to support the feature.
  • I would wait until the very latest version of all major browsers supported the feature.
  • I would wait all major browsers support the feature, for at least two versions each.
    • How many versions?
      • Two or more
      • Three or more
      • Five or more
      • Ten or more
      • Twenty or more
      • I'm not sure
  • I would wait a certain number of months or years after all major browsers support the feature.
    • How long?
      • One month
      • Six months
      • One year
      • Two years
      • Five years
      • More than five years
      • I'm not sure
  • I would check browser market-share data, waiting for the share of browsers that support the feature to be greater than a certain X% threshold.
    • What threshold?
      • 50%
      • 70%
      • 80%
      • 90%
      • 95%
      • 98%
      • 99%
      • Other _____
      • I'm not sure
  • I'm not sure

Question: Substitutable Feature

Imagine a new CSS feature. This feature can't be polyfilled, and not all users have browsers that support the feature natively, but you could manually substitute for the feature by applying CSS classes to your HTML instead.

How would you decide when to use this new CSS feature?

  • I would never use the feature. Since there's a substitute, I'd just use that instead.
  • I would wait until the very latest version of all major browsers (Chrome, Edge, Firefox, and Safari) supported the feature.
  • I would wait all major browsers support the feature, for at least two versions each.
    • How many versions?
      • Two or more
      • Three or more
      • Five or more
      • Ten or more
      • Twenty or more
      • I'm not sure
  • I would wait a certain number of months or years after all major browsers support the feature.
    • How long?
      • One month
      • Six months
      • One year
      • Two years
      • Five years
      • More than five years
      • I'm not sure
  • I would check browser market-share data, waiting for the share of browsers that support the feature to be greater than a certain X% threshold.
    • What threshold?
      • 50%
      • 70%
      • 80%
      • 90%
      • 95%
      • 98%
      • 99%
      • Other _____
      • I'm not sure
  • I'm not sure

Question: Progressive Enhancement

Imagine a new Web API feature that can't be polyfilled, and only some of your users have a browser that supports the feature. But it is possible to use feature detection to progressively enhance your site, making the feature available to some users, but not all users.

(Let's suppose that the feature is not "essential" to the functionality of your web site or web app. The feature is valuable to users who can access it, but your site/app still does something useful for users who can't access the feature.)

How would you decide when to use a feature like this?

  • I would use progressive enhancement to make the feature available to the fraction of users who can use it, so I would not wait for browsers to widely support it.
  • I would wait until the very latest version of all major browsers (Chrome, Edge, Firefox, and Safari) supported the feature.
  • I would wait all major browsers support the feature, for at least two versions each.
    • How many versions?
      • Two or more
      • Three or more
      • Five or more
      • Ten or more
      • Twenty or more
      • I'm not sure
  • I would wait a certain number of months or years after all major browsers support the feature.
    • How long?
      • One month
      • Six months
      • One year
      • Two years
      • Five years
      • More than five years
      • I'm not sure
  • I would check browser market-share data, waiting for the share of browsers that support the feature to be greater than a certain X% threshold.
    • What threshold?
      • 50%
      • 70%
      • 80%
      • 90%
      • 95%
      • 98%
      • 99%
      • Other _____
      • I'm not sure
  • I'm not sure

Question: Essential Features

Imagine a web feature that can't be polyfilled or transpiled, and only some of your users have a browser that supports the feature.

But imagine that it's not possible to progressively enhance this feature. If you use this feature, your site will be "broken" on any browser that doesn't support the feature.

How would you decide when to use a feature like this?

  • I would never design a site or app with a feature like this. If using the feature could break the site for anyone, even a very small number of users, then I would never use it at all.
  • I would wait until the very latest version of all major browsers (Chrome, Edge, Firefox, and Safari) supported the feature.
  • I would wait all major browsers support the feature, for at least two versions each.
    • How many versions?
      • Two or more
      • Three or more
      • Five or more
      • Ten or more
      • Twenty or more
      • I'm not sure
  • I would wait a certain number of months or years after all major browsers support the feature.
    • How long?
      • One month
      • Six months
      • One year
      • Two years
      • Five years
      • More than five years
      • I'm not sure
  • I would check browser market-share data, waiting for the share of browsers that support the feature to be greater than a certain X% threshold.
    • What threshold?
      • 50%
      • 70%
      • 80%
      • 90%
      • 95%
      • 98%
      • 99%
      • Other _____
      • I'm not sure
  • I'm not sure

Question: Removing Polyfills

Imagine a web feature that you're using today with a polyfill. Today, all major browsers support the feature natively, and you're considering removing the polyfill, to rely on each browser's native built-in support.

But, imagine that removing the polyfill comes with a risk: if any user navigates to your site on an older browser that doesn't support the feature, your site/app will be broken.

How would you decide when to remove this polyfill?

  • I don't use any polyfills.
  • I would never remove a polyfill like this. If removing the polyfill could break the site for anyone, even a very small number of users, then I would never remove it at all.
  • I would wait all major browsers support the feature for at least two versions each.
    • How many versions?
      • Two or more
      • Three or more
      • Five or more
      • Ten or more
      • Twenty or more
      • I'm not sure
  • I would wait a certain number of months or years after all major browsers support the feature.
    • How long?
      • One month
      • Six months
      • One year
      • Two years
      • Five years
      • More than five years
      • I'm not sure
  • I would check browser market-share data, waiting for the share of browsers that support the feature to be greater than a certain X% threshold.
    • What threshold?
      • 50%
      • 70%
      • 80%
      • 90%
      • 95%
      • 98%
      • 99%
      • Other _____
      • I'm not sure
  • I'm not sure

Question: Market share data

If you use market share data to keep track of browsers and/or browser versions, from where do you get your data? (You may check more than one.)

[ ] I don't use browser market share data
[ ] My own web logs
[ ] Google Analytics
[ ] StatCounter (gs.statcounter.com)
[ ] Caniuse.com
[ ] Browserslist
[ ] Other _____

@foolip
Copy link
Collaborator

foolip commented Jun 9, 2023

I'm not a researcher, but one thing I've heard from @atopal (also not a researcher) is that asking people to predict what they would do is a poor guide for what they will do, and that asking what they have done works better. This seems very plausible.

For example, questions on the form "In the past 12 months, how many times have you encountered situation X?" or "When you last encountered situation X, what did you do?"

I think most of the question can be rephrased to be retrospective rather than forward-looking, so this should be an easy fix.

@foolip
Copy link
Collaborator

foolip commented Jun 9, 2023

My other feedback is that I think most developers simply don't know how many releases they need to support, how much time needs to pass, or what availability threshold they need. The most common process is probably testing it in one or a few browsers manually, shipping it if it works, and reacting to the loudest complaints of breakage. Even when consulting MDN compat tables or caniuse.com, it's a question of eyeballing how green it is, not a principled approach.

That being said, even if we can't have high confidence in what developers actually do based on a survey, we can learn something about what they expect from a reasonable Baseline definition, which is also valuable.

@tidoust
Copy link
Member

tidoust commented Jul 28, 2023

Discussed during the 27 July baseline meeting

@ddbeck
Copy link
Collaborator

ddbeck commented Sep 16, 2024

This is one of several issues around developing the Baseline definition, from last year. I don't think there any active plans to run a survey along these lines.

Now that we have a shipping definition of Baseline, we might have opportunities to run surveys on how Baseline is actually being used and understood, but "would you…"-style questions are probably no longer a likely avenue for investigation.

If anyone is reading this issue in 2024 or later: continuing to learn about how developers use and understand is important. If you have specific questions to raise and answer about developer expectations with regards to Baseline, please file a new issue. Thank you!

@ddbeck ddbeck closed this as not planned Won't fix, can't repro, duplicate, stale Sep 16, 2024
@ddbeck ddbeck added the baseline definition Issues related to the definition of Baseline label Sep 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
baseline definition Issues related to the definition of Baseline
Projects
None yet
Development

No branches or pull requests

4 participants