[CSSWG] Minutes Telecon 2024-11-13 [css-view-transitions][css-pseudo][css-nesting][css-2024][css-values][css-shapes][css-backgrounds]

=========================================
  These are the official CSSWG minutes.
  Unless you're correcting the minutes,
 Please respond by starting a new thread
   with an appropriate subject line.
=========================================


Publications
------------

  - RESOLVED: Publish new WD of View Transitions 2
  - RESOLVED: Republish Pseudo 4, move glazman to former editor
  - RESOLVED: Publish new WD of Nesting

CSS Snapshot
------------

  - RESOLVED: Add new category, shorthanded as "reliable CR" (Issue
              #9770: Add specs to Official Definition)
  - RESOLVED: Add MQ4 and Scroll Snap to "reliable CR" (Issue #9770)
  - RESOLVED: Move Grid 1 and 2 to "reliable CR" (Issue #9770)
  - Spec editors are asked to post their opinions of where those specs
      should be placed in the snapshot so that the group can do a bulk
      set of resolutions in the near future.

CSS Values
----------

  - RESOLVED: Accept proposal to use type(<syntax>), add string, and
              add units as keywords (Issue #11035: attr() and forwards
              compatible parsing)

CSS Shapes
----------

  - RESOLVED: Accept the changes to the shape() grammar (Issue #10649:
              `curve to` keyword `using` seems a bit off)

CSS Backgrounds
---------------

  - RESOLVED: Using 'border-area' in the background shorthand (and
              omitting origin) defaults the origin to border-box (Issue
              #11167: Default background-origin for `border-area` in
              shorthand)

===== FULL MEETING MINUTES ======

Agenda: https://lists.w3.org/Archives/Public/www-style/2024Nov/0007.html

Present:
  Rossen Atanassov
  Tab Atkins-Bittner
  Kevin Babbitt
  Oriol Brufau
  Stephen Chenney
  Emilio Cobos Álvarez
  Yehonatan Daniv
  Stephanie Eckles
  Elika Etemad
  Robert Flack
  Simon Fraser
  Paul Grenier
  Jonathan Kew
  Daniel Holbert
  Roman Komarov
  Chris Lilley
  Alison Maher
  Romain Menke
  Cassondra Roberts
  Noam Rosenthal
  Gaurav Singh Faujdar
  Miriam Suzanne
  Josh Tumath
  Munira Tursunova
  Lea Verou
  Sebastian Zartner

Regrets:
  Rachel Andrew

Scribe: TabAtkins

Administrative
==============

F2F Scheduling
--------------

  <fantasai> -> https://app.rallly.co/invite/ShjWRuGtqnQG
  Rossen: Reminder about the poll for the Winter f2f
  fantasai: I think we should be able to close the poll next Wednesday,
            we have a lot of answers
  fantasai: Leading candidates are feb 6 and march 13 weeks
  <fantasai> ... and feb 20th

Publication Requests
--------------------
  github: https://github.com/w3c/csswg-drafts/issues/6900#issuecomment-2461115768

  ChrisL: Bot takes off agenda+ when we discuss one, so we'd missed
          a few
  Rossen: First is View Transitions 2, new WD
  <fantasai> https://drafts.csswg.org/css-view-transitions-2/#changes
  fantasai: I think for a bunch of these, there's been enough changes
            to make sure everyone's on board
  <Rossen> https://github.com/w3c/csswg-drafts/commits/main/css-view-transitions-2/Overview.bs
  Rossen: here's the change log
  <fantasai> -> https://drafts.csswg.org/css-view-transitions-2/#changes
  <ChrisL> +1
  <fantasai> +1 to publishing
  <TabAtkins> +1 to publish

  RESOLVED: Publish new WD of View Transitions 2

  Rossen: Next is Pseudo 4
  <fantasai> -> https://drafts.csswg.org/css-pseudo-4/#changes
  ChrisL: dglazman is listed as an editor and he's no longer in the WG
  Rossen: Think we should just move him to former editor as we repub
  fantasai: Change log isn't as long as it looks
  fantasai: 8 items
  fantasai: Changes are defining "element-backed" and "fully-stylable"
            pseudo-elements
  fantasai: A bunch of reworking of what properties apply to highlight
            pseudos and how they cascade/inherit
  fantasai: added search-text and details-content
  szager: I think I had some open PRs...
  fantasai: I believe I merged them
  fantasai: I'll handle publication
  Rossen: Objections to republishing?

  RESOLVED: Republish Pseudo 4, move glazman to former editor

  <schenney> Big thanks for this one.

  Rossen: Nesting - link to changes in IRC
  <ChrisL> https://drafts.csswg.org/css-nesting/#changes
  [discussion on the last two bullet points of changes list being
      confusing, since they affect each other]
  Rossen: Objections to publishing?
  <fantasai> [should merge them so that the changes list reflects diff
             against last WD]

  RESOLVED: Publish new WD of Nesting

CSS Snapshot
============

Add specs to Official Definition
--------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/9770

Approach
++++++++

  fantasai: High-level comment. Reason for the snapshot was because the
            status of our specs didn't always reflect the actual
            stability
  fantasai: We'd have a WD that's basically a Rec, etc
  fantasai: Was confusing, people didn't know stability
  fantasai: What we ended up with in the snapshot is 3 lists, I think
            I'm gonna propose 4 lists
  fantasai: We've got "official definition", that's the list of "these
            are (basically) Recs". some actually Recs, others are same
            stability level, just waiting on some bugfixes or minor
            issues
  fantasai: usually blocker is missing an impl report
  fantasai: Then we have two lists, one is "these are pretty stable,
            maybe not enough impl experience, but not really changing"
  fantasai: and "spec is a mess but impls are shipping and roughly
            interoperable"
  fantasai: Poster child is Transitions & Animations
  fantasai: tons of issues, but people were shipping and they were
            widely used
  fantasai: So we have Rec-level, CR-level with limited implementation,
            and CR-level implementation with limited spec
  fantasai: Might want a fourth list of "spec is pretty stable, largely
            implemented, largely reliable for use"
  fantasai: probably a lot of our specs should be there
  fantasai: So I propose we add this new list as the second list (in
            order) in the snapshot

  florian: Although it's more things, I do think it's simpler overall.
           Too many things that don't fit well in any of our three
           categories
  <dbaron> does this mean there are now 2 axes rather than 1?
  ChrisL: I think it makes sense to go through what Sebastian has done,
          then go through the new category. Would rather see that in an
          ED and then we can move around
  florian: I might be opposed to some of the moves, because it's the
           wrong place; the right place will be the new category
  fantasai: Yeah that's why I brought it up too

  dbaron: Does this new category mean we're classifying on 2 rather
          than 1 axis? if so, what?
  fantasai: We've always been categorizing, just missing this quadrant
  fantasai: How stable is spec, how stable is impl
  florian: We had "both great", "impl good, spec bad", and "spec good,
           impl not". didn't have "both good (but not done)"
  fantasai: Rough interop was "we have interop but spec doesn't reflect
            that"
  fantasai: we just need one where we have interop and spec does
            roughly match
  dbaron: So we had a category for "impl 1, spec 1", "impl 1, spec 0",
          and "impl 0, spec 1". this new one is "impl 1/2, spec 1/2"
  fantasai: Roughly, yeah. (quibble on the exact numbers, but idea is
            right)

  <fantasai> 4 categories: REC-like, reliable spec + implementation,
             low-experience CR, shipping + badly specced
  <fantasai> A) REC-like; B) reliable spec + implementations; C)
             low-experience CR; D) shipping + badly specced

