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

"Limited availability" when not actually available? #1988

Open
SachaG opened this issue Oct 17, 2024 · 6 comments
Open

"Limited availability" when not actually available? #1988

SachaG opened this issue Oct 17, 2024 · 6 comments

Comments

@SachaG
Copy link

SachaG commented Oct 17, 2024

I found the label "limited availability" a little bit confusing for some features that are not available in any browser:

Screenshot 2024-10-17 at 14 51 08

Shouldn't there be a "not available" baseline stage? Sorry if this is not the right place to kick off this kind of discussion, but I just wanted to make a note of it somewhere. Feel free to close if not relevant.

@captainbrosset
Copy link
Contributor

This is very much the right place for this discussion. Thank you for starting it.
I agree that this is something we should start thinking about, and I don't recall other issues/discussions on this topic.
Baseline only has 3 stages:

  • false aka "Limited availability"
  • low aka "Newly available"
  • high aka "Widely available"

I think our starting assumption was that all features would at least be available in one browser.

As time goes by, we're seeing more and more use cases for creating web-feature entries very early in the repo, even if that means they're not yet available anywhere. For example, when an intent to implement email is sent by a browser vendor is a good time for us to "reserve" the feature identifier in the repo. Another case is when a feature is available in one browser, but only behind a flag, for early experimentation.

Here are the features in this category, unless I missed some:

From this list, we can see that one very common pattern is when features are available in browsers but:

  • Partially only, e.g, certain conditions apply, or bugs remain.
  • Behind a flag only.
  • Behind a vendor prefix.

I don't think that baseline should get a new level, such as "Not supported". Baseline is meant as a very simple summary of a feature's support.
However, I do think that we could let some of the more fine-grain BCD information appear in our calculated status. BCD often has data about flag requirements, prefixes, or partial implementations. Without changing any of our calculation code, I guess we could still add this information to the final computed data.

Idea: why not add a new field to the computed data of baseline:false features like reasons. This could be an object, where keys are browser IDs, and values are the data coming from BCD about flags, bugs, etc.

Or, let consumers write the code on their end to do the same thing with BCD.

@ddbeck @atopal

@jgraham
Copy link
Collaborator

jgraham commented Oct 17, 2024

I think there are two pre-release statuses we should care about:

  • "Prototype" - for things that are not yet in any browser's default configuration, or only with vendor prefixes (ugh), and where there isn't yet general cross-vendor agreement about the long-term shape of the API. This would be the default state for stuff that's only behind flags.
  • "Coming to the platform" - for things where there is general buy-in to the API shape and we expect to see multiple interoperable implementations.

As an intermediate step, marking everything that isn't shipping anywhere as "Prototype" seems fine.

Even for stuff that has shipped somewhere, we're still missing a status of "Not part of the open web", for things where we don't expect baseline status to ever be reached for the feature in its current form. That would include APIs which are shipping somewhere, but (for example) have negative standards positions from other vendors. Obviously this could change later on if vendors reevaluate their position, or find technical workarounds to their concerns.

@atopal
Copy link
Collaborator

atopal commented Oct 17, 2024

I like the idea of adding a field to capture additional data that adds context, but doesn't directly make up the status of a feature. Re the pre-release statuses, definitely agree that we should have a way to signal to developers that something will be Baseline soon, once we have that information.,

@ddbeck
Copy link
Collaborator

ddbeck commented Oct 17, 2024

I think this is closely related to #915. Right now, we only surface unqualified support in shipping browsers, as reported to us by BCD. BCD knows about but we don't expose:

  • partial implementations in any release or anticipated in a future release
  • features behind a flag/preference in any release
  • complete implementations in "preview" releases (i.e., unversioned support data, like stuff in Safari TP)
  • future-dated releases (e.g., if we know something is a Firefox beta and anticipate it will ultimately ride to release, but it's not in the current shipping release)

I think being able to express the notion that something is in an incomplete state in a browser would go a long way toward making the limited availability more useful in the situation where no browser has shipped a fully-realized implementation.

This would cover almost everything Patrick listed, except:

  • features that are shipping only in browsers outside of Baseline's scope (e.g., the WebXR stuff that shipped to the Oculus browser and not elsewhere)
  • features that have unshipped from all browsers in Baseline's scope (e.g., hand input for WebXR, which BCD says was once supported in Edge)
  • features before they appear in BCD and a shipping browser

The last one is not a live problem yet. As far as I know, we don't have any published feature entries for things that aren't shipping somewhere and don't have BCD keys. That's the sort of situation where I'd expect to need a new primordial feature status (e.g., prototyping/design/etc.).

@ddbeck
Copy link
Collaborator

ddbeck commented Oct 17, 2024

Also related to #955.

@captainbrosset
Copy link
Contributor

This was discussed at yesterday's CG meeting. See the notes.

The summary is that we think we can handle the most common case of features being partially implemented/behind flags in code directly. That is, we'd leave the status unchanged, but surface the information that BCD has at the feature level. Consumers could then use this extra information to show, for example, a little beaker icon.

Over time adding more fine grain statuses to baseline, but for now, it seems like the 3 simple/summarized statuses are enough while getting developers used to the concept.

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

No branches or pull requests

5 participants