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

Add a new section for information about prospective deprecations and removals #271

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

bvandersloot-mozilla
Copy link

@bvandersloot-mozilla bvandersloot-mozilla commented Oct 8, 2024

This is an addition that tries to create a point for further communication about deprecation and removal of web features, as we determined may be useful at TPAC in the deprecation breakout. Adding criteria for removal is out of scope; this is just adding a harm reduction mechanism and improve inter-browser and developer communication.

Feedback very welcome!

  • At least two implementers are interested (and none opposed):
    • Mozilla
  • Tests are written and can be reviewed and commented upon at:
    • N/A
  • Implementation bugs are filed:
    • N/A
  • MDN issue is filed:
    • May be useful to add an MDN article for this section. Thoughts?
  • The top of this comment includes a clear commit message to use.

Folks that have expressed interest in this followup to me: @miketaylr @mikewest @RByers @alanbuxey @gregwhitworth @sysrqb @karlcow @ammedina88 @ayuishii @rachelandrew


Preview | Diff

Copy link
Member

@annevk annevk left a comment

Choose a reason for hiding this comment

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

I wonder if this should describe some of the criteria.

See also https://whatwg.org/working-mode#removals.

compatibility.bs Outdated Show resolved Hide resolved
compatibility.bs Outdated Show resolved Hide resolved
compatibility.bs Outdated Show resolved Hide resolved
<em>This section is non-normative.</em>

While the web platform stives for backwards-compatibility, there are occasions which require the
outright removal or discouraged use of some features. To support making these changes
Copy link
Member

Choose a reason for hiding this comment

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

The table only seems to allow for removal, not discouragement. Should we document synchronous XMLHttpRequest?

Choose a reason for hiding this comment

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

I'd consider an entry with Removal empty, but Deprecated from not empty to be discouraged.

A definition would be useful to clarify that

@bvandersloot-mozilla
Copy link
Author

I wonder if this should describe some of the criteria.

See also https://whatwg.org/working-mode#removals.

I agree that criteria would be useful, and at very least a link to removals is required here.

There are two levels of criteria I could see trying to include, logistics focused (like the working mode docs describe, trying to reflect reality) or descriptive ("here are the things we think you should consider before you add it to this list", like the artifact from the breakout gets at). Which did you mean?

Copy link

@gregwhitworth gregwhitworth left a comment

Choose a reason for hiding this comment

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

Left a few questions, thank you so much for landing this initial change to get the ball rolling

compatibility.bs Show resolved Hide resolved
compatibility.bs Show resolved Hide resolved
@annevk
Copy link
Member

annevk commented Oct 9, 2024

I was thinking about the descriptive kind as the Working Mode indeed already takes care of the other bits. The bar needs to be high and I think clarifying that upfront will help.

@miketaylr miketaylr self-requested a review October 9, 2024 16:59
compatibility.bs Outdated Show resolved Hide resolved
compatibility.bs Outdated
<li>what browser engines have [=deprecated feature list/Deprecated from | deprecated =] the feature or behavior, discouraging its further use.
<li>when the feature will be, or has been, [=deprecated feature list/Removal | removed =] from various browser engines, preventing its use by default.
<li>what developers should use to achieve the same functional goals, as a [=deprecated feature list/Replacement | replacement =] for the old feature.
<li>[=deprecated feature list/Justification=] for the removal or deprecation, including any tradeoffs considered and steps taken to minimize disruption to developers.
Copy link
Member

Choose a reason for hiding this comment

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

This feels like it could span anywhere from a sentence to a multi-page document... that may get awkward and unreadable in an HTML table. Maybe a link to a different resource like an Intent to Deprecate from blink-dev or gecko-dev, or a WebKit blog post, etc? Or just a design doc or spec issue. 🤷

Choose a reason for hiding this comment

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

I was imagining a link to a dedicated subsection of Supporting Information. Spec issue or ItD links would also be fine. Honestly, just having a paragraph or two where the PR author commits to "why this needs to happen and what I did to make it hurt devs less" is my goal here.

compatibility.bs Outdated
<h4 id="removal-features-process">Process</h4>

Anyone can make an addition to the list by editing this specification.
However, because some content describes the future plans of browser engines, the author can use
Copy link
Member

Choose a reason for hiding this comment

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

This suggests we might end up with a bunch of engine/product specific deprecations... is that what we want? Or are we trying to cover deprecations/removals that fit the spirit of WHATWG, where there is alignment of at least 2 engines?

If we do want to cover engine-specific stuff, maybe a separate table for that? Experimental deprecations or something.

Choose a reason for hiding this comment

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

