[CSSWG] Minutes Telecon 2023-08-23 [css-transitions] [css-grid] [css-flexbox] [css-text] [css-color]

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


CSS Transitions
---------------

  - RESOLVED: CSS Transitions 2 will have a FPWD

CSS Grid & Flexbox
------------------

  - Based on the discussion around issue #7387 (Providing authors with
      a method of opting into following the visual order, rather than
      logical order) the group is leaning toward removing
      reading-order: <integer> in favor of a more simplified approach.
      However, the newly proposed approach needs to be documented
      further to help work through the complications around reading
      order.

CSS Text
--------

  - RESOLVED: text-wrap becomes a shorthand for text-wrap-style and
              text-wrap-onoff, and only text-wrap-onoff is a longhand
              of white-space (Issue #9102: Move "balance | stable |
              pretty" out of text-wrap)

CSS Color
---------

  - RESOLVED: To use the actual displayed color when calculating
              contrast (Issue #8539: contrast-color() and gamut mapping)
  - RESOLVED: Pursue this approach (an MVP of contrast-color()) in
              level 5 (Issue #9166: `contrast-color()` MVP in Level 5)

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

Agenda: https://lists.w3.org/Archives/Public/www-style/2023Aug/0011.html

Present:
  Rachel Andrew
  Rossen Atanassov
  Tab Atkins
  David Baron
  Emilio Cobos Álvarez
  Elika Etemad
  Robert Flack
  Mason Freed
  Megan Gardner
  Simran Gill
  Paul Grenier
  Chris Harrelson
  Daniel Holbert
  Xiaocheng Hu
  Jonathan Kew
  Ian Kilpatrick
  Chris Lilley
  Peter Linss
  Eric Meyer
  Florian Rivoal
  Cassondra Roberts
  Jen Simmons
  Alan Stearns
  Nicole Sullivan
  Miriam Suzanne
  Bramus Van Damme
  Lea Verou

Chair: Rossen

Scribe: emeyer

  Rossen: Any new agenda items or changes to the given agenda?
  (none)

CSS Transitions
===============

Moving CSS Transitions 2 to FPWD
--------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6900

  <dbaron> https://drafts.csswg.org/css-transitions-2/#changes-fpwd
  <fantasai> ->
https://lists.w3.org/Archives/Member/w3c-css-wg/2023JulSep/0126.html
  dbaron: There's a bunch of stuff sitting in it for a while mostly
          about integrations with web animations
  dbaron: @starting-style rule and discrete animations and the
          transition-behavior property
  <TabAtkins> +1
  <astearns> +1 to FPWD
  <flackr> +1
  chris: No problem with saying FPWD is a delta
  <chris> +1
  Rossen: Any objections to FPWD for CSS-transitions-2?
  (none)
  <fantasai> +1

  RESOLVED: CSS Transitions 2 will have a FPWD

CSS Grid & Flexbox
==================

Providing authors with a method of opting into following the visual
    order, rather than logical order
-------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7387#issuecomment-1640556638

  rachelandrew: The link in the minutes goes to a comment from the F2F
  rachelandrew: I'm proposed a simplified approach for authors to
                follow the reading order rather than the document order
  rachelandrew: We're suggesting to remove the reading-order integer,
                written up in #8589
  <fantasai> -> https://github.com/w3c/csswg-drafts/issues/8589
  rachelandrew: I got some author feedback and this seems to be good
  rachelandrew: We'd keep reading-order: auto and reading-order-items
                property
  rachelandrew: The latter would let you explain your intention for
                reading order
  <rachelandrew>
https://developer.chrome.com/blog/reading-order/#proposed-solution

  jensimmons: Can you summarize where we are now? How would this work?
  rachelandrew: If you have a randomized layout, like dense packing,
                people usually want the browser to follow the layout
                rather than the source order
  rachelandrew: This happens with masonry as well
  rachelandrew: With auto, try to follow the reading order rather than
                the DOM order
  rachelandrew: For things that are non-randomized, pretty much
                everything else, like grid and flex layouts with
                obvious order, the idea there is to keep the reading
                order auto on the items, but on the parent you do
                reading-order: items
  rachelandrew: So if you're reversing things in flex, you might say
                reading-order-items flex-flow
  rachelandrew: In grid, you could say reading-order-items grid-row
  rachelandrew: We realized even if you've laid out the items, it's not
                always obvious what the correct reading order should be
  rachelandrew: We think this should solve both these cases
  <lea> Coming to this late, but what are the use cases beyond a)
        reading order = document order b) reading order = visual order.
        The integer syntax seems very low-level for the vast majority
        of cases to me, but again, I'm probably missing a lot as I
        haven't followed this

  TabAtkins: I think the presence of reading-order: auto is a leftover
             from reading-order: <integer>
  TabAtkins: I think we can drop that and rely on reading-order-items,
             is that right?
  rachelandrew: I think so, yeah
  TabAtkins: Previously everything was auto by default unless
             overridden with an integer
  TabAtkins: Now that we don't have an everything could be
             reading-order-items
  rachelandrew: Yeah, I'm keen to remove things that were canned
  <iank> +1 to tab

  emilio: I was going to make that same point
  emilio: But this also seems to conflict with making 'display:
          contents' focusable
  emilio: I think that needs some more thought
  Rossen: Is this in the presence of reading order??
  emilio: Yeah, you need to define the order display: content elements
          appear
  rachelandrew: I think for any of these methods, we probably need an
                issue for this
  rachelandrew: No matter what we do here, that's going to be a problem
  Rossen: Please open an issue for this and link it to this one
  <fantasai> file against display-5
  emilio: Will do
  emilio: This is pretty blocking for me

  PaulG: A question about RTL
  PaulG: Is there a plan to support RTL for reading order?
  rachelandrew: I don't think this would change that, that would be the
                flow order
  rachelandrew: This shouldn't affect that
  Rossen: Agreed, we're talking about the flex or grid direction
  rachelandrew: This follows whatever the flow direction is
  PaulG: My main concern was in random situations, where the assumption
         seems to be LTR
  rachelandrew: If you're in a flex layout, the default is LTR in an
                LTR language, and RTL in RTL languages
  rachelandrew: So I don't think this would be an issue as presently
                laid out
  fantasai: What is the value space of this property? In the writeups I
            found, there were examples of values, but I didn't see a
            definition
  rachelandrew: We haven't written a spec yet, we're trying to see
                whether we could achieve what authors want without
                needing to explicitly define each item in the order
  rachelandrew: There was a bunch of suggestions in the original #8589,
                but I don't think we've written everything out, which
                we'd need to do if this is the approach we want to take
  <TabAtkins> I think proposal is `reading-order-items: normal | flex
              [ visual | flow ] | grid [ rows | columns ]`
  <fantasai> ok, is that written anywhere other than your IRC
             comment? :)
  <TabAtkins> nah, this is distilling the examples

  fantasai: It will be easier to understand the proposal if there was a
            little more formal writeup
  fantasai: Second question, how does this interact with the `order`
            property?
  rachelandrew: I believe we intend to follow that property if there's
                an explicit `order` value
  TabAtkins: This would change the tiebreaker behavior
  <TabAtkins> oh wait I think I got confused
  <TabAtkins> never mind, order just changes layout, and then
              reading-order keys into that layout
  fantasai: Right now, `order` does NOT affect reading order, its
            purpose is to allow breaking reading order from layout order
  fantasai: Are you intending to break that?
  fantasai: Are we using keywords that are going to implicitly change
            that behavior?
  rachelandrew: I think if you set the `order`, why would you use
                `reading-order`? Using `order` diverges on purpose.
  rachelandrew: The only reason you use `reading-order-items` is if you
                want to follow the layout
  rachelandrew: You can still use `order` as it is now, and wouldn't
                use `reading-order-items`
  rachelandrew: This is when you don't want things out of sync
  rachelandrew: I don't think that's an issue
  rachelandrew: We do need to define what happens if there's a conflict
                here
  <iank> +1 to Rachel

  jensimmons: I can imagine a use case where the DOM order is great for
              desktop but on mobile you use `order` to rearrange
  jensimmons: You might want to apply `reading-order-items` to the
              mobile layout to fix the accessibility
  fantasai: or not, whether to match order depends on what you're doing
  Rossen: Let's get to the queue and close this at half past

  <lea> fantasai: re:order vs visual-order, what if order becomes a
        shorthand of both?
  <fantasai> lea, see https://drafts.csswg.org/css-display-4/#display-order
  <fantasai> lea, but that doesn't fix the historic problem...
  <lea> fantasai: thanks! "They are not intended (and should not be
        used) to apply semantic reordering operations." I'm confused,
        isn't semantic reordering the whole point of reading-order?
  <fantasai> lea, e.g. don't use them for "I'm going to sort this
             column by last name"
  <fantasai> lea, reading order is still a _presentation order_
  <lea> fantasai: in that case, I do not understand what reading-order
        is, which I suspect means it will be incredibly hard to explain
        it to authors :/

  florian: I'm not sure here, if we only have reading-order-items, then
           there's only two options: follow visual layout, or don't
  florian: The proposed values are all variants of “follow the visual
           order”
  florian: It just depends on the direction you take in following
           visual order
  rachelandrew: What I would say is there are things that need to be
                worked out with this
  rachelandrew: What I'd like to ask is the original question, which is
                do we need the reading-order integer?
  rachelandrew: Are there use cases that absolutely require integer? Or
                can we simplify and then start to formally define how
                to resolve conflicts and such?
  florian: Based on what you just said, I suspect we don't need the
           integer
  florian: I still think this is not going to be easy to define;
           there's a lot of subtlety here
  florian: There are a bunch of different ways you could iterate
           through a grid
  florian: Not sure if we'll only need a few values, or a whole lot of
           values to handle overlaps and such, or if we actually need
           integers
  Rossen: Let's redirect into the issue, as there's still quite a bit
          to be worked out

  Rossen: Do we have enough conviction and understanding to resolve on
          dropping the integer value?
  rachelandrew: I don't think this is blocking, because if we drop
                <integer> now, we could add it back later
  rachelandrew: We could say we don't think we need it, and be open to
                adding it back in

  jensimmons: I think it would be really helpful to have a document
              where everything's all in one place
  <TabAtkins> https://github.com/w3c/csswg-drafts/issues/8589#issuecomment-1690278747
  <TabAtkins> (I think the above captures the rough draft proposal.)
  <fantasai> -> https://drafts.csswg.org/css-display-4/#display-order
  fantasai: We do have a draft in the `display` spec
  fantasai: I don't want to take a resolution because I don't
            understand what we're trying to do here. I would like a
            description of what we're trying to do, not three examples
            and "extrapolate what that means"
  Rossen: Fair
  Rossen: I think the conversation captures that we're leaning toward
          not having an <integer>, but once the proposal is clear we
          can read and take a resolution

