[CSSWG] Minutes Telecon 2022-11-09 [css-shapes-1] [css-view-transitions] [css-contain]

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


Scheduling
----------

  - Next long call is scheduled on Nov 30th
  - Please reply to the email on the private list about if we should
      cancel the week of 21 November (US Thanksgiving)
  - jensimmons and fantasai are organizing a workshop next Monday on
      Inline Layout:
https://fantasai.inkedblade.net/style/events/inline-workshop

Co-authoring CSS Design Principles with the TAG
-----------------------------------------------

  - Please add feedback and thoughts on the model to collaborate with
      TAG to the github issue (Issue #7835: Co-authoring CSS Design
      Principles with the TAG).

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

  - RESOLVED: Publish css-shapes-1 CRD (Issue #6450: Updated CR of CSS
              Shapes? Administrative Tracker For external review/
              publication tracking issues)

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

  - RESOLVED: Accept proposal (Issue #7956: Behaviour of the finished
              promise)
  - RESOLVED: view-transition-image-pair [is the property name] (Issue
              #7960: CSS selector keywords)
  - RESOLVED: UA styles on the pseudo-DOM stay in sync with author DOM
              for any developer observable API (Issue #7812: When to
              update the pseudo element styles)
  - RESOLVED: Elements under content-visibility:auto element that skip
              its contents are not eligible to participate in view
              transition (Issue #7874: content-visibility: auto
              elements are relevant to the user during a transition)

CSS Contain
-----------

  - RESOVLED: Change to present tense for
              ContentVisiblityAutoStateChanged (event and object)
              (Issue #7603: Incomplete event definition for
              ContentVisibilityAutoStateChanged)

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

Agenda: https://lists.w3.org/Archives/Public/www-style/2022Nov/0005.html

Present:
  Rachel Andrew
  Jake Archibald
  Adam Argyle
  Rossen Atanassov
  Delan Azabani
  David Baron
  Oriol Brufau
  Tantek Çelik
  Emilio Cobos Álvarez
  Yehonatan Daniv
  Elika Etemad
  Robert Flack
  Paul Grenier
  Daniel Holbert
  Brad Kemper
  Jonathan Kew
  Chris Lilley
  Alison Maher
  Morgan Reschenberg
  Florian Rivoal
  Khushal Sagar
  Jen Simmons
  Bramus Van Damme
  Lea Verou

Regrets:
  Delan Azabani

Chair: Rossen

Scribe: fantasai

Scheduling
==========

  Rossen: This is about 1/5 the number of Agenda+ issues. We will need,
          to and will, have another long call at the end of this month
          on November 30th
  <astearns> not next week, week after (Nov 23)
  Rossen: I sent an email to the private list about week after next
          week, US holiday week, asking to see if people will be around
          and whether to cancel next week or not

  Rossen: Any other topics?
  fantasai: 2 things: First- Jen and I are organizing a workshop on
            inline layout next Monday
  <jensimmons> https://fantasai.inkedblade.net/style/events/inline-workshop
  fantasai: Second thing: can the chairs add the "needs edits" label
            when we resolve on stuff
  fantasai: Workshop is going to read through the spec top to bottom,
            make sure people understand, see if it addresses their use
            cases, and maybe find issues

  Rossen: Any other topics?

Co-authoring CSS Design Principles with the TAG
===============================================
  github: https://github.com/w3c/csswg-drafts/issues/7835

  lea: As many aware, TAG maintains Web Platform Design Principles
       document
  lea: including principles for CSS
  lea: Down the line will add principles to help authors with their APIs
  lea: There is overlap between TAG and CSSWG, but need tighter
       integration
  lea: and e.g. fold in the documents fantasai is maintaining
  lea: Some ideas that came up was, maybe there could be TAG-CSS TF
  lea: or maybe have a label in our repo that the CSSWG monitors
  lea: open to whatever ideas

  Rossen: We already have a TAG/CSSWG TF called Houdini
  lea: Houdini has a different focus, though. Can have multiple TFs
       with different focus
  Rossen: Also my way of nudging group, that we have a bunch of things
          we still need to discuss for Houdini :)
  Rossen: I think it's an opportunity for the CSSWG to engage and help
          us drive better clarity
  Rossen: and help implementers and authors
  Rossen: Design principles in TAG have had good engagement, and
          community seems to be fairly responsive to what's in there
  Rossen: so huge +1

  fantasai: The url you're linking to isn't a w3.org url
  fantasai: github urls might not be around at various points, so
            please get in the habit of using the w3.org URL. If its out
            of date, update it
  <lea> W3C URL: https://www.w3.org/TR/design-principles/

  fantasai: Design principles: there's a document that I maintain on
            the wiki
  fantasai: maybe we can take that as a list of bugs to fix
  <fantasai> https://fantasai.inkedblade.net/weblog/2019/designing-css
  fantasai: There's also this article^
  <florian> https://wiki.csswg.org/faq
  florian: Also some interesting material to recycle in the FAQ, goes
           into why CSS works the way it does

  lea: I just wanted to add, one framing is that we're using this as a
       pilot for how we work with other WGs more broadly
  lea: Plan is to eventually collaborate with more WGs, so whatever we
       decide should be more broadly applicable
  fantasai: we could follow model of internationalization wg
  fantasai: file issues in multiple repos
  <lea> +1 to fantasai's idea
  fantasai: e.g. file issue in tag repo and tracking issue in csswg repo

  Rossen: Please comment on any ideas about scope or work mode in the
          issue

