[CSSWG] Minutes Telecon 2023-11-08 [css4][css-view-transitions][filter-effects]

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


Upcoming F2F
------------

  - The group will make a final decision on dates next week after
      coordinating with the AB meeting which is targeting a similar
      time frame.

CSS4 Discussion
---------------

  - Una introduced the community group that is working on helping
      people understand and communicate about CSS by introducing naming
      conventions that are clear and support discussion needs. The
      presentation is available here:
https://lists.w3.org/Archives/Public/www-archive/2023Nov/att-0002/CSS-Next_Community_Group.pdf
  - RESOLVED: The CSSWG supports this CG's efforts in defining levels
              for CSS as a way for the community to understand and
              communicate about batches of CSS features. (Issue #4770:
              Let’s Define CSS 4)

CSS View Transitions
--------------------

  - RESOLVED: type can accept any idents, except 'none' or '-ua-'
              prefixes (Issue #9534: Resolve on descriptor/parameter
              names)
  - RESOLVED: at-rule is @view-transition, descriptors are 'navigation'
              and 'type', 'navigation' grammar is "auto | none" ('type'
              grammar already resolved) (Issue #9534)
  - RESOLVED: A startVT() called on the new page will force-finish an
              MPA VT even if a frame hasn't painted yet. (startVT()
              late in the old page is still undefined) (Issue #9512:
              Starting a same-doc view transition while a cross-doc
              view transition is pending)
  - RESOLVED: startVT() on the old doc is ignored if there's an active
              MPA VT running, but its callbacks are still dispatched
              (Issue #9512)

Filter Effects
--------------

  - RESOLVED: Change backdrop-filter's edgeMode to mirror, pending any
              objections (FXTF Issue #374: Backdrop filter clipping
              with edgeMode="duplicate" creates discontinuity when
              moving)

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

Agenda: https://lists.w3.org/Archives/Public/www-style/2023Nov/0001.html

Present:
  Rachel Andrew
  Rossen Atanassov
  Tab Atkins-Bittner
  David Baron
  Emilio Cobos Álvarez
  Yehonatan Daniv
  Robert Flack
  Paul Grenier
  Chris Harrelson
  Jonathan Kew
  David Leininger
  Vladimir Levin
  Peter Linss
  Eric Meyer
  Florian Rivoal
  Khushal Sagar
  Miriam Suzanne
  Brandon Stewart

Regrets:
  Oriol Brufau
  Lea Verou
  Sebastian Zartner

Chair: Rossen

Scribe: TabAtkins

Upcoming F2F
============

  Rossen: Are there enough votes to call the winter meeting?
  florian: If we have enough info to make a decision, great, but
           pointing out we were polling over 3 weeks, for the first two
           of these the AB is also polling.
  florian: Maybe best to avoid conflicts given we have three between
           those.
  florian: So maybe chairs should talk to AB chairs.
  florian: Possible they'll be in the same city, so maybe that's ok.
           But might be good to coordinate.
  Rossen: Possibly. Or we just resolve and then tell them.
  <astearns> https://app.rallly.co/invite/8EaQBagjc8j6
  TabAtkins: We can rule out the first week.
  florian: AB might be the first or second week. Ideally we don't
           choose 3rd week and AB does 1st, or we both pick 2nd.
  fantasai: I think AB is leaning toward second week.
  fantasai: Why the poll missing a week between 2 and 3?
  <dbaron> (I think there was a previous poll with more options in it.)
  TabAtkins: I think someone had a conflict so we ruled it out early.
  <astearns> skipped week is a TC39 meeting
  Rossen: Okay, I'll ping AB chairs for more info and we'll make final
          decision next week.

CSS4 discussion
===============
  github: https://github.com/w3c/csswg-drafts/issues/4770

  <una> https://docs.google.com/document/d/1ThJggjnuCbz94ckK5ds2UiedyrTrT5Y6V00RVTGgVEw/edit#heading=h.ynsedw1i03ds
  una: I'm sharing a window with a presentation, link in chat
  una: So issue 4770 started this discussion and this CG, but it's been
       going on for years before that
  <una> https://docs.google.com/presentation/d/1V3kyGahIl2P2i2J0dlHYhT97ssdfqyQuGpQtUar1aqE/edit#slide=id.g28bb9aacdd6_0_576
  una: quick overview of why this is important and what our discussions
       were
  una: Ultimately CSS3 is a grouping of features covered in "level 3
       specs", covers a wide range of features
  una: So successful that it's still the most common term used to refer
       to "modern CSS"
  una: It's how people teach CSS, recruit for CSS jobs, etc
  una: Not hard to find CSS3 in job requirements, in teaching syllabuses
  una: Saw an oklch() with CSS3 logo attached to it
  una: If you search for CSS on google, about half the courses have the
       CSS3 logo in some way
  una: So easy to see the impact of the term even today
  una: Despite this being a fairly specific set of features that don't
       line up with today's features.
  una: css3.now lists these features, but that's not how the community
       talks about it
  una: How far we've come as an ecosystem, we have more features than
       we ever thought possible when CSS3 started.
  una: CQ, layouts, interactions on the web platform
  una: So important to change how people talk about CSS
  una: Post from dev graham about "what is modern CSS"
  una: "modern" is too broad of a definition, can't pinpoint a point in
       time or specific set of features

  una: So that's the CG. Initially called CSS4 CG, but might be beyond
       that, renamed to CSS Next
  una: Looks to label features in a clear colloquial way to help people
       understand CSS across the ecosystem
  una: Other options are Baseline or the CSS Snapshot. Great but don't
       think they provide the same impact as "CSS3"
  una: Also runs into the same problems as calling something "modern"
  una: They just don't have the same cachet either - ES2020, 2021, 2022
       vs ES6
  <fantasai> +1 the snapshots aren't appropriate for this use
  una: So using "CSS" or "Modern CSS" just lacks the meaning we need
  una: Better labels have value, even just from marketing standpoint

  una: We talked about some goals
  una: First, helping devs learn about CSS
  una: Helping teachers teach about CSS
  una: Employers hire about CSS
  una: Help community understand the evolution
  una: Some non-goals
  una: Affecting the specs themselves.
  una: We're not doing anything with the specs themselves.
  una: Also out of scope is official documentation, we're not writing
       docs
  una: And not doing any spec work (should be done in the spec groups)
  una: And not defining best practices or managing compat data
  una: Our scope, instead, is figuring out the community's
       understanding of CSS feature levels, developing and naming those
       groups, and educating about those levels.

  una: So far our resolution has been:
  una: Here's the CSS3 set of specs
  una: Roughly 2009-2012
  una: CSS4 seems to work out nicely as things that postdate CSS3 for
       about 5 years and are things that are now stable
  una: and CSS5 is new growing features, just landing
  una: In the future CSS6 will be early-stage features just now in
       planning or not even there yet.
  una: As part of this work we want to do some research, so we did some
       early sorting of features into CSS4 vs 5
  una: Still working on the final analysis of this
  una: So we want to do a community pulse check, checking with the user
       group and do some user research.

  una: In terms of CSSWG, we're hoping for a few things
  una: First, awareness of what we're doing, hopefully a positive
       signal from y'all
  una: Another is general feedback, particularly in our early sorting
       of categories
  una: In the process of making a prototype of the research
  una: Finally, join meetings - biweekly (correct meaning: every
       biweek), Mondays 8am PT/11 ET, 5pm CET. An hour before the CSS
       meeting, but on Mondays
  <chrishtr> This is an awesome proposal, and so needed. I love it!

  <fantasai> Slides:
https://lists.w3.org/Archives/Public/www-archive/2023Nov/att-0002/CSS-Next_Community_Group.pdf
  <fantasai> Archived link ^

  florian: I'm supportive of the overall effort. Think I like what you
           said about CSS4 onwards
  florian: A little issue about CSS3 - we have a dfn of that but it
           doesn't match what you said.
  florian: Currently our CSS3 definition says "everything after CSS2",
           so it can't be an immutable category.
  florian: So someone needs to change the dfn of CSS3, either us or
           y'all
  <TabAtkins> (Fine with just changing it, our dfn was based on "we're
              not doing any categories anymore")

  chrishtr: I think this is a great proposal and very important.
  chrishtr: The impact of HTML5 on people's interest in the web, and
            getting momentum for people to build things that previously
            people didn't think were possible
  chrishtr: This has tremendous potential to move the midnshare to make
            people recognize CSS has really advanced in leaps and
            bounds.

  fantasai: +1 to everything Una said, really excited you've picked up
            this idea
  fantasai: super supportive of what y'all're doing
  fantasai: I think if there's any conflict with our Snapshot we can
            just fix it
  fantasai: And once the CG dfns have settled down and they're happy
            with it, I think we should publish it thru CSSWG as a Note
  fantasai: So have /TR/CSS3, /TR/CSS4, etc as a Note matching what the
            CG comes up with
  fantasai: For the Snapshots naming, using the dated versions of the
            snapshots as a sub for this, that doesn't really work for
            this. They're designed for a different purpose.
  fantasai: Even if they were better named they just wouldn't be
            suitable.
  <florian> +1
  <una> +1

  Rossen: Do we need a resolution?
  una: I think it would be a positive
  fantasai: proposed: The CSSWG supports this CG's efforts in defining
            levels for CSS as a way for the community to understand
            batches of CSS features.
  <florian> +1
  <TabAtkins> +1

  RESOLVED: The CSSWG supports this CG's efforts in defining levels for
            CSS as a way for the community to understand and
            communicate about batches of CSS features.

  chrishtr: Should Una bring back specific proposals to the group about
            what is CSS4?
  Rossen: It's all in public, she can open an issue
  fantasai: I think if Una has stuff she specifically wants reviewed,
            an issue will ask us for a review
  fantasai: And when the CG thinks they're done, they can ask us to
            publish it as a Note thru the WG
  <florian> sgtm

CSS View Transitions
====================

Resolve on descriptor/parameter names
-------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/9534

  khush: Related to a resolution we had a few weeks ago
  khush: to define the at-rule for authors to request a cross-document
         VT
  khush: What was left was naming
  khush: So this is to resolve on the naming
  khush: proposal is `@view-transition`
  khush: Two descriptors
  khush: First, 'navigation', defines what navigations this at-rule
         applies to
  khush: Currently just "auto" and "none". "none" means don't do it at
         all. "auto" loosely means "do it for all navs except reloads".
         We have an issue for improving the precision.
  khush: But intention is "auto" means "all navigations that make
         sense".

  khush: Other descriptor is 'type'. Related to a resolution we had
         in #8960
  <khush> https://github.com/w3c/csswg-drafts/issues/8960
  khush: Allowing multiple transitions happening in your doc, and you
         want to apply CSS depending on which is actually running.
  khush: We defined how that worked for JS-based VTs, so this is adding
         the same functionality to cross-document declarative ones.
  khush: Naming options are 'type-list', to be consistent with classList
  khush: Other is 'type' or 'types'. CSS doesn't seem to pluralize
         words, so 'type' is our proposal
  khush: And to make it obvious it's the same capability in the JS api,
         whatever we pick here will be the same as we use in the JS API
  khush: Last question for input
  khush: There's a future extension to allow adding UA-defined keywords
         into this list
  khush: Like if we allow using this for declarative same-document
         transitions, there will be a keyword to opt into that.
  khush: So we want to make sure we can add UA-specified things to this
         later.
  khush: A few approaches - 1) the author supplies dashed-ident, so
         UA-provided ones will be undashed
  khush: Another is we reserve a prefix for UAs and don't let authors
         use that
  khush: We used that for animations already
  khush: So our proposal is you can supply any custom ident, but it
         can't start with `-ua-`

  fantasai: I think overall this makes sense. Preference for -ua- over
            dashed idents
  fantasai: More consistent with classes to allow anything
  <khush> +1
  fantasai: Curious about the comment where the default value is the
            empty list and there's no none value
  fantasai: We don't have props that can take an empty value anywhere
            in CSS, besides custom props
  fantasai: So I wonder if 'none' is the reasonable thing
  fantasai: Not something you have to specify, just to have a
            consistent way to refer to the empty list
  vmpstr: My understanding is because the blocks aren't cascading, it's
          either set or not set, having an explicit default value isn't
          necessary.
  fantasai: I agree it's the same, it's just not a pattern we have,
            where you can't say the default value.

  TabAtkins: No strong thoughts, but a little odd to have an empty
             value, we don't do anywhere except custom props
  TabAtkins: Can just leave it out
  TabAtkins: but generally, I'm slightly against omission being
             impossible to express explicitly
  TabAtkins: makes some types of code writing awkward to write
  TabAtkins: can't pass value, have to pass out-of-band value
  TabAtkins: so slightly for doing 'none' and making it a disallowed
             name
  TabAtkins: wouldn't block on it though
  khush: I'm okay with that. We'd disallow "none" in the JS API too to
         be consistent
  vmpstr: I think that's fine. We'd need to resolve that "none" is not
          a valid JS type
  khush: So reserved keywords would be "none" and the -ua- prefixes
  <TabAtkins> (Note that for the JS API you have to rule out all
              ASCII-casing variations.)

  Rossen: Can we resolve on that?
  <fantasai> PROPOSED: type can accept any idents, except 'none' and
             '-ua-*'
  <fantasai> PROPOSED: type can accept any idents, except 'none' and
             '-ua-*' ; 'none' represents no idents (empty list)
  emilio: Do we need `-ua-`? We have `ua-` on font families
  <fantasai> do we? I thought we had system-
  vmpstr: We use `-ua-` for the keyframes right now, so I'd prefer
          being consistent
  <khush> +1 to Vlad
  <TabAtkins> (I think -ua- is correct; these aren't well-specified by
              the group.)
  <fantasai> There aren't any font families starting with ua-. We have
             system-ui, etc.

  RESOLVED: type can accept any idents, except 'none' or '-ua-' prefixes

  <khush> https://github.com/w3c/csswg-drafts/issues/9534#issue-1966514190
  khush: This issue has names for a few other descriptors as well on
         the first comment
  khush: So the at-rule name and the descriptor names.
  khush: Can we resolve on these?
  TabAtkins: Sure.
  fantasai: I'm fine in general. Slightly uneasy about "auto" because
            it's vague.
  fantasai: You're defaulting to same-origin, right? Previous we
            discussed using 'same-origin' as the keyword, do we want to
            do that?
  khush: Right now we're same-origin but exclude reloads, and have an
         issue to discuss whether typing a same-origin URL into the nav
         counts too.
  khush: So it's kinda complex, seems appropriate for 'auto'
  fantasai: Ok, I don't have a better idea right now. Feel like it
            could benefit from more explicit, but don't have a
            suggestions
  khush: So I suggest we resolve on "auto" now. We have an issue for
         strictly defining "auto", we can talk about a more specific
         name at that point.
  fantasai: k
  <fantasai> PROPOSED: at-rule is named @view-transition
  <khush> @view-transition, navigation: auto | none, type
  <fantasai> PROPOSED: @view-transition includes a 'navigation: auto |
             none' descriptor

  RESOLVED: at-rule is @view-transition, descriptors are 'navigation'
            and 'type', 'navigation' grammar is "auto | none" ('type'
            grammar already resolved)

Starting a same-doc view transition while a cross-doc view transition
    is pending
---------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/9512

  khush: We can only have one VT at a time
  khush: So what to do if the page starts a same-doc VT (script calls
         .startViewTransition) while a cross-doc is running?
  khush: In same-doc we take latest; if you start a new one it
         force-finishes the old one
  khush: Proposal is to do the same
  khush: Some debate. If you were navigating and just arrived on the
         page, do you actually want an abrupt transition and then start
         the new one?
  khush: In the extreme the doc hasn't drawn a frame yet
  khush: So our proposal is we delay setting up a VT object on the doc
         until the page has drawn one frame
  khush: After that, if you call the JS API, the behavior is the same
         as same-doc transitions, latest wins

  flackr: I can think of lots of cases where devs use a transition for
          an intro animation to the page
  flackr: It's common to start a transition before the element is
          drawn, that's why we delay a frame
  flackr: So your proposal is that even if you call startViewTransition
          before the first frame, it cancels the MPA?
  khush: No the other way. Conceptually the cross-doc transition isn't
         set up until a specific point in the doc lifecycle when a
         frame has painted.
  khush: Before that, there is no cross-doc view transition.
  flackr: So in an MPA you've started the setup on the old page. For
          consistency with frameworks that can do both SPA and MPA, I'd
          strongly prefer the MPA transition be canceled if you start a
          SPA VT even before the old page has painted
  khush: Use-case?
  flackr: There are frameworks that'll sometimes SPA or MPA depending
          on various things. Would be hard to work with it only
          sometimes canceling
  khush: My problem is, if you do it before the page has drawn a frame,
         then by design you'll have an abrupt transition.
  flackr: Yeah but that's the same as if you call startVT() before the
          previous VT was able to do anything useful
  khush: It's about timing. If we defer it, then anything you do before
         the page reveal contributes to the state of the DOM

  fantasai: Just to confirm we're talking about calling startVT() on
            the new page, not on the old page?
  khush: Yes. There's a separate question about what to do with a VT on
         the old page, but it's very unlikely anyway
  flackr: I do just think it's still consistent with the SPA form - we
          *have* already started the cross-doc VT by the time the new
          page loads.
  khush: This isn't a hill I want to die on, I can take either
         resolution. Authors can just not call it if the behavior is
         wrong.
  khush: My proposal was just to hopefully get a "right behavior" by
         default if you didn't think about it well
  flackr: And my preference is to get a consistent answer between MPA
          and SPA.
  flackr: So my proposal is startVT() force-finishes the MPA transition
          even if it hasn't captured the first frame yet
  TabAtkins: overlapping VTs seems a mistake
  TabAtkins: so prefer to do the predictable thing than trying to make
             it "smart"
  fantasai: Make it clear - startVT() on the *new* page that cancels
            the MPA transition
  TabAtkins: Just making it clear - startVT() late in the old page is
             currently undefined then, right? And we'll figure it out
             later.
  khush: Yes. Let's resolve on the new-page startVT() now.

  RESOLVED: A startVT() called on the new page will force-finish an MPA
            VT even if a frame hasn't painted yet. (startVT() late in
            the old page is still undefined)

  khush: Could we decide on the old page behavior? Seemed to be
         consensus on "don't cancel" - you're leaving the page and
         capturing the last frame, doesn't make sense to cancel the MPA
  khush: so proposed: startVT() is ignored on the old doc if there is
         an active MPA VT
  flackr: I think you still need to run update, though.
  Rossen: Sounds like there isn't consensus quite yet, then.
  khush: I'm happy with the resolution, we can bring it up if we find
         issues.

  RESOLVED: startVT() on the old doc is ignored if there's an active
            MPA VT running, but its callbacks are still dispatched

Filter Effects
==============

Backdrop filter clipping with edgeMode="duplicate" creates
    discontinuity when moving
----------------------------------------------------------
  github: https://github.com/w3c/fxtf-drafts/issues/374

  flackr: So edgeMode=duplicate we specced creates a flickering
          discontinuity
  flackr: I propose we change the edgeMode for backdrop-filter to be
          reflect
  flackr: Which smoothly introduces new colors as they enter the edge.
          It's *probably* what Safari is doing but I"m not sure, they
          haven't commented.
  flackr: I wanted this resolved before Interop 24 tries to standardize
          this behavior
  TabAtkins: I haven't looked at the details but I hate flickering, and
             trust flackr to have the right option for making it look
             good
  fantasai: I think think we have someone working on backdrop-filter
            issues and they're out right now. I have confidence in
            flackr but I"d like to get their opinion on the issue.
  Rossen: So postpone to next week?
  TabAtkins: Alternative is resolve pending objections
  fantasai: I don't understand enough to know if there might be
            objections
  fantasai: But I'm okay to resolve if it's clear that we might reopen

  RESOLVED: Change backdrop-filter's edgeMode to mirror, pending any
            objections

Received on Thursday, 9 November 2023 00:00:32 UTC