[CSSWG] Minutes Telecon 2022-06-08 [cssom-view] [css-contain] [css-text]

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


CSSOM View
----------

  - The polls run on twitter for the name change in issue #7317 (Rename
      Element.isVisible to Element.isHidden?) produced reasons against
      both names. checkVisibility was also suggested and had mixed
      support. Bikeshedding will continue on github to collect ideas.

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

  - The concerns about a previous resolution explained in issue #7066
      (Revisit decision to make 'style' the default 'container-type')
      were around both author clarity and performance issues in some
      cases.
      - Most of the group's focus was on ensuring that the property
          works well for the authors.
      - There was a new proposal to use longhands that needs to be
          discussed more as a potential solution before the group tries
          to reach a resolution.

CSS Text
--------

  - RESOLVED: Keep 'distribute' keyword alias (Issue #7322: Consider
              removing distribute value for text-justify from the spec)
  - RESOLVED: text-align: match-parent computes to 'start' on the root
              element (Issue #6542: text-align: match-parent on the
              root element with direction: rtl doesn't match browsers)

===== FULL MINUTES BELOW ======

Agenda: https://lists.w3.org/Archives/Public/www-style/2022Jun/0007.html

Present:
  Rachel Andrew
  Rossen Atanassov
  David Baron
  Tantek Çelik
  Emilio Cobos Álvarez
  Elika Etemad
  Simon Fraser
  Megan Gardner
  Chris Harrelson
  Daniel Holbert
  Brian Kardell
  Jonathan Kew
  Vladimir Levin
  Rune Lillesveen
  Alison Maher
  Jen Simmons
  Miriam Suzanne

Regrets:
  Tab Atkins Bittner
  Robert Flack
  Chris Lilley
  Lea Verou

Scribe: fantasai
Scribe's scribe: emilio

CSSOM View
==========

Rename Element.isVisible to Element.isHidden?
---------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7317

  chrishtr: Bringing up naming of isVisible/isHidden
  chrishtr: Last week we resolved to change to isHidden
  chrishtr: but also spun up some Twitter polls
  chrishtr: Tab's poll indicated isVisible got more votes
  chrishtr: Jen's poll seemed inconclusive?
  <jarhar> https://twitter.com/jensimmons/status/1532137408418004994
  <vmpstr> https://twitter.com/tabatkins/status/1532138513704943617
  chrishtr: Also original reasons for isVisible
  chrishtr: basically, doesn't guarantee it's visible
  chrishtr: There's some conflicts with isVisible idea from
            IntersectionObserver
  chrishtr: And conflicts with element.hidden
  chrishtr: So that's the rundown
  chrishtr: There's data both ways, so maybe leave the way it is?

  fantasai: There's also a comment suggesting checkVisibility
  fantasai: Maybe that would be possible?
  fantasai: I think the mixups between isVisible/isHidden in the
            twitter poll make me think we need to do a bit better
  fantasai: and in the issue
  emilio: Was going to say something along the same lines
  emilio: make it less confusing
  emilio: I'm not sure I'm satisfied with either isVisible or isHidden
  emilio: checkVisibility sounds reasonable
  <chrishtr> checkVisibility is fine with me too
  <smfr> not a fan of “check”
  fantasai: checkVisibility with args and defaulting to a set of argus
            would maybe be less confusing
  fantasai: you're checking for these specific things, not for total
            visibility
  <emilio> computeVisibility?

  Rossen: Maybe investigate longer? Is there any pressure for this?
  chrishtr: We'd like to implement in Chromium, so hoping we can come
            to an agreement
  Rossen: We have a name for now
  Rossen: I would say let's continue working in the thread,
          bikeshedding on the call not so helpful unless something
          comes up that's obvious
  Rossen: and don't have anything better at the moment
  Rossen: Sounds like you're going to start writing code, changing name
          should be fairly straightforward
  chrishtr: Have code written, want to ship it
  chrishtr: Don't want to ship something the group disagrees with
  fantasai: It's not so much about group disagreeing, it's about
            getting something we're confident that authors will find
            usable
  fantasai: and the current information we have indicates that we maybe
            don't have that yet
  fantasai: so I think we should work on it a bit more, so that when we
            ship, it's something authors find natural and easy to use

  Rossen: Should we continue to discuss here or take it back to the
          issue?
  Rossen: Suggest engaging on the issue
  Rossen: Let's collect ideas and organize them and take the winner

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

Revisit decision to make 'style' the default 'container-type'
-------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7066

  miriam: We've discussed this a few times, but the resolution we took
          last time need some clarification either way
  miriam: We resolved last time we talk to make every element a style
          container by default
  miriam: On the one hand, in this thread, it seems we feel confident
          that's a good choice in terms of author expectations in terms
          of style queries
  miriam: really helps for inherited properties, if you can assume that
          you always get the value from the parent
  miriam: If we stick with that direction, need to clarify what it
          means for being default
  miriam: Does that mean style is the default, but if set other type,
          would drop style type?
  miriam: More likely, would mean every container is a style container,
          always true of all elements don't have a value for it
  miriam: So if we want to stick with that resolution, need to clarify
          that this is how it works
  miriam: On the other hand, all three browser engines have commented
          that this would be a performance hit
  miriam: I'm not sure how we want to weigh those two things
  miriam: Allowing people to set them individually let's people control
          performance
  miriam: but if set style globally to get the behavior we want, then
          would have to juggle carefully your values because then it
          would get overridden when you try to set up other types of
          containers
  miriam: so we have a potential performance issue vs author usability
  Rossen: Want to know if implementers would clarify the exact
          performance implications

  futhark: I'm not sure we can say it's a performance issue in general,
           but in certain cases can get into one
  futhark: If you look at example I gave, where you have a universal
           first-child rule that queries a custom property... if you
           don't use container names
  futhark: you could query a custom property that only makes sense for
           certain parents in the document
  futhark: but in order to figure out that this custom property can
           cause invalidation of children, would have a lot of overhead
  emilio: Would make style queries evaluate against all elements by
          default, which is not amazing

  fantasai: I think the authoring usability problems are actually
            pretty severe
  fantasai: It's not too bad to require somebody who wants to use style
            queries to set this extra rule on all elements
  fantasai: but the fact that it becomes nearly impossible for the
            author to then juggle to different values
  fantasai: so that when they want to set a size container they also
            need to set style size instead of just style
  fantasai: that's very tricky and easy to get wrong
  fantasai: If you have multiple sets of libraries it's very easy to
            get conflicts
  fantasai: Only way to resolve that problem would be to split the
            container property into multiple boolean properties
  fantasai: in order to allow authors to turn them on and off
            independently
  fantasai: If we want to avoid making this the default we need to turn
            them into longhands
  fantasai: and I suspect most libraries would set style containment as
            a convenience to the author
  fantasai: and we're going to have to make these optimizations anyways
  fantasai: so if we end up having to make these optimizations I'd say
            we'd rather make it the default
  emilio: The problem with making style containment the default, that
          wouldn't solve the problem with conflicts right?
  fantasai: If we make it the default, it would always be a style
            container regardless of other containment set on it
  fantasai: same way list-item is always incremented, unless you
            explicitly say not to
  miriam: That's the clarification we needed if we went in that
          direction
  emilio: I don't quite get why style queries are useful
  emilio: It seems that regardless of what path we take, the initial
          value for container type should be 'none' and when we get to
          style queries, just make every element magically a style
          query container
  emilio: Does that sound like a reasonable description of what we're
          proposing?
  fantasai: I think so yes

  jensimmons: I'm still confused about the author experience here
  jensimmons: I think we'll teach everyone to use size queries for the
              next 2 years, and in that teaching they will be taught
              that you have to define your container
  jensimmons: your query will be against that container
  jensimmons: When style queries come along, I think authors will
              expect it to work the same way
  jensimmons: I think they will define a container on the root, or on
              the main div, or a side element, or whatever
  jensimmons: rather than * { everything }
  jensimmons: I agree that there's a problem with size queries and
              style queries both being set on the same element and
              accidentally overriding each other, and we can address
              that problem
  jensimmons: That's a flaw, maybe we can address it
  jensimmons: They're going to be designing components and dropping
              randomly in the page
  jensimmons: There's 2 components, sans-serif and then serif
              typography stuff, and want to query which one is set and
              query on that
  jensimmons: but this particular component is going in different
              places, so font-family is inherited through the tree
  jensimmons: so idk maybe answering question as I talk
  jensimmons: but maybe Miriam you can explain why we want to get away
              from the idea of defining container
  miriam: For non-inherited properties it would work fine to set the
          container and query it, but for inherited properties you
          always need to check the parent
  miriam: otherwise not getting an accurate idea
  miriam: You're generally always going to want to know the closest
          answer
  miriam: and it becomes very fragile if you have to set that explicitly
  miriam: Every time I want to check whether font is italic, I have to
          make sure the parent has the right style container type
          before I can find out whether I'm inheriting italics
  miriam: and I think that's one of the key use cases
  miriam: if the parent's italic, make me normal, if the parent is
          normal make me italic
  miriam: This use case is only possible if we can assume querying
          parent
  miriam: for non-inherited properties, we can always set a name
  miriam: and we've gone out of our way to encourage naming containers,
          both with size queries and style queries
  miriam: so that will transfer, there will be differences in these two
          in how they're used, but if querying something specific
          you'll give a name
  fantasai: The case where you want to have 2 different styles, you
            don't actually want to be querying the font-family property
  fantasai: You likely want to query a custom property
  fantasai: and you just want to make a custom property that represents
            your style
  fantasai: You'll want to track those through custom properties and
            the style query would let you query what kind of thing
            you're inside
  fantasai: and querying always the parent makes sense even if you want
            to switch (e.g., if you want to switch your color-scheme)
  fantasai: So I think you want to track that info through a custom
            property rather than attaching everything to a container

  dbaron: Wanted to comment on a use case Miriam raised wrt font-style
          italic toggling
  dbaron: I think using style queries for that feels like a very
          heavyweight mechanism for solving that problem
  dbaron: We had the cycle()/toggle() proposal for that
  dbaron: I think a mechanism like that would be more efficient way to
          address that sort of use case, whereas doing that with style
          queries, you're using something that's got much bigger perf
          implications
  dbaron: because it's a mechanism that can query any property and
          apply the result to any other property
  <bkardell> I was going to queue to say similar to dbaron - for that
             specific case at least
  emilio: Wanted to make a comment similar to dbaron's, other proposals
          that may address many of these use cases
  <emilio> like `if(<foo>, <bar>, <baz>)

  jensimmons: From what fantasai described, using custom properties and
              querying them
  jensimmons: put the word style aside, it becomes a way to define
              variables and query which one is being used right now
  jensimmons: which CSS doesn't have right now
  jensimmons: When people get their heads around that, they might not
              care about styles, they might just need variable queries
  jensimmons: and that's what they'll start using it for
  miriam: Large overlap with leaverou's higher-level custom properties
          proposal, in terms of use cases
  miriam: Setting properties that you can query and use them in
          selectors, and make larger changes based on the value of a
          property
  fantasai: There was some issue Oriol raised against toggle(), we
            decided didn't matter because moving to style queries, but
            if not need to dig up that issue and see if solvable
  <SebastianZartner> If it's mainly about querying custom properties,
                     why not restrict to them for now to do style
                     queries?

  fantasai: Regardless of this, do we need to split contain property
            into longhands per containment type?
  fantasai: to avoid conflicts
  jensimmons: If we land somewhere that every element is style
              container always, then no problem, but otherwise we need
              to solve the problem
  jensimmons: If someone wants to set up a size query ends up
              accidentally turning off a style query, that's accidental
              result
  jensimmons: consider working across teams, across time
  fantasai: Lots of room for error if we don't split
  jensimmons: Especially since the whole point is to allow ppl to
              create [missed]
  jensimmons: Don't know what kind of collisions you'll create

  Rossen: Doesn't sound like we're approaching consensus, if anything
          sounds like we're expanding the problem space of the issue
          and underlying features
  Rossen: If this was in times when we have more regular F2Fs, I'd say
          let's do a breakout and come back with proposed changes and
          move on from there
  Rossen: so perhaps that's what we need to do, do a breakout similar
          to scroll animations and hash it out
  Rossen: Sounds like topic is expanding rather than converging

  miriam: I think it's possible that emilio's suggestion would allow
          browsers to release without a problem
  miriam: Initial value is 'none', and if make style containers the
          default, not doing with an initial value of style would do it
          more globally
  miriam: so that might be a resolution that gets us able to release
          size queries without solving this
  fantasai: I have a different idea
  fantasai: that'd solve style queries, but not other types of
            containment in the future
  fantasai: cause we want to also allow for other containment types in
            the future
  fantasai: we'd need to release a longhand
  fantasai: My concern is that grouping these into this one property
            causes issues in the future
  fantasai: I think that's something we are going to need to explore
            before we ship
  fantasai: because if we ever add another type of containment that
            isn't size containment...
  jensimmons: Maybe we don't even need to make them a shorthand
  jensimmons: whatever gets decided I'd argue for folks to decide soon
  jensimmons: because Safari 16 is going to ship container queries

  Rossen: I don't think we'd like to suggest to punt on this for weeks
          or months
  Rossen: still not hearing good consensus
  Rossen: Do we want to try to resolve on anything today?
  Rossen: or do a breakout session next week or so?
  fantasai: I'd say we discuss and explore the longhands approach and
            come back next week
  Rossen: I think there are a couple of other issues in the same space
          that deserve focus time
  Rossen: Happy to help organize something
  Rossen: if that moves the ball forward quicker
  emilio: It seems there's agreement on `style` not being a value on
          `container-type`
  emilio: regardless of whether we split `container-type` into
          longhands or not
  fantasai: I wouldn't be happy to resolve without an alternative
  Rossen: Let's take it back to the issue
  Rossen: and bring it back next week. Happy to prioritize if there's
          progress / something we can resolve on

CSS Text
========

Consider removing distribute value for text-justify from the spec
-----------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7322

  fantasai: I don't know if we can resolve on this because discussion
            has expanded a little bit
  fantasai: Issue was a suggestion to remove this value, because Chrome
            / Safari don't support it, but Firefox does and IE did, and
            it was in CR in 2003
  fantasai: so my preference is to not remove it unless it's harmful /
            complicated
  fantasai: We got some data showing that it is used on some pages
  fantasai: not a lot of them
  fantasai: There's an assertion that there's no compat bugs reported,
            but pages using this in CJK, which are less likely to
            complain about it
  fantasai: This doesn't cause a fundamental degradation of the page,
            justification isn't just what's exactly desired
  fantasai: The main difference is whether you distribute in between
            letters in English / Greek, but not in CJK (??)
  fantasai: It's something that was standard and implemented by the
            most widely used engine at the time
  fantasai: so I'd lean against removing it
  fantasai: because people should expect it to continue to work
  <astearns> +1 to not removing for now

  emilio: The only thing I'd say is that we changed how this alias
          worked in the past
  emilio: now it's a parse-time alias of inter-character
  emilio: I don't think it matters substantially
  emilio: given it's a compat alias
  emilio: I'd rather not remove it, it's cheap to support
  emilio: as long as you support inter-character
  emilio: so don't see a strong reason to remove, since aliases are
          extremely cheap to support
  fantasai: The only complaint here was that parse-time aliases are
            inconvenient in some engines
  fantasai: We could allow either type of alias (parse-time or
            compute-time), I don't think it matters
  Rossen: Any objections to keeping 'distribute' keyword?

  RESOLVED: Keep 'distribute' keyword alias

text-align: match-parent on the root element with direction: rtl
    doesn't match browsers
----------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6542

  fantasai: Seems we currently have all browsers matching
  fantasai: I don't think this is the ideal behavior but it's not
            terrible
  fantasai: and it's a situation that is almost never going to happen
            in a real page
  fantasai: unless somebody did something super weird by accident
  fantasai: Given we currently seem all engines compute to start
  fantasai: which is Firefox's behavior
  fantasai: I'm happy to resolve to that
  fantasai: I think the right answer is to compute to right
  fantasai: because it otherwise resolves to an absolute side
  florian: So proposal is computing to start
  florian: behavior is the same as the spec asked for on
           single-direction pages
  emilio: I would rather to this, mostly because of how it interacts
          with writing-mode propagation
  emilio: just compute to start value
  Rossen: Any objections?

  RESOLVED: text-align: match-parent computes to 'start' on the root
            element

Having a summer face-to-face
============================

  <fantasai> Survey:
https://lists.w3.org/Archives/Member/w3c-css-wg/2022AprJun/0080.html
  <dbaron> It might also be good to get more responses to the survey
           (on the mailing list).
  Rossen: If you don't feel comfortable replying publicly, send an
          email to me and Alan
  Rossen: We'll count these people also

Received on Wednesday, 8 June 2022 23:25:12 UTC