> If they want, authors can work around this mistake by also testing for a feature that ships in any release after M110. A good candidate would be cos(), which ships in M111: `@supports selector(&) and (scale: cos(90deg)) { … }`. That way M109 and M110 are excluded.
This only works if web developers are making websites that are intended to only work in Chrome. On Friday, February 10, 2023 at 11:33:55 AM UTC-5 Sebastian Zartner wrote: > On Thu, 9 Feb 2023 at 23:59, Bramus Van Damme <bra...@chromium.org> wrote: > >> OTOH: Will authors actually need to feature detect this? I mean, feature >> detection won’t make a difference to visitors as it will have the same net >> outcome to them: the nested styles will not be applied in browsers that >> don’t support nesting. Only difference is that the parser might need to >> parse a bunch of extra things instead of being able to discard entire >> blocks upfront. >> > > Without feature detection, authors are left with three choices: > > 1. Always include both nested and unnested rules ⇒ more network traffic > 2. Only include nested rules ⇒ layout is broken for browsers not > supporting nested rules > 3. Avoid nesting rules ⇒ CSS Nesting failed > > None of those choices is great and I am relatively confident that the > majority of authors will choose option 3 to avoid page breakage or > unnecessarily bloating their pages. > > We already have a similar issue with the adoption of @layer which is > currently also not feature detectable (because browsers don't support > @supports > at-rule() > <https://github.com/w3c/csswg-drafts/issues/2463#issuecomment-1016720310> > yet). > > Sebastian > > >> On Thu, Feb 9, 2023 at 11:29 PM Bramus Van Damme <bra...@chromium.org> >> wrote: >> >>> >>> On Thursday, February 9, 2023 at 3:20:34 PM UTC+1 obr...@igalia.com >>> wrote: >>> This is another reason to delay the shipment: reducing the number of >>> users in 109 and 110 will make the check somewhat more reliable. >>> >>> If they want, authors can work around this mistake by also testing for a >>> feature that ships in any release after M110. A good candidate would be >>> cos(), which ships in M111: `@supports selector(&) and (scale: cos(90deg)) >>> { … }`. That way M109 and M110 are excluded. Admittedly, this is a very >>> nasty workaround. >>> >>> OTOH: Will authors actually need to feature detect this? I mean, feature >>> detection won’t make a difference to visitors as it will have the same net >>> outcome to them: the nested styles will not be applied in browsers that >>> don’t support nesting. Only difference is that the parser might need to >>> parse a bunch of extra things instead of being able to discard entire >>> blocks upfront. >>> >>> El dia dimecres, 8 de febrer de 2023 a les 17:32:50 UTC+1, Philip >>> Jägenstedt va escriure: >>> Feature detection will be possible using `@supports selector(&)`. Due to >>> a bug there was a false positive with the flag turned off, but that's been >>> fixed in https://bugs.chromium.org/p/chromium/issues/detail?id=1414012 >>> today and a backport to 111 has been requested. >>> >>> The false positive will remain in Chrome 109 and 110. That's >>> unfortunate, but I don't see a clear way to get around the problem. >>> >>> On Sat, Feb 4, 2023 at 12:30 PM Sebastian Zartner <sebastia...@gmail.com> >>> wrote: >>> I believe, one major issue for the adoption of nesting and which should >>> block shipping it is feature detection. There needs to be a clear way for >>> authors to detect whether the browser supports nesting rules, i.e. provide >>> them with a way to transition to nesting. Without feature detection, >>> authors will write pages that break in browsers that don't support it or >>> they will simply not use the feature. >>> I've therefore created an issue >>> <https://github.com/w3c/csswg-drafts/issues/8399> to discuss this. >>> >>> Sebastian >>> >>> On Friday, January 27, 2023 at 9:46:38 AM UTC+1 Philip Jägenstedt wrote: >>> Hi Oriol, >>> >>> Thanks for raising that there may be some spec changes that don't match >>> the current implementation. Can you list which issues >>> <https://github.com/w3c/csswg-drafts/labels/css-nesting-1> you think >>> need to be resolved? There are already 3 listed upthread, and I agree that >>> anything that has a non-trivial risk of causing interop/compat problems >>> down the line is worth spending extra time on. >>> >>> Best regards, >>> Philip >>> >>> On Fri, Jan 27, 2023 at 2:17 AM obr...@igalia.com <obr...@igalia.com> >>> wrote: >>> I don't see the danger of a priority of constituencies inversion. >>> Authors can use preprocessors, just like they have been using for several >>> years, so I don't get where the hurry comes from. >>> In fact, I would argue that hurrying to ship a future without having >>> discussed the details just tends to result in a messier language that ends >>> up causing more author frustration in the long-term. >>> And it's not just about the bigger controversy of choosing "option 3" vs >>> something else, with the risk of a formal objection. There are various >>> other relevant details. >>> For example, just yesterday the CSSWG resolved that `:is(.baz, !&)` >>> should count as containing `&`, and thus match any `.baz` in the page, not >>> just `& .baz` like the current implementation. >>> It was also resolved that raw properties in a nested media rule are >>> wrapped in a `& {}` rule, which matches Blink, but there are still some >>> details to discuss, which may or may not match the implementation. >>> And there are more issues in the agenda. >>> Some of these topics may be minor, or might be fixed before 112 goes >>> into beta. But I don't see why risk shipping something in a hurry without >>> proper discussion, potentially leading to compat problems when trying to >>> change the behavior later. >>> >>> -- Oriol Brufau >>> >>> El dia dimecres, 25 de gener de 2023 a les 18:31:03 UTC+1, >>> rby...@chromium.org va escriure: >>> We discussed this in the API owner meeting today (Philip, Rego, Daniel, >>> Chris, Yoav, Mike Taylor and myself). We appreciate that there's not yet >>> full consensus on the API syntax, but also that we've been in this state >>> for several months and we've heard pretty clearly from web developers that >>> as a whole they want us to ship something and overwhelmingly support >>> option 3 >>> <https://webkit.org/blog/13607/help-choose-from-options-for-css-nesting-syntax/>. >>> >>> It seems to me we're in real danger of a priority of constituencies >>> <https://www.w3.org/TR/design-principles/#priority-of-constituencies> >>> inversion here with authors continuing to lose out as a result of >>> indecision from the implementer and standards community. >>> >>> Therefore, since option 3 seems to have the bulk of support from web >>> developers and browser implementers, I agree with Philip that, absent any >>> stronger consensus emerging, we should proceed with shipping it for M112 >>> (not M111 which is branching this week). *LGTM2* (with the same >>> criteria as Philip). >>> >>> However, if the CSSWG resolves to materially change the design or the >>> TAG completes their review >>> <https://github.com/w3ctag/design-reviews/issues/791> and requests >>> specific breaking changes prior to Chrome 112 going to Beta around *March >>> 1st*, then I'd retract my LGTM and ask us to flag it back off and >>> circle back here to allow for a new attempt at building more consensus. As >>> always, some breaking changes may be possible after that point too, but >>> it'll depend on the realities of web compat. >>> >>> API owners also agreed that we'd look for 4 LGTMs in this case instead >>> of the usual 3. >>> >>> Thanks, >>> Rick >>> >>> On Wed, Jan 25, 2023 at 11:24 AM Philip Jägenstedt <foo...@chromium.org> >>> wrote: >>> LGTM1 >>> >>> I had a chat with Steinar today to answer my questions. Out of the open >>> issues, the important ones to resolve before shipping are: >>> https://github.com/w3c/csswg-drafts/issues/7850 >>> https://github.com/w3c/csswg-drafts/issues/7971 >>> https://github.com/w3c/csswg-drafts/issues/7972 >>> >>> Those don't seem controversial. My LGTM is assuming spec and tests are >>> updated and that we pass those tests before the feature reaches stable. >>> >>> The final test failure is related to #7850 and is an easy fix. >>> >>> Regarding the syntax, there's still disagreement in the CSSWG. >>> Unanimous consensus among all WG members doesn't seem possible here, for >>> any proposal. Crucially, other browser vendors appear to be OK with "option >>> 3". I would definitely reconsider my LGTM if there were signs that other >>> browser vendors are not keen on shipping option 3, since that would create >>> an interop problem, and eventually site compat problems as well. >>> >>> As always, we should be receptive to new information even after an >>> intent has been approved and the flag has been flipped. >>> >>> On Wed, Jan 25, 2023 at 11:20 AM Manuel Rego Casasnovas < >>> re...@igalia.com> wrote: >>> Adding to Philip questions, there seems to be quite a lot of ongoing >>> discussions around this topic on the CSSWG, for example today there's a >>> special meeting only for CSS Nesting topics: >>> https://lists.w3.org/Archives/Public/www-style/2023Jan/0011.html >>> >>> What's their impact on the current implementation? >>> >>> Thanks, >>> Rego >>> >>> On 23/01/2023 18:00, Philip Jägenstedt wrote: >>> > I think that we should ship this. It's a high profile and in-demand new >>> > feature >>> > <https://2022.stateofcss.com/en-US/usage/#missing_features_freeform>, >>> so >>> > I have a few questions and comments first. >>> > >>> > Taking a look at the open spec issues >>> > (https://github.com/w3c/csswg-drafts/labels/css-nesting-1 >>> > <https://github.com/w3c/csswg-drafts/labels/css-nesting-1>) some are >>> > explicitly ideas for future changes, but are there any where shipping >>> > amounts to a decision that isn't easily changed? I'm thinking >>> especially >>> > of the CSSOM issues. >>> > >>> > In https://wpt.fyi/results/css/css-nesting >>> > <https://wpt.fyi/results/css/css-nesting> there's a single subtest >>> > failure, related to how a rule serializes. Is that implemented per >>> spec, >>> > or is it tied up with the open CSSOM issues? >>> > >>> > Regarding the threat of a formal objection, there doesn't appear to be >>> > any solution that would fully satisfy everyone, but I trust your >>> > judgment that this is the best option. Additionally, we should not >>> > pre-commit Blink to shipping parser changes, and accept the possibility >>> > that what we ship now is the final shape of the feature. >>> > >>> > On Fri, Jan 20, 2023 at 10:42 AM 'Steinar H. Gunderson' via blink-dev >>> > <blin...@chromium.org <mailto:blin...@chromium.org>> wrote: >>> > >>> > Contact emails: se...@chromium.org <mailto:se...@chromium.org>, >>> > fut...@chromium.org <mailto:fut...@chromium.org> >>> > Explainer: None >>> > >>> > Specification: https://drafts.csswg.org/css-nesting >>> > <https://drafts.csswg.org/css-nesting> >>> > >>> > Summary: Add the ability to nest CSS style rules inside other style >>> > rules, >>> > combining selectors from the outer with the inner rule for >>> increasing >>> > modularity and maintainability of style sheets. >>> > >>> > Blink component: Blink>CSS >>> > >>> > TAG review: https://github.com/w3ctag/design-reviews/issues/791 >>> > <https://github.com/w3ctag/design-reviews/issues/791> >>> > >>> > TAG review status: Pending >>> > >>> > Risks: There is a threat of a formal objection in CSSWG. >>> > >>> > Interoperability and Compatibility: >>> > >>> > Gecko: Positive >>> > (https://github.com/mozilla/standards-positions/issues/695 >>> > <https://github.com/mozilla/standards-positions/issues/695>) >>> > WebKit: Positive >>> > (https://github.com/WebKit/standards-positions/issues/69 >>> > <https://github.com/WebKit/standards-positions/issues/69>) >>> > >>> > Debuggability >>> > Nesting style rules will be a big change for editing and displaying >>> > style rules in the inspector: >>> > >>> > - Showing displaying nested rules for matching declarations >>> > - Editing selectors >>> > - Inserting nested rules >>> > - etc... >>> > >>> > Tracking issue for devtools support: https://crbug.com/1172985 >>> > <https://crbug.com/1172985> >>> > Devtools says they're on track for shipping in M111. >>> > >>> > 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? Yes >>> > >>> > Flag name: CSSNesting >>> > >>> > Requires code in //chrome? False >>> > >>> > Tracking bug: https://crbug.com/1095675 <https://crbug.com/1095675 >>> > >>> > >>> > Estimated milestones >>> > DevTrial on desktop 109 >>> > DevTrial on Android 109 >>> > Shipping 112 >>> > >>> > >>> > Anticipated spec changes: See above. >>> > >>> > Link to entry on the Chrome Platform Status: >>> > https://chromestatus.com/feature/5800613594529792 >>> > <https://chromestatus.com/feature/5800613594529792> >>> > >>> > Links to previous Intent discussions: >>> > Intent to prototype: >>> > https://groups.google.com/a/chromium.org/d/msgid/blink- >>> dev/YzrEmc%2BqlqPv72Au%40google.com <https://groups.google.com/a/ >>> chromium.org/d/msgid/blink-dev/YzrEmc%2BqlqPv72Au%40google.com> >>> > >>> > -- >>> > Software Engineer, Google Norway >>> > >>> > -- >>> > 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+...@chromium.org >>> > <mailto:blink-dev%2bunsu...@chromium.org>. >>> > To view this discussion on the web visit >>> > https://groups.google.com/a/chromium.org/d/msgid/blink- >>> dev/Y8ph9gk50U2D92f3%40google.com <https://groups.google.com/a/ >>> chromium.org/d/msgid/blink-dev/Y8ph9gk50U2D92f3%40google.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+...@chromium.org >>> > <mailto:blink-dev+...@chromium.org>. >>> > To view this discussion on the web visit >>> > https://groups.google.com/a/chromium.org/d/msgid/blink- >>> dev/CAARdPYdMTE%3DjWA4AVXeJfGGTZ5WNzQCR4MiHONu >>> ZD3gq43PAOg%40mail.gmail.com <https://groups.google.com/a/ >>> chromium.org/d/msgid/blink-dev/CAARdPYdMTE% >>> 3DjWA4AVXeJfGGTZ5WNzQCR4MiHONuZD3gq43PAOg%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+...@chromium.org. >>> To view this discussion on the web visit https://groups.google.com/a/ >>> chromium.org/d/msgid/blink-dev/CAARdPYckGUc%3DxjifpXRrOi_ >>> UQ2SCXO%2B68GuDAT4r0B%2B8qC4WSw%40mail.gmail.com >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYckGUc%3DxjifpXRrOi_UQ2SCXO%2B68GuDAT4r0B%2B8qC4WSw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "blink-dev" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/a/chromium.org/d/topic/blink-dev/eFCrkiLynfU/unsubscribe >>> . >>> To unsubscribe from this group and all its topics, send an email to >>> blink-dev+...@chromium.org. >>> To view this discussion on the web visit >>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/32a43824-1b71-4b67-b1ce-05c4e9b1fc7dn%40chromium.org >>> >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/32a43824-1b71-4b67-b1ce-05c4e9b1fc7dn%40chromium.org?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/3f86c1bd-ae7d-4748-9e4a-6e9cb78c1f4an%40chromium.org.