- From: Dael Jackson <daelcss@gmail.com>
- Date: Wed, 13 Nov 2024 19:49:12 -0500
- To: www-style@w3.org
=========================================
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