CSS Text
========

Move "balance | stable | pretty" out of text-wrap
-------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/9102

  fantasai: Originally, text-wrap had two values, wrap and no-wrap
  fantasai: Since then, we've added various values for not just whether
            wrapping occurs, but what KIND of wrapping occurs
  fantasai: The more we add, the worse it becomes that this is mixed
            with wrapping and how
  fantasai: Some of the values should cascade, and some shouldn't
  fantasai: I would like to split `text-wrap` into two properties
  fantasai: One takes wrap and no-wrap, and the other takes all the
            others
  fantasai: Since `text-wrap` is shipping, I'm happy to dedicate it to
            how things are wrapped, and move the wrap/no-wrap to
            another property

  florian: Completely agree
  florian: We do have some tension in the naming
  florian: How bad is it to ask Chrome to break here
  florian: When they asked about shipping, they said it would be okay
           to rename later
  florian: I would prefer that we kept `text-wrap` for yes/no on
           wrapping at use `wrap-style` for the others
  <fantasai> wrap-style vs text-wrap would indeed be more
             understandable if that's possible ...
  iank: I think the situation has changed from that time period
  iank: I don't know if renaming is viable
  florian: This is going to make it more difficult to do this sort of
           thing in the future
  florian: We asked explicitly if it would be okay, and now it's been
           walked back

  lea: I agree these should be separated, and we should have more
       granular control over wrapping
  lea: I don't know that we need to break backwards compatibility to
       do that
  lea: values like balance or pretty are useless without wrapping, so
       it seems like a win if setting text-wrap to one of these values
       would also enable wrapping (if you have no provided a separate
       wrap/no-wrap keyword)
  lea: If you say `text-wrap: balance`, we can be smart and also set
       `wrap`
  fantasai: What you're proposing is we keep `text-wrap` as a shorthand
            that incorporates text-wrap-style and text-wrap-onoff,
            where text-wrap-onoff is also a longhand of white-space?
  lea: Yes
  fantasai: That could work, we need a better name than
            `text-wrap-onoff`
  Rossen: Let's bikeshed the name offline

  jfkthame: I wanted to add something slightly orthogonal
  jfkthame: balance really needs to be separated from stable versus
            pretty
  florian: I'm unconvinced, it's not obvious to me you'd want a stable
           balance that becomes stateful
  <fantasai> +1 florian
  florian: Balance is a style of wrapping, it's not clear that I want
           greedy balancing or whatever other options we could have
  jfkthame: The spec text suggests balance is only attempted up to a
            limited number of lines, and it then falls back to wrap,
            but what kind of wrapping?
  florian: We could fix this in the spec; do you mean that if you set
           balance, we ignore the style of wrapping unless we fall back?
  jfkthame: You could specify stable or pretty or balance, but if you
            do balance and then there's a fallback, what happens?
  florian: So you're saying you want balancing, but you want to be able
           to choose how you fall back.
  jfkthame: I'm not entirely sure
  florian: I suspect what you want is orthogonal so it's probably find
           as a pullout
  <lea> There is a continuum between balance and greedy wrapping.
        Authors often want some degree of balancing but less
        "draconian" than full-blown balance. Not sure if the solution
        is to separate balance out, or to just provide more control
        over exactly how the balancing happens

  fantasai: I don't see that these need to be separate properties; we
            could allow multiple keywords
  fantasai: I think balancing is interesting because an implementation
            could use different approaches
  fantasai: We want flexibility for user agents
  fantasai: I do really like Lea's proposal and it seems to address
            cascading problems we have with the current setup
  fantasai: Propose text-wrap becomes a shorthand for two properties,
            text-wrap-style and text-wrap-onoff
  fantasai: ONLY text-wrap-onoff is a longhand for whitespace
  fantasai: (names to be bikeshedded)
  <fantasai> PROPOSED: text-wrap becomes a shorthand for
             text-wrap-style and text-wrap-onoff, and only
             text-wrap-onoff is a longhand of white-space
  florian: Is the complete value space of text-wrap the same as
           currently?
  fantasai: Yes
  <fantasai> text-wrap: <'text-wrap-style'> || <'text-wrap-onoff'>
  <fantasai> text-wrap-onoff: wrap | nowrap
  <fantasai> text-wrap-style: stable | pretty | balance | auto | etc.
  Rossen: Hearing no objections…

  RESOLVED: text-wrap becomes a shorthand for text-wrap-style and
            text-wrap-onoff, and only text-wrap-onoff is a longhand of
            white-space