CSS Shapes
==========

Updated CR of CSS Shapes? Administrative Tracker For external review/
    publication tracking issues
--------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6450

  chris: I'm whining about this thing not being published since 2014
  chris: I went through all the commits since 2014 and updated the
         Changes list
  chris: added implementation, split privsec section
  chris: I think this is ready to go

  astearns: Thanks so much for doing that work
  astearns: My preference would be to get the edits for reconciling
            with gradient syntax first, but since you've done this
            work, I'm happy to publish now and republish later with the
            edits
  chris: Sounds good to me
  chris: If you thought those edits would be timely that would be fine,
         but if you think it'll confuse people
  astearns: No, I am now good for publishing and I can't guarantee that
            my edits will be timely
  Rossen: +1, thanks for the help chris this is great
  Rossen: Objections to publish CRD?

  RESOLVED: Publish css-shapes-1 CRD

  Rossen: Again, thanks Chris, for doing the work

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

Behaviour of the finished promise
---------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7956

  JakeA: When you start a view transition, you get an object back that
         has some promises that you can use to track various things
  JakeA: one of these is the "finished" promise
  JakeA: question is, what should happen if the DOM change is
         successful, but the transition is not?
  JakeA: transition could not be successful in the case of
         misconfiguration, e.g. duplicate IDs
  JakeA: could also mean that transition is abandoned halfway through,
         because more important transition coming in
  JakeA: Originally spec would reject unless the transition gets to
         final frame
  JakeA: goes through the whole duration of the transition
  JakeA: Proposing that it finishes whenever it gets to the end state
  JakeA: we were influenced by animation.finish()
  JakeA: and animation.finished which will resolve
  <flackr> +1
  JakeA: Desire to change this came after showing them the APIs, and
         asking them to guess what it would do
  JakeA: that seemed to be where people were leaning :)

  Rossen: +1 for taking the time
  Rossen: and alignment with animations is awesome
  Rossen: any objections?
  <bramus> +1

  RESOLVED: Accept proposal

  JakeA: Yes, animation needs to have stopped (even if not completed),
         and user is looking at new state