Media Queries 4
+++++++++++++++

  Rossen: So it fits the model. My proposal is we go through the list
          of specs we have currently here.
  SebastianZ: first is MQ4, current is CRD, last published 2021
  SebastianZ: lots of tests for this spec, interop is very good
  SebastianZ: 98%
  SebastianZ: but still some open gh issues

  florian: I suspect it's really good in terms of syntax, but MQs are
           notably hard to test
  florian: I suspect there are still quite a few media features that
           are good ideas but not particularly tested or implemented
  florian: I'm unsure, for example, of overflow-block/inline, unsure
           about how close reality is for the hover/pointer ones
  SebastianZ: We'd need to check on that, I was just collecting data
              around open issues and tests
  SebastianZ: didn't check every feature in those specs
  florian: I know for a long time we were lacking impl and coverage for
           some features. we might have improved, just not sure where
           we are now.
  ChrisL: I noticed mq4 doesn't have wpt annotations, that would have
          helped
  florian: For MQ syntax we should have this, no question. but many
           media features are basically not testable in an automatic
           manner
  florian: so not just lacking annotation, lacking *tests*
  florian: It's "run this on a device with these characteristics, and
           see if it works"
  dbaron: In theory we might eventually want to show that there *is*
          some impl or device that does each value
  florian: I know we weren't there for a long time, might have gotten
           there while I wasn't looking
  florian: Also I'm listed as a co-editor, and I don't dislike that,
           but I'm no longer sponsored for it
  florian: I just suspect that until we can properly audit, we can't
           move it.
  florian: suspect it's good but can't show it
  fantasai: We *could* move it into the new category, reliable spec +
            impls
  florian: Maybe. parts of it at least
  fantasai: I'm fine either way

  SebastianZ: two options, one is to defer it, and add wpt tests so we
              can see what's covered and what still needs coverage
  SebastianZ: other is to add it to the new list
  SebastianZ: no strong opinion
  Rossen: Just saying that having 98% interop on what's already tests
          is great
  fantasai: But if it's just testing parsing that's not much
  Rossen: If there are missing tests, that's on us
  Rossen: If I'm being a neutral observer, it seems like a spec that's
          moving along well
  Rossen: Whatever's put in a test case impls are doing, that's great
  florian: I don't know if that's useful, the tests aren't a bar *we*
           set, they're mostly written by the impls
  florian: Passing a lot of tests without evaluating coverage, I don't
           know if it's saying anything useful
  florian: Recently we almost pushed Scrollbars to rec, everyone had
           super high test rates despite Safari not implementing it *at
           all*
  Rossen: I get that, but if you're an editor and not seeing enough
          coverage, we can say that and outline what parts aren't
          covered
  florian: For MQ4 I'm saying this was the case a few years ago, last I
           checked. If somebody fixed it more recently I dunno.
  Rossen: So I'm looking at Sebastian as someone who's looked at this
          more recently
  SebastianZ: I didn't check all the features, I checked a few in each
              spec
  SebastianZ: That's why I put it on the list to add it to the official
              definition

  fantasai: I think unless we have some evidence that the behavior is
            implemented correctly (not just parsing and OM), we can't
            reasonably put it in rec-like section
  florian: I just checked - some features that didn't have tests before
           still don't
  Rossen: So are we moving at all? or leaving it?
  florian: We could move it to the new bucket, it has some sections
           that are stable but some that aren't. So either leave it or
           put it in the new bucket
  Rossen: So here's an example of a spec which'll have the new bucket
  SebastianZ: Let's still continue on this one