I think there are two relevant ideas here:

  1. This is meant to be stuff in the spirit of WHATWG.
  2. Since it has concrete stuff about the browser's future plans and anyone can write a PR we probably want to be careful about getting all the right contexts in reviewing it. I gated that on the editor's discretion.

Copy link
Member

Choose a reason for hiding this comment

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

A potential path forward would be to move towards a general practice for folks to file issues against the spec to add deprecations, use those as a forum for alignment between engines, and land them in the spec when there's broader agreement on the direction.

If we want a more holistic list with a lower bar for entry, perhaps a wiki page or something similarly unofficial and light-weight would be appropriate?

Choose a reason for hiding this comment

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

A potential path forward would be to move towards a general practice for folks to file issues against the spec to add deprecations, use those as a forum for alignment between engines, and land them in the spec when there's broader agreement on the direction.

I think this is a good idea, and I'd be happy to make the contents of this document represent consensus, with PRs being a good place for discussion.

compatibility.bs Outdated

Anyone can make an addition to the list by editing this specification.
However, because some content describes the future plans of browser engines, the author can use
their discretion in what reviewers are appropriate for a given change to the list.
Copy link
Member

Choose a reason for hiding this comment

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

We should probably discuss this as well - having multiple reviewers is good (especially from folks with the right context) - but we still have a single editor for this standard. We could explore "deputy editors" per https://whatwg.org/working-mode#editor - or come up with an agreement of when things are ready to be merged (solving the single- vs multi-implementer comment above will probs help here).

Choose a reason for hiding this comment

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

This is the bit I was trying to get at. I think an agreement of when things are ready to be merged may be sufficient, given a responsible editor. :)

Figuring out when merging a row in the table is "not writing fiction" is probably the hard bit. Perhaps that is a kernel that needs a good answer.

compatibility.bs Outdated
<li>links to any [=deprecated feature list/Automated Tools | automated tools =] to assist developers, such as detection or migration scripts.
</ul>

<h3 id="removal-support">Supporting Information</h3>
Copy link
Member

Choose a reason for hiding this comment

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

What's intended to go here?

Choose a reason for hiding this comment

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

Subsections containing justifications for each deprecation? linked to from the table.

I'm happy to remove if this isn't needed.

@bvandersloot-mozilla
Copy link
Author

I was thinking about the descriptive kind as the Working Mode indeed already takes care of the other bits. The bar needs to be high and I think clarifying that upfront will help.

I added a section that captures some of the thoughts from the breakout. I am uncertain if it makes the PR better or worse, so I'd appreciate your feedback

While the web platform stives for backwards-compatibility, there are occasions which require the
outright removal or discouraged use of some features. To support making these changes
in the least disruptive and most consistent way for developers, we document them here. This is most
beneficial as a decalration of intent by browser engines to act together in a well reasoned way.
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
beneficial as a decalration of intent by browser engines to act together in a well reasoned way.
beneficial as a declaration of intent by browser engines to act together in a well reasoned way.

compatibility.bs Show resolved Hide resolved
compatibility.bs Outdated
<h4 id="removal-features-process">Process</h4>

Anyone can make an addition to the list by editing this specification.
However, because some content describes the future plans of browser engines, the author can use
Copy link
Member

Choose a reason for hiding this comment

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

A potential path forward would be to move towards a general practice for folks to file issues against the spec to add deprecations, use those as a forum for alignment between engines, and land them in the spec when there's broader agreement on the direction.

If we want a more holistic list with a lower bar for entry, perhaps a wiki page or something similarly unofficial and light-weight would be appropriate?

compatibility.bs Outdated Show resolved Hide resolved
compatibility.bs Outdated
<th><dfn for="deprecated feature list">Removal</dfn></th>
<th><dfn for="deprecated feature list">Replacement</dfn></th>
<th><dfn for="deprecated feature list">Justification</dfn></th>
<th><dfn for="deprecated feature list">Automated Tools</dfn></th>
Copy link
Member

Choose a reason for hiding this comment

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

As noted in some previous comments, it seems like we'll be cramming a lot of information into this horizontal table. I wonder if it would be reasonable to either:

  • Simplify the table by dropping the last three columns, and instead requiring an explainer link (that presumably would contain this information). Or,
  • Change the table into a more vertical structure. Just bulleted lists with relevant text?

Choose a reason for hiding this comment

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

I think the first option is a bit better, if only to give information "at a glance". I envisioned justification as a link somewhere anyway, so some suggestion of what content is most important would be a reasonable substitute.

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

Successfully merging this pull request may close these issues.

5 participants