CSS Color
=========

contrast-color() and gamut mapping
----------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/8539

  chris: We can either say you do contrast between the color you can
         see and another color, or we say it's between something that
         might not be a color and some other color
  lea: We need to hear from implementors whether this is possible
  chris: I did touch on that in the issue; we don't expose the used
         value of a color and don't need to for this
  lea: Not concerned about fingerprinting, I'm concerned about whether
       all ODes can do this

  TabAtkins: They'll have what they used to present to the monitor
  lea: Do colors get gamut-mapped to something they can present?
  TabAtkins: Not sure
  lea: We could conditionally resolve, saying we'll do something if
       it's actually implementable

  chrishtr: What's the actual proposal here?
  chris: To use the actual displayed color when calculating contrast
  <TabAtkins> (As much as that information is available.)
  <fantasai> +1 to the proposal
  chrishtr: So gamut mapping should be taken into account when doing
            this?
  lea: The rationale being otherwise we could get calculation between
       two non-existent colors. Otherwise you might decide there's
       enough contrast, but after gamut-mapping there isn't.
  Rossen: It seems like this makes the most sense
  Rossen: The question is whether you can get those, and how much work
          it will take to do so
  Rossen: In terms of intended functionality, what Chris is proposing
          here makes total sense
  Rossen: If implementors say this is impossible, we should drop the
          entire thing
  <fantasai> +1
  chrishtr: I'd like to wait a week to resolve
  Rossen: That objects to what makes sense
  <lea> +1
  Rossen: So let's resolve on what makes sense, and if it turns out to
          be impossible, we revisit

  RESOLVED: To use the actual displayed color when calculating contrast