Scroll Snap
+++++++++++

  fantasai: Next is Scroll Snap, I think this is meaningfully
            implemented everywhere. Not 100% interop, and some minor
            issues.
  fantasai: I'd say this should move either into the "reliable CR"
            section, and probably next year if we resolve the remaining
            issues we can put it in "reliable Rec" section
  Rossen: So scroll snap should move to "reliable CR" new bucket?

Approach
++++++++

  Rossen: We have two candidates already, let's just resolve on the new
          bucket
  ChrisL: Let's
  Rossen: Anyone objecting to adding this new bucket?
  fantasai: I'll call it "reliable CR" as shorthand, work on wording
            later
  <fantasai> A) REC-like; B) reliable spec + implementations; C)
             low-experience CR; D) shipping + badly specced
  SebastianZ: No objection, just wondering if some specs in A would fit
              into B instead
  Rossen: We can see what goes in it once we have it

  RESOLVED: Add new category, shorthanded as "reliable CR"

  Rossen: With that, we'll add MQ4 and Scroll Snap to "reliable CR".
          objections?

  RESOLVED: Add MQ4 and Scroll Snap to "reliable CR"

Scrollbars 1
++++++++++++

  florian: I'd argue Scrollbars 1 goes in "reliable CR" too. Very small
           spec.
  florian: Like I mentioned, Safari has great pass rates but they're
           going down as tests are reviewed and made to actually fail
           when not supported
  ChrisL: So we don't know how well it's implemented?
  florian: There are impls, and the key aspects do work in chrome and
           firefox
  florian: Details are little more iffy, many have been recently fixed.
           test suit needs a little work
  florian: Better than a CR with no impl, but not Rec. We could leave
           it where it is if we're not sure.
  fantasai: Seems to have a usable level of interop
  florian: There are corner cases, but the core of it works in two
           browsers
  Rossen: Any objections to moving it?

  RESOLVED: Move Scrollbars to "reliable CR"