CSS selector keywords
---------------------
  github: https://github.com/w3c/csswg-drafts/issues/7960

  khush: This is about resolving on the selector keywords
  khush: last meeting we got through everything except #4
  khush: This is a pseudo-element for providing isolation for blending
         the old and new snapshots
  khush: it's a leaf of the tree, only has old and new snapshots
  khush: In terms of suggestions for naming, using word 'effect' or
         'image', something to indicate that only nodes under here are
         replaced elements
  khush: and need to disambiguate from view-transition-group() which
         can change position/size, and can have other view-transition
         elements underneath it
  khush: if we go with view-transition-image-foo, what's foo?
  khush: Con of using "set" is that it doesn't indicate that DOM order
         matters, "list" makes it look like any number of elements but
         can only have two, and "pair" is nicest but sometimes there's
         only one element
  khush: e.g. if DOM element only exists on one side
  khush: but if we're okay with that, my proposal is
         view-transition-image-pair

  fantasai: +1 to using a pair. conceptually you have two things being
            transitioned independently
  fantasai: wrt image, I'm less sure
  JakeA: Tab wanted view-transition-images for brevity, but people
         didn't like plural
  fantasai: for brevity, could also drop the "image" part and just say
            "view-transition-pair"
  khush: "view-transition-group" and "view-transition-pair" not
         immediately obvious what's the difference
  khush: but I could go either way, "view-transition-pair" vs
         "view-transition-image-pair"
  Rossen: I think group vs pair will clash for many non-native
          speakers, but wouldn't object
  JakeA: It's not something folks will select a lot, people will select
         it ... I don't know, if they want to remove isolation for some
         reason?
  Rossen: Even more reason to use a longer name
  <flackr> Agree with Rossen, I have a slight preference for
           view-transition-image-pair for clarity

  Rossen: Proposed to resolve on view-transition-image-pair
  <JakeA> +1 to image-pair
  <khush> +1
  <lea> as a non-native speaker, I don't think group and pair are that
        frequently confused. Are there languages that do not
        distinguish between group and pair?
  <ydaniv> +1 to image-pair
  Rossen: Objections?

  RESOLVED: view-transition-image-pair

