Regarding why change to :state() instead of :--: as is typical, it was done in order to gain consensus; in particular, the CSSWG resolution notes indicate <https://github.com/w3c/csswg-drafts/issues/4805#issuecomment-1663111980> (see comment from the chair) one motivation is to align with WHATWG and not end up with a situation where two standards groups have opposing positions in a gray-area situation and no progress is made.
I don't think that 0.03% is a big problem to deprecate, and recommend we just make the change to match a hard-won consensus and move on. It's easy enough to support both syntaxes for some amount of time before removing the old one. On Thu, Oct 5, 2023 at 1:49 PM Chris Harrelson <chris...@chromium.org> wrote: > > > On Wed, Oct 4, 2023 at 2:24 PM Jeffrey Yasskin <jyass...@chromium.org> > wrote: > >> Apparently +Chris Wilson <cwi...@google.com> had part of this discussion >> with Alan Stearns in April at >> https://github.com/w3c/csswg-drafts/issues/8730#issuecomment-1524167658, >> and the suggestion was that if a CSS spec for a feature is "unstable" >> (meaning 'not at CR'?), then we should either post "we're about to send an >> intent" to the last issue discussing it, or file an "Is X ready to ship?" >> issue. I think +Chris Harrelson <chris...@chromium.org> is likely to >> have the strongest opinions about this: should we add such a rule to our >> launch process for CSS features? >> > > I think we generally shouldn't ship CSS features before there is robust > discussion and consensus at the CSSWG, and I think Chromium features have > done a good job at that. The CSSWG resolution mechanism, and the various > stages of W3C standardization help to build confidence about the degree of > consensus and commitment, as do signals from other browser vendors. I don't > think we should additionally require filing an "is X ready to ship?" issue > at the CSSWG for CSS features. > > >> >> Jeffrey >> >> On Wed, Oct 4, 2023 at 1:15 PM Jeffrey Yasskin <jyass...@chromium.org> >> wrote: >> >>> On Wed, Oct 4, 2023 at 1:08 PM Joey Arhar <jar...@chromium.org> wrote: >>> >>>> > I'd like to understand better how we wound up shipping :--foo and >>>> then having the CSSWG ask us to change it to :state(foo) instead, and what >>>> we could do in the future to avoid it happening again. >>>> >>>> I think if this was specced before shipping that would have been better >>>> and is a practice that I (and we?) currently follow, but this was shipped a >>>> number of years ago. >>>> >>> >>> Yeah, good point: it's totally possible that our more recent process >>> rigor is sufficient, and we don't need anything new to prevent this in the >>> future. No matter what, we should expect the occasional old feature to pop >>> up and be an exception. >>> >>> I do think that it's worth finding a way to write down your current >>> practice, so that it doesn't regress if you switch teams. I think you mean >>> that you do "hold off on shipping CSS features until they land in an >>> official draft", so let's try to record that if it's our idea of the >>> solution. >>> >>> >>>> > As far as I can see, nobody asked for the ergonomic evidence that >>>> https://www.chromium.org/blink/guidelines/web-platform-changes-guidelines/#browser-engine-reviews >>>> says we can expect after Chrome has shipped a feature. >>>> >>>> This was my bad, I didn't realize or didn't completely consider >>>> usecounters before I presented the name change to the CSSWG. >>>> I am hoping that with an answer from the API owners, I can go back to >>>> the CSSWG and potentially change it back. >>>> There is still no merged spec in HTML or CSS for this feature yet, but >>>> I have open PRs in both specs. >>>> >>> >>> Thanks! >>> >>> On Wed, Oct 4, 2023 at 1:00 PM Jeffrey Yasskin <jyass...@chromium.org> >>>> wrote: >>>> >>>>> +1 on the API owners discussing this. >>>>> >>>>> I'd like to understand better how we wound up shipping :--foo and then >>>>> having the CSSWG ask us to change it to :state(foo) instead, and what we >>>>> could do in the future to avoid it happening again. >>>>> >>>>> It looks like the initial proposal was :state(foo); the CSSWG asked >>>>> to change it to :--foo in 2020 >>>>> <https://github.com/w3c/csswg-drafts/issues/4805#issuecomment-591547956>; >>>>> we shipped that in M90 in 2021 >>>>> <https://chromestatus.com/feature/6537562418053120> (with a feature >>>>> entry that still says :state 🙃); then Ryosuke suggested undoing that >>>>> change in January 2023 >>>>> <https://github.com/whatwg/html/pull/8467#issuecomment-1381645661>, >>>>> and the CSSWG accepted that suggestion in August >>>>> <https://github.com/w3c/csswg-drafts/issues/4805#issuecomment-1663111980>. >>>>> As far as I can see, nobody asked for the ergonomic evidence that >>>>> https://www.chromium.org/blink/guidelines/web-platform-changes-guidelines/#browser-engine-reviews >>>>> says we can expect after Chrome has shipped a feature. It doesn't seem >>>>> like >>>>> this feature was so contentious that the team needed to use a name change >>>>> as a bargaining chip, so we should probably have insisted on more evidence >>>>> before agreeing with the change. Maybe that's still a "should" instead of >>>>> a >>>>> "should have": Joey's second email >>>>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/JvpHoUfhJYE/m/wPAHJzIvAQAJ> >>>>> might >>>>> say that the CSSWG's resolution >>>>> <https://github.com/w3c/csswg-drafts/issues/4805#issuecomment-1663111980> >>>>> about this isn't as committed as it appears to an external observer? >>>>> >>>>> Should we generally hold off on shipping CSS features until they land >>>>> in an official draft, or even in a CR? Should we be clearer to the CSSWG >>>>> when we decide to ship ahead of their consensus that the bar for changes >>>>> is >>>>> going up? There's not good support for this kind of per-WG restriction in >>>>> Chrome Status yet, but maybe it'll fit near >>>>> https://github.com/GoogleChrome/chromium-dashboard/issues/3390... >>>>> >>>>> Jeffrey >>>>> >>>>> On Fri, Sep 29, 2023 at 12:32 PM Alex Russell < >>>>> slightly...@chromium.org> wrote: >>>>> >>>>>> hrm, this is another instance of bikeshedding after shipping, and I'm >>>>>> not inclined to approve. Perhaps we can discuss at next week's API OWNERs >>>>>> meeting? >>>>>> >>>>>> Adding others who I know are interested in this topic. >>>>>> >>>>>> On Friday, September 29, 2023 at 9:16:13 AM UTC-7 Joey Arhar wrote: >>>>>> >>>>>>> The spec for the new syntax hasn't been merged yet, I haven't >>>>>>> finished implementing it in chromium yet, and I don't have estimated >>>>>>> milestones yet, but I'd like to get the API owners thoughts on whether >>>>>>> this >>>>>>> deprecation would be acceptable to help guide the spec discussion. >>>>>>> >>>>>>> I did some analysis of the top 8 websites on the chromestatus entry >>>>>>> to see what the breakage would be like: >>>>>>> https://docs.google.com/document/d/1BHoO12ts0E-NQQH9AMwR2sKAIV0OPB-FA_8QXMpolz0/edit?usp=sharing >>>>>>> I found that most of them had the affected custom elements behind >>>>>>> display:none rules that I had to manually remove in order to use them. >>>>>>> There was only one website where there was actual breakage by default, >>>>>>> in >>>>>>> which case the carousel buttons didn't work on firefox and safari. If >>>>>>> the >>>>>>> new syntax is just for the CSS property and we keep CustomStateSet the >>>>>>> same, then the affected website's buttons would continue to work but >>>>>>> whatever custom styles they have (which I couldn't trigger) wouldn't >>>>>>> apply >>>>>>> anymore. >>>>>>> >>>>>>> Personally, I think that this breakage would not be bad especially >>>>>>> if we keep CustomStateSet the same, and I kind of like :state(foo) more >>>>>>> than :--foo. However, I might have not made it clear in the spec >>>>>>> discussions yet that we have already shipped :--foo by default for >>>>>>> several >>>>>>> years. >>>>>>> >>>>>>> On Fri, Sep 29, 2023 at 9:15 AM Joey Arhar <jar...@chromium.org> >>>>>>> wrote: >>>>>>> >>>>>>>> Contact emailsjar...@chromium.org >>>>>>>> >>>>>>>> ExplainerNone >>>>>>>> >>>>>>>> Specificationhttps://github.com/whatwg/html/pull/8467 >>>>>>>> >>>>>>>> Summary >>>>>>>> >>>>>>>> CSS custom state, which allows custom elements to expose their own >>>>>>>> pseudo-classes, was shipped here: >>>>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/dJibhmzE73o/m/VT-NceIhAAAJ >>>>>>>> >>>>>>>> This feature has not been implemented in gecko or webkit yet. I >>>>>>>> recently made an effort to spec this feature in CSSWG and WHATWG, but >>>>>>>> there >>>>>>>> was pushback to change the syntax back from :--foo to :state(foo), and >>>>>>>> the >>>>>>>> CSSWG has resolved to do this as well: >>>>>>>> https://github.com/w3c/csswg-drafts/issues/4805 >>>>>>>> >>>>>>>> The UseCounter is currently at 0.03% >>>>>>>> https://chromestatus.com/metrics/feature/timeline/popularity/3796 >>>>>>>> >>>>>>>> This deprecation will have a window where we support both the old >>>>>>>> syntax and the new syntax so websites can switch to the new one. >>>>>>>> >>>>>>>> >>>>>>>> Blink componentBlink>HTML>CustomElements >>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EHTML%3ECustomElements> >>>>>>>> >>>>>>>> TAG reviewNone >>>>>>>> >>>>>>>> TAG review statusNot applicable >>>>>>>> >>>>>>>> Risks >>>>>>>> >>>>>>>> >>>>>>>> Interoperability and Compatibility >>>>>>>> >>>>>>>> Websites which are currently using the old syntax and don't migrate >>>>>>>> to the new syntax will have CSS selectors which become invalid which >>>>>>>> would >>>>>>>> impact the styling of their custom elements. >>>>>>>> >>>>>>>> >>>>>>>> *Gecko*: No signal >>>>>>>> >>>>>>>> *WebKit*: No signal ( >>>>>>>> https://github.com/whatwg/html/pull/8467#issuecomment-1381645661) >>>>>>>> >>>>>>>> *Web developers*: No signals >>>>>>>> >>>>>>>> *Other signals*: >>>>>>>> >>>>>>>> Activation >>>>>>>> >>>>>>>> Switching to the new syntax should be quite easy. >>>>>>>> >>>>>>>> >>>>>>>> WebView application risks >>>>>>>> >>>>>>>> Does this intent deprecate or change behavior of existing APIs, >>>>>>>> such that it has potentially high risk for Android WebView-based >>>>>>>> applications? >>>>>>>> >>>>>>>> None >>>>>>>> >>>>>>>> >>>>>>>> Debuggability >>>>>>>> >>>>>>>> None >>>>>>>> >>>>>>>> >>>>>>>> Will this feature be supported on all six Blink platforms (Windows, >>>>>>>> Mac, Linux, Chrome OS, Android, and Android WebView)?Yes >>>>>>>> >>>>>>>> Is this feature fully tested by web-platform-tests >>>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>>>> ?Yes >>>>>>>> >>>>>>>> Flag name on chrome://flagsNone >>>>>>>> >>>>>>>> Finch feature nameNone >>>>>>>> >>>>>>>> Non-finch justificationNone >>>>>>>> >>>>>>>> Requires code in //chrome?False >>>>>>>> >>>>>>>> Estimated milestones >>>>>>>> >>>>>>>> No milestones specified >>>>>>>> >>>>>>>> >>>>>>>> Anticipated spec changes >>>>>>>> >>>>>>>> Open questions about a feature may be a source of future web compat >>>>>>>> or interop issues. Please list open issues (e.g. links to known github >>>>>>>> issues in the project for the feature specification) whose resolution >>>>>>>> may >>>>>>>> introduce web compat/interop risk (e.g., changing to naming or >>>>>>>> structure of >>>>>>>> the API in a non-backward-compatible way). >>>>>>>> None >>>>>>>> >>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>> https://chromestatus.com/feature/5140610730426368 >>>>>>>> >>>>>>>> This intent message was generated by Chrome Platform Status >>>>>>>> <https://chromestatus.com/>. >>>>>>>> >>>>>>> -- >> You received this message because you are subscribed to the Google Groups >> "blink-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to blink-dev+unsubscr...@chromium.org. >> To view this discussion on the web visit >> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANh-dXnPrTj5PhthsMfcr5kd340pbfzuCZik1%2B7J7FC-YkKL1g%40mail.gmail.com >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CANh-dXnPrTj5PhthsMfcr5kd340pbfzuCZik1%2B7J7FC-YkKL1g%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw-TtrRDb2VBLHM6jh3CvZYm1JfcLVCmT_-Z60yZx4COxQ%40mail.gmail.com.