CSS Grid 1 & 2
++++++++++++++

  fantasai: Grid 1 and 2 should also move to "reliable CR"
  <TabAtkins> Agreed
  fantasai: Spec needs an update, that's on me. after that it's very
            stable, we have very few issues against Grid.
  Rossen: I think that sounds reasonable. Objections?
  SebastianZ: Just wondering, we have 12k tests on this spec, 92%
              interop
  SebastianZ: Don't you think that verifies it to go official?
  fantasai: I'll propose doing that as soon as I publish an update,
            spec is out of date now. If I get that before end of year
            we can move it
  Rossen: Objections?

  RESOLVED: Move Grid 1 and 2 to "reliable CR"

  Rossen: Are there more to discuss before we move on?
  florian: a bunch
  fantasai: we should triage and come back with a batch resolution
  SebastianZ: I'd like the editors of the specs to post their opinions

CSS Values 5
============
  scribe: fantasai

attr() and forwards compatible parsing
--------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/11035#issuecomment-2471871211

  TabAtkins: We switched attr() to use type definition syntax, similar
             to variables
  TabAtkins: But working through that, we lost some abilities
  TabAtkins: for example, saying the attr is a number representing px
             values
  TabAtkins: It started to get too complicated for common cases
  TabAtkins: For grammar ambiguity reasons, we suggest to wrap in
             type() function
  TabAtkins: and end up with a lot for simple cases.
  TabAtkins: Suggestion is to keep the <syntax> argument, but wrapped
             in type()
  TabAtkins: but for two cases we have an easier way to specify
  TabAtkins: for default behavior of treating attr value as a string,
             we introduce a keyword (string) so you can say so
             explicitly
  TabAtkins: and secondly, add all units as keywords, which parse as a
             number and attach that unit
  TabAtkins: this does slightly reduce the power of the syntax compared
             to before, since can't mix this behavior with other values
  TabAtkins: but I think it's OK, not a high-value use case right now;
             can evaluate later or add to <syntax> production
  TabAtkins: but instead of type(<number px>) can just write px, much
             simpler
  TabAtkins: so proposal is
  <TabAtkins> 1. Add type() wrapper around <syntax>
  <TabAtkins> 2. Introduce string keyword for explicitly indicating
              string parsing
  <TabAtkins> 3. Add all units to attach to a <number>
  <kizu> +1 to the proposal

  <lea> I don't understand the proposed options
  <TabAtkins> attr(foo type(<length>))
  <TabAtkins> attr(foo string) (deffault behavior)
  <TabAtkins> attr(attributename [ type(<syntax>) | string | <unit> ],
              fallback)
  <TabAtkins> attr(foo type(*))
  lea: Can you parse in a token stream?
  TabAtkins: Yes, use * just like in custom properties
  <ydaniv> +1
  lea: What's without the proposal?
  <TabAtkins> attr(attributename <syntax>, fallback)
  TabAtkins: Wanted to wrap type() because <syntax> would make parsing
             complicated if we add anything in the future
  <florian> wfm
  lea: Could we use keyword instead of type()?
  TabAtkins: Using type() because that's what we do in custom functions
  TabAtkins: Thought about using 'as' but consistency is good
  lea: No way to use 'as' in functions? presumably want to know where
       the syntax terminates
  TabAtkins: Yes, and in some cases if you want to accept several
             keywords...
  TabAtkins: Having type() wrapper makes it clearer
  <lea> +1
  <TabAtkins> attr(foo type(one | two | three))
  <oriol> +1
  <fantasai> wfm
  Rossen: Anyone else? Any objections?

  RESOLVED: Accept proposal to use type(<syntax>), add string, and add
            units as keywords.