`contrast-color()` MVP in Level 5
---------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/9166

  lea: contrast-color() is supposed to give an actual contrast
  <fantasai> ->
https://github.com/w3c/csswg-drafts/issues/9166#issuecomment-1688124086
  lea: Because there are so many issues to figure out, in practice what
       happened was a year floated past and nothing really happened
  lea: How about we ship a simple `contrast-color()` that take one
       color, the background, and returns either black or white, as
       fantasai proposed
  lea: This sidesteps a number of things
  lea: I think we need a number of levels to get at a full function
  <TabAtkins> +1 to this scope reduction
  lea: If we scope it down that far, we can get something out
  lea: The only point of contention was, how predictable should the
       return color be?
  <chris> I strongly prefer the black-or-white MVP not the
          anything-goes one
  <fantasai> +1 to lea's position
  lea: Should only black and white be allowed, or can UAs have room to
       return other values?
  <chris> +1 to lea's proposal

  Rossen: We're over time, so, are there any objections to pursuing
          this in L5?
  <florian> +1 to do it, preference for black/white only
  <fantasai> https://github.com/w3c/csswg-drafts/issues/9166#issuecomment-1666863256
  <fantasai> Let's do it
  (no)

  RESOLVED: Pursue this approach in level 5

  <chrishtr> so is the resolution to allow not black and white, but
             prefer them?
  <lea> chrishtr: we did not resolve on the return value yet, only that
        we agree to pursue an MVP in that general direction (though in
        the chat I do see some consensus for the black/white option)

Received on Thursday, 24 August 2023 23:33:39 UTC