So we are back to the worst possible outcome? :( ☆*PhistucK*
On Sat, Apr 27, 2024 at 8:31 AM Anders Hartvoll Ruud <andr...@chromium.org> wrote: > Oops, I intended to send that e-mail to the list, must have hit "Reply" > instead of "Reply All". > > On Fri, Apr 26, 2024 at 10:45 AM Anders Hartvoll Ruud < > andr...@chromium.org> wrote: > >> >> >> On Fri, Apr 26, 2024 at 4:09 AM Domenic Denicola <dome...@chromium.org> >> wrote: >> >>> >>> >>> On Thu, Apr 25, 2024 at 6:14 PM Anders Hartvoll Ruud < >>> andr...@chromium.org> wrote: >>> >>>> Contact emails >>>> >>>> andr...@chromium.org >>>> >>>> Specification >>>> >>>> https://drafts.csswg.org/css-nesting-1/#nest-rule >>>> >>>> Summary >>>> >>>> CSS Nesting initially shipped with an interesting quirk that would >>>> cause bare declarations that come after a nested rule to “shift”, for >>>> example: >>>> >>>> .foo { >>>> >>>> width: 100px; >>>> >>>> height: 100px; >>>> >>>> @media screen { >>>> >>>> background-color: red; >>>> >>>> } >>>> >>>> background-color: green; >>>> >>>> } >>>> >>>> You would think that the background-color of <div class=foo> would be >>>> green here, but no, that declaration is shifted up to the main (leading) >>>> block of declarations during parsing: >>>> >>>> .foo { >>>> >>>> width: 100px; >>>> >>>> height: 100px; >>>> >>>> background-color: green; /* I’m here now */ >>>> >>>> @media screen { >>>> >>>> background-color: red; >>>> >>>> } >>>> >>>> } >>>> >>>> This was at the time done intentionally for a mix of CSSOM and >>>> historical reasons, and all implementations of CSS Nesting currently agree >>>> on this behavior. However, it turns out this shifting behavior isn’t what >>>> authors expect (WebKit blog post >>>> <https://webkit.org/blog/14571/css-nesting-and-the-cascade/#:~:text=an%20element%20selector.-,Another%20question,-There%20is%20one>), >>>> and the CSSWG now consider the decision a mistake. In October 2023, the >>>> CSSWG resolved >>>> <https://github.com/w3c/csswg-drafts/issues/8738#issuecomment-1768977689> >>>> to not do the shifting behavior anymore, without explaining how to >>>> solve the problems that would arise from that (Issue 9492 >>>> <https://github.com/w3c/csswg-drafts/issues/9492>). >>>> >>>> One promising approach, @nest (proposed by Tab >>>> <https://github.com/w3c/csswg-drafts/issues/9492#issuecomment-1779739434:~:text=Add%20a%20new%20%40nest%20rule>), >>>> became the basis for my web compat investigation (Doc >>>> <https://docs.google.com/document/d/1G7R-Pqk33J8ho3ad-ZpkdBIRvG2xt1ZQwQI_clPlroU/edit?usp=sharing>, >>>> @chromium.org), and recently I shared some good news >>>> <https://github.com/w3c/csswg-drafts/issues/8738#issuecomment-2048158814> >>>> from the use-counters with the CSSWG. This restarted the discussion, and >>>> while the CSSWG did agree >>>> <https://github.com/w3c/csswg-drafts/issues/8738#issuecomment-2061777236> >>>> on the underlying @nest approach, it also basically split people into two >>>> camps: >>>> >>>> >>>> 1. >>>> >>>> @nest should be a web-exposed construct. (Currently specified, per Issue >>>> 8738 >>>> >>>> <https://github.com/w3c/csswg-drafts/issues/8738#issuecomment-2061777236> >>>> ). >>>> 2. >>>> >>>> @nest should as much as possible be an implementation detail, >>>> unobservable to the author. (Issue 10234 >>>> <https://github.com/w3c/csswg-drafts/issues/10234>). >>>> >>>> >>>> The apparent positions so far are that Firefox and Chrome support (1), >>>> and Safari (+ other prominent CSSWG members) support (2). At the time of >>>> writing, this is where the discussion is now. >>>> >>>> The CSSWG agrees that addressing the “bare declaration shift” is the >>>> most important thing, and also quite urgent, since we don’t know how long >>>> the window for making a change here is going to stay open. The >>>> expectation >>>> <https://github.com/w3c/csswg-drafts/issues/10234#issuecomment-2067746133> >>>> of the CSSWG seems to be that browsers first ship @nest as it’s currently >>>> specified (1), and then we possibly move towards (2) later. I find this >>>> move problematic, since moving to (2) would break the API again, and even >>>> if we reasonably believe it will break the API in a much less severe way, >>>> it may be hard to actually prove this. >>>> >>>> Despite this, I have agreed to try to ship @nest, on the condition that >>>> we have clear signals from Firefox and Safari that they’ll do the same. I >>>> don’t yet have those signals, but I’m sending the intent “early” anyway, to >>>> give this issue some visibility. >>>> >>> >>> I saw this morning that WebKit now opposes this proposal >>> <https://github.com/WebKit/standards-positions/issues/337>. Since you >>> phrased this as a condition, should we consider the Intent withdrawn, as >>> the condition is not met? >>> >> >> Yes, consider it withdrawn. I am happy with this outcome for now. >> >> >>> >>>> Blink component >>>> >>>> Blink>CSS >>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ECSS> >>>> >>>> TAG review >>>> >>>> None >>>> >>>> TAG review status >>>> >>>> Not applicable >>>> >>>> Risks >>>> >>>> This intent is a breaking change, with two main points of breakage: >>>> >>>> >>>> - >>>> >>>> Keeping the bare declarations in place can affect the winner of the >>>> cascade (the example in the introduction). This is covered by >>>> CSSBareDeclarationShift >>>> <https://chromestatus.com/metrics/feature/timeline/popularity/4783> >>>> (0.00027%). >>>> - >>>> >>>> Additionally, @nest will have different specificity behavior for >>>> nested group rules, and this can also affect the winner of the cascade. >>>> This is covered by CSSNestedGroupRuleSpecificity >>>> <https://chromestatus.com/metrics/feature/timeline/popularity/4784> >>>> (0.00017%). >>>> >>>> >>>> Interoperability and Compatibility >>>> >>>> Gecko: No signal ( >>>> https://github.com/mozilla/standards-positions/issues/1013) - Emilio >>>> seems positive, but the issue is still open. >>>> >>>> WebKit: No signal ( >>>> https://github.com/WebKit/standards-positions/issues/337) >>>> >>>> Web developers: No signals >>>> >>>> Other signals: >>>> >>>> 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, ChromeOS, Android, and Android WebView)? >>>> >>>> No >>>> >>>> Is this feature fully tested by web-platform-tests >>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>> ? >>>> >>>> Not yet. >>>> >>>> Flag name on chrome://flags >>>> >>>> None >>>> >>>> Finch feature name >>>> >>>> None (yet). I’m not yet sure whether or not this change can be done >>>> behind a flag. >>>> >>>> Non-finch justification >>>> >>>> None >>>> >>>> Requires code in //chrome? >>>> >>>> False >>>> >>>> Estimated milestones >>>> >>>> M126 >>>> >>>> >>>> Anticipated spec changes >>>> >>>> Yes, a major one, as explained in the introduction: Issue 10234 >>>> <https://github.com/w3c/csswg-drafts/issues/10234>. >>>> >>>> I am attempting to ship despite this issue, since that’s what the CSSWG >>>> wants. >>>> >>>> Note also: Recently in the above issue, we are now considering a third >>>> approach: renaming @nest to something more generic, with the intent to >>>> maybe make it more useful in the future, and therefore making its >>>> web-exposed presence less annoying. This shows some promise in terms of >>>> unifying camps (1) and (2), so we’ll see how this plays out in the next few >>>> days. >>>> >>> >>> In the WebKit issue >>> <https://github.com/WebKit/standards-positions/issues/337#issuecomment-2072349711>, >>> a CSSWG Invited Expert adds context by saying >>> >>> > perhaps a way to guarantee that the current proposal will *not* >>> become a de facto standard is to simply implement a non author-facing >>> @nest 👿 It does solve the immediate CSS Nesting issue, and the lack of >>> interop will force a resolution sooner rather than later, instead of >>> letting inertia take over. >>> >> >> Yes, I also had a negative reaction to that comment. >> >> >>> This doesn't seem like an appropriate use of the Blink process. Exposing >>> our users to a non-interoperable situation in order to overcome inertia or >>> disagreement within a standards-body is against the values >>> <https://www.chromium.org/blink/guidelines/web-platform-changes-guidelines/> >>> that >>> guide shipping approvals. >>> >> >> That is not what this is. >> >> - The CSSWG, both camps (1) and (2), *agreed* to add @nest to the >> spec. >> - I initially thought it obvious >> >> <https://github.com/w3c/csswg-drafts/issues/10234#issuecomment-2067727812:~:text=after%20even%20longer.-,To%20be%20clear%2C%20this%20issue%20blocks%20actually%20carrying%20out,-%238738.%20The%20more> >> that Issue 10234 would block carrying out @nest in practice. >> - But then prominent CSSWG members clarified that, no, it should >> <https://github.com/w3c/csswg-drafts/issues/10234#issuecomment-2067746133> >> not >> <https://github.com/w3c/csswg-drafts/issues/10234#issuecomment-2069212736> >> block. >> - Lacking any objection from camp (2) on the above comments, I >> reluctantly agreed to *try* and carry out what was the *apparent >> agreement within the standards body*. >> >> I welcome corrections if I've misunderstood that comment, or more >>> perspective if you have it to give. >>> >> >> The problem here is that the clock is ticking, and everyone (CSSWG) >> agrees that inaction is probably the worst outcome. It could lead to Issue >> 8738 <https://github.com/w3c/csswg-drafts/issues/8738> not being >> addressed at all, in which case we'd have *interop*, but on an API which >> is now seen as a mistake. Or the outcome that worries me the most: some >> browser ships something @nest-like, but we do nothing, and we end up with a >> *very* bad interop issue vs. shipping @nest with Issue 10234 still open. >> So really I was just trying to ensure that our users aren't exposed to the >> *worst* non-interoperable situation that can arise from this. >> >> > +1 to this, but can you also explain why you think it's a good idea to >> ship, despite finding the proposal problematic? >> >> I don't find the proposal problematic (what is specified now looks good), >> but I'm not comfortable shipping with Issue 10234 still open. But for >> reasons explained above, doing nothing makes me equally uncomfortable, >> especially if the other browsers had intended to ship @nest. >> >> But with WebKit's opposition now crystal clear, I think we should just do >> nothing for now. >> >> Thanks for the feedback Domenic and Mike. >> >> >>> >>>> >>>> Link to entry on the Chrome Platform Status >>>> >>>> https://chromestatus.com/feature/5123929441304576?gate=5374099609354240 >>>> >>>> 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/CAKFBnUoz6xu3S_V-N8NiUMtphKmXh1_-4ozaY1WT4Ko0nXLkFg%40mail.gmail.com >>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKFBnUoz6xu3S_V-N8NiUMtphKmXh1_-4ozaY1WT4Ko0nXLkFg%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/CAKFBnUou98dbsCej%3Dji3AgL7-esjCzvnYUByA6hG6PKzZ2vdQw%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKFBnUou98dbsCej%3Dji3AgL7-esjCzvnYUByA6hG6PKzZ2vdQw%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/CABc02_KQfTWWqtRMk6X%3DZf%2BDtjWVsXLC42cOmaqt4MhQ6G5eGA%40mail.gmail.com.