CSS Shapes
==========
  scribe: TabAtkins

`curve to` keyword `using` seems a bit off
------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/10649#issuecomment-2426552611

  <fantasai> Summary at
https://github.com/w3c/csswg-drafts/issues/10649#issuecomment-2471826022
  smfr: Proposed syntax for the shape() function
  smfr: We've talked about this before, it's a tweak
  smfr: Settled on using `with` for the control points. If you specify
        two control points, separate with a slash.
  smfr: Big addition is using keywords for absolute points, like `curve
        to top left`, it feels very natural
  smfr: hline/vline also take those keywords
  smfr: and new addition, can specify the control points are relative
        to the start or end of segment, using "from start" or "from
        end" syntax
  smfr: Had an open question - arbitrary order of control points and
        destination points?
  smfr: so you could say `curve ... with ... to...` or `curve ... to
        ... with ...`
  <fantasai> full proposed grammar at
https://github.com/w3c/csswg-drafts/issues/10649#issuecomment-2426552611

  Rossen: This feels a lot better than the basic shapes syntax before
  <fantasai> +1 to the proposal and +1 to allowing reordering
  <TabAtkins> +1 to me, I've reviewed all the changes
  <noamr> +1
  smfr: There's a chunk of wpt already. spec doesn't reflect arbitrary
        ordering yet, I'll fix that
  Rossen: Objections?

  RESOLVED: Accept the changes to the shape() grammar

CSS Backgrounds
===============

Default background-origin for `border-area` in shorthand
--------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/11167

  fantasai: In the bg shorthand if you specify a single keyword like
            'border-box', it sets both clip and origin to that keyword
  fantasai: but 'border-area' keyword is only valid for clip, not origin
  fantasai: want to clarify that in that case, origin defaults to
            border-box
  <TabAtkins> +1 to this from me
  <kizu> +1, makes sense
  <oriol> +1
  Rossen: objections?
  <fantasai> background: ... border-area;
  <emilio> A bit unfortunate that it's different from background: ...;
           background-clip: border-area
  <emilio> But yeah

  RESOLVED: Using 'border-area' in the background shorthand (and
            omitting origin) defaults the origin to border-box

  fantasai: Second, do we want some way to make things default if you
            specify the longhand?
  fantasai: Argument for, it's unfortunate/confusing to get it set to
            the "wrong" value
  fantasai: argument against, it's not something we're currently doing
  <fantasai> for other values of background-clip (though maybe we
             should have)
  Rossen: Okay, will leave that part of the discussion

Received on Thursday, 14 November 2024 00:49:44 UTC