When to update the pseudo element styles
----------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7812

  khush: Resolution in the last meeting, recap
  khush: Feature creates a pseudo-element which has snapshot and
         position from new DOM
  khush: live, in sense that new DOM's painting changes will be
         reflecting
  khush: also if position / layout changes, will be reflected
  khush: keeping these two in sync requires step where we do layout on
         author DOM, and then generate a UA stylesheet
  khush: do we conceptually see this UA style sheet generation as part
         of style resolution
  khush: e.g. if author changes something about the DOM element, should
         they get those changes reflected in the pseudo-element if they
         query via script?
  khush: or do we treat this as an explicit step that's part of the
         feature, and there's a specific point where we get these two
         things synced up
  khush: Last time we resolved on two explicit points
  khush: this is only relevant if dev queries using script
  khush: two options are:
  khush: 1. Always keep in sync, treat as part of style resolution. If
         you call getComputedStyle(), we'll have to resolve style,
         generate styles and give an answer
  khush: 2. Defined point on a frame, so you'll get stale data,
         whatever was computed in the last frame
  khush: I think keeping in sync is more correct, but it's also harder
         because you have to do this loop to resolve style
  khush: and we don't have a strong use case for why author would need
         this to always be in sync
  khush: so my suggestion is go with 2 defined points where we do this
         step
  khush: If they query after updating DOM, they'll get stale data
  khush: and in the future if we want we can make it more correct
  khush: so that all updates are guaranteed to reflect correctly

  flackr: My preference is for reflecting up to date values, because
          that's what will be presented on screen
  flackr: so more consistent
  flackr: We only have to do this if the author queries the style, so
          most of the time we won't be doing this extra style update

  emilio: What's the use case for querying these pseudo-elements, and
          is there a defined answer assuming can target elements in the
          pseudo tree?
  emilio: Can't you write selectors that match multiple of these
          elements?
  khush: Use case is developer customization, could use information
         about what the element's transform or size is
  khush: can query existing API
  khush: element's size will be its border-box size
  khush: Some things not available now, e.g. ink overflow bounds
  khush: unless we expose no API for it
  khush: I don't have any strong use case, just a speculative maybe you
         want to do a funky animation thing
  emilio: My point is there's no good answer, if you write ::part() and
          that something matches 2-3 elements, what does
          getComputedStyle return?
  khush: getComputedStyle has option to query an exact pseudo-element,
         so you can pass ::view-transition-group(name) and get from
         that element
  emilio: A pseudo-element selector can match multiple pseudo-elements,
          so is it well-defined what happens?
  khush: Similar discussion for web animations API, if it matches
         multiple pseudo-elements, treat it like querySelector and
         return the first one
  emilio: So well-defined, ok
  emilio: If there's a good answer, then sure
  emilio: I assume if it works for web animations, making it work for
          getComputedStyle also makes sense

  khush: I think flackr mentioned he preferred if we get these in sync
  khush: Also my ideal preference, but would it be ok for
         implementation complexity if we didn't do that for now, and if
         a use case do it right later?
  flackr: If you don't do that, values would always be a frame out of
          date
  flackr: wouldn't be able to use them
  khush: Answer for first frame is correct
  khush: after UA does construction
  khush: It's only if you change as part of RAF as part of ??
  khush: We don't retarget animations now anyway, so you'll get visual
         jumps
  flackr: I've seen authors do things in RAF every frame, to manually
          position other elements in response to frames

  vmpstr: My preference is not keeping it always up to date, it's
          because there's a distinction between keeping styles
          conceptually up to date
  vmpstr: but this isn't technically style, but UA style sheet that
          needs to be updated
  vmpstr: ensuring that these values are kept up to date as style is
          unnecessary, other than point flackr raised
  vmpstr: so I would preferred to have a defined step and update
          rendering, this is when the stylesheet is updated to reflect
          DOM changes
  vmpstr: reason is, from implementation perspective, we would have to
          force style and layout to get this information to put in
          stylesheet and it's a lot more forced work
  vmpstr: seems a lot more rendering needs to be forced in these cases

  fantasai: Why not allow both?
  fantasai: text wrapping
  fantasai: Make it a quality of implementation issue
  fantasai: and if it becomes a problem, people can file bugs against
            the implementations
  fantasai: to improve their fidelity
  <flackr> sgtm to leave it up to implementer
  khush: I think for wording, use "should"
  <flackr> This is also similar to the way reading scroll position may
           be more or less out of sync on diff browsers
  <khush> UA styles on the pseudo-DOM should stay in sync with author
          DOM for any developer observable API
  emilio: I think this is quite different from text-wrapping, it's an
          API you're asking a question
  emilio: I think we can't do hard thing if we do the hard thing if we
          do the easy thing at the beginning?
  emilio: People will rely on whatever answer you give them
  fantasai: But if you give them more accurate answers, would that be a
            problem?
  emilio: Maybe relying on perf characteristics
  emilio: If in a loop, and then changing DOM, implicitly relying on
          existing behavior or else stuff becomes super slow
  emilio: maybe I'm being too pessimistic...
  emilio: My preference would be to define one answer
  Rossen: More correct and harder way?
  emilio: Don't particularly care. Do understand the implementation
          complexity. Also don't see a lot of use cases for this to
          begin with
  Rossen: I want us to move forward here, take a resolution that's
          going to unblock us quicker
  <flackr> I suppose if we do the easy thing first we can always try to
           change it to the more correct thing and consider the compat
           risk then

  Rossen: Going back to original proposal, that was for the easier one
          which we can get to basically go to market quicker
  Rossen: Get implementation experience and feedback, that's initial
          ask?
  khush: That would be nicer, that said my proposal was on the
         assumption that this would be easy to change later
  khush: that is, if we make API more correct we would not have a
         compat risk
  khush: but if we have a compat risk, then I'm ok to do the harder
         thing first
  Rossen: From point of view of API and its evolution, taking scoped
          resolution here doesn't preclude us doing better later
  Rossen: our decisions today are open to improvement tomorrow
  khush: I didn't quite follow, what are we resolving on?
  Rossen: The easier one
  khush: Emilio was concerned changing later would be bad for compat
  emilio: I think so
  emilio: since these are relatively expensive updates
  emilio: it's very easy to depend on not doing hard work
  Rossen: If I'm hearing, you want to do harder work now now
  emilio: I don't mind which we choose, as long as we choose one
  khush: If we have to make one choice right now, and given uncertainty
         about valid use case, we prefer developer ease over
         implementer ease so we do harder thing first
  emilio: No strong opinion on which one
  emilio: My point is, I think if we start with easy one, we can't
          switch to hard one
  emilio: not leave it up to UA or future
  emilio: let's just decide what we want
  emilio: I've no strong opinion, but khush seems to think harder one
          is better for devs

  <khush> UA styles on the pseudo-DOM stay in sync with author DOM for
          any developer observable API
  khush: proposal ^

  RESOLVED: UA styles on the pseudo-DOM stay in sync with author DOM
            for any developer observable API

CSS Contain
===========

Incomplete event definition for ContentVisibilityAutoStateChanged
-----------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7603

  oriol: This issue covers different things, but only want to discuss
         name of the event
  oriol: Contain introduced ContentVisiblityAutoStateChanged event
  oriol: This is inconsistent naming, since other events they use the
         present tense and this is using past tense
  oriol: There's even a proposed design principle in TAG about naming
         events about avoiding past tense
  oriol: just some legacy events are using past tense
  oriol: So should we align with this design principle?
  oriol: This feature has already shipped in Blink in July or such
  oriol: but maybe it could still be compatible to change or maybe
         Blink could support both for awhile or something like that
  oriol: Firefox is implementing now, and WebKit has not implemented
         this property yet
  <fantasai> +1 for consistency

  florian: Do you want to change the name of the event and the object
           type or just the event?
  oriol: It should be consistent
  <flackr> I *think* this is the use counter for registrations:
           https://chromestatus.com/metrics/feature/timeline/popularity/4328

  <vmpstr> https://chromestatus.com/metrics/feature/popularity#ContentVisibilityAutoStateChangedHandlerRegistered
  vmpstr: On Chrome status there is 0.048% that register a handle for
          this event
  vmpstr: It's a low usage but it's non-zero
  Rossen: Is that above the threshold? Wasn't it 0.03%
  vmpstr: Justification is that the state change has already happened,
          different from click event where you can preventDefault
  vmpstr: but that's why it was named in the past tense
  oriol: Form controls also have change event for afterwards, can't
         prevent change, and this event is in present
  <flackr> Also animationstart, animationend, transitionstart,
           transitionend
  * fantasai suggests changing
  <emilio> Yeah, lots of precedents there, `visibilitychange` /
           `pageshow` / etc
  <emilio> +1 for changing

  Rossen: Can we resolve to change, and if we get feedback strongly
          that this will be a problem, we can revisit?
  Rossen: from spec point of view, right thing to resolve is in favor
          of change
  <fantasai> +1

  RESOVLED: Change to present tense for
            ContentVisiblityAutoStateChanged (event and object)

CSS View Transitions (continued)
================================

content-visibility: auto elements are relevant to the user during
    a transition
-----------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7874

  vmpstr: content-visibility: auto not user relevant, they don't update
          rendering, so we can't tell if they've been tagged with a
          view transition name
  vmpstr: so we'd like to say that such elements that are not relevant
          to the user can't participate in the view transition because
          they're far enough offscreen
  flackr: My preference was element can participate, because could move
          on screen, but none of its descendants
  vmpstr: Sorry, meant the subtree elements cannot be detected as
          participating in this transition
  vmpstr: content-visibility: auto only affects content
  flackr: With that correct, good with that

  Rossen: Proposal?
  vmpstr: Elements under content-visibility:auto element that skip its
          contents are not eligible to be be discovered as
          participating in view transition
  <flackr> +1
  florian: Seems reasonable
  <fantasai> +1
  Rossen: Objections to resolving on that edited proposal?

  RESOLVED: Elements under content-visibility:auto element that skip
            its contents are not eligible to participate in view
            transition

  Rossen: Reminder to reach out on private list if you have opinions
          about Thanksgiving week call

Received on Thursday, 10 November 2022 00:38:13 UTC