[CSSWG] Minutes Telecon 2023-04-26 [css-position-4] [css-counter-styles] [cssom]

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


F2F Planning
------------

  - There are three possible locations for the F2F. The group is asked
      to provide feedback on the private list as to how likely they
      are to attend the three candidate locations on the week of July
      17th or the week after.

CSS Positioned Layout
---------------------

  - RESOLVED: FPWD CSS Positioned Layout L4

CSS Counter Styles
------------------

  - RESOLVED: No change to current spec. Draft ability for a counter
              function to return the counter string including prefix/
              suffix, with various fallback options (Issue #8619:
              Should fallback use prefix/suffix of original style or
              fallback style?)

CSSOM
-----

  - RESOLVED: Accept proposal to match JS scinot serialization
              triggers, other than 6-digit decimal truncation rule
              (Issue #8538: Serialize numbers using scientific
              notation?)
  - RESOLVED: Update CSSOM to allow null representation of imported
              style sheets (Issue #8608: CSSImportRule.sheet not being
              null conflicts with @import supports())
  - RESOLVED: Accept IDL in issue (Issue #8710: Extend CSSImportRule
              to expose supports condition)

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

Agenda: https://lists.w3.org/Archives/Public/www-style/2023Apr/0014.html

Present:
  Rachel Andrew
  Adam Argyle
  Rossen Atanassov
  Tab Atkins
  David Baron
  Oriol Brufau
  Yehonatan Daniv
  Elika Etemad
  Robert Flack
  Mason Freed
  Paul Grenier
  Chris Harrelson
  Daniel Holbert
  Brian Kardell
  Rune Lillesveen
  Eric Meyer
  Tim Nguyen
  Vitor Roriz
  Jen Simmons
  Miriam Suzanne
  Bramus Van Damme

Regrets:
  Chris Lilley
  Lea Verou

Chair: Rossen

Scribe: fantasai
Scribe's scribe: emeyer & TabAtkins

Administrative
==============

  Rossen: As usual, I wanted to ask for any additional topics/agenda
          changes
  Rossen: I was able to capture everything sent to ML, and personally
          have one additional topic wrt CSSWG F2F for the summer
  Rossen: But before that, any other topics?

CSSWG F2F
---------

  Rossen: First, thanks for answering the surveys
  Rossen: Overall results were that we have about 20 people who would
          be willing to travel for an F2F meeting
  Rossen: Bigger question, and where we're stuck at this point, is
          where can we do that
  Rossen: There are two primary hangups:
  Rossen: 1. Can we get the venue and even sponsored ($$$)
  Rossen: or 2. Hosted at their location of business
  Rossen: Then the other question is whether people can travel to that
          venue
  Rossen: We intentionally proposed US East Coast because can
          accommodate Europe and West Coast for majority of
          discussions and also some overlap with APAC

  Rossen: Mexico was brought up as an option, because fantasai found a
          venue with a lot of ventilation
  Rossen: we would be able to address most of the concerns of having
          meetings in ventilated areas
  Rossen: problems is we would need a sponsor
  Rossen: Travel is, however, not more expensive than going to US East
          Coast
  Rossen: in fact often much cheaper
  Rossen: US East Coast is another option, fantasai found some venues
          there
  Rossen: That satisfies any requirements about staying within the US
          if anyone is restricted by borders
  Rossen: but still run into trouble with venue costs
  Rossen: Last option is to be hosted by a company, which would be in
          normal corporate environment
  Rossen: which almost certainly means a closed conference room
  Rossen: and so far only Apple has stepped forward to offer, so one
          of their offices
  Rossen: So default option would be to host a smaller meeting on the
          West Coast
  Rossen: assuming smaller because fewer people might be able to travel
  Rossen: and less overlap with Europe

  <fantasai> -> https://wiki.csswg.org/planning/f2f-2023
  Rossen: fantasai captured the options in the wiki ^

  Summary of Options:
  Option 1: West Coast Corporate Hosting
  Option 2: East Coast US Venue
  Option 3: Mexico Venue

  Rossen: We need to make a decision quickly, so that we can secure
          venues and plan travel
  Rossen: Wrt external venues, cost would be $10-$15K

  florian: Would Apple be able to switch from hosting to sponsoring
           the venue?
  Rossen: Their offer is to host, not sponsor
  jensimmons: They're different
  jensimmons: different budgetary options
  <TabAtkins> yeah, hosting vs sponsoring is totally different
              unfortunately

  fantasai: I have question for figuring out what to do
  fantasai: 1. Which venues are you willing to attend?
  fantasai: 2. Which venues do you WANT to attend?
  fantasai: 3. Which venues do you think you can pull off attending?
  fantasai: With the answers to those three questions, we can figure
            out what to do
  fantasai: I'd like answers to these questions from everyone who
            would like to attend
  <dbaron> just a note that answers might need to be given in the form
           of probabilities
  <fantasai> that's fine :)

  Rossen: OK, let's poll async via IRC, and we can also post to the ML
  <astearns> 1,2,3: any and all work for me
  Rossen: fantasai is fighting really hard behind the scenes to make
          this happen, and allow us to have high-bandwidth productive
          time
  Rossen: not just to move through issues, but to also make progress
          on more creative off-track topics, ideas
  Rossen: hoping we can make this happen

  <miriam> Knowing the dates soon will make a bigger difference to me
           than the venue…
  fantasai: Miriam asked about dates, we're looking at week of July
            17th
  fantasai: or possibly the week after
  <miriam> ok, thanks!
  Rossen: That week has the highest probability of attendance

CSS Positioning L4
==================

FPWD Publication
----------------

  Rossen: Tab asked for FPWD?
  TabAtkins: The biggest innovation in L4 is that I pulled over
             Appendix E from CSS2
  TabAtkins: I've done a light rewrite to try to make it properly use
             modern element vs. box terminology
  TabAtkins: would really appreciate review on that.
  TabAtkins: Also did some light refactoring to pull out sub-algorithms
  TabAtkins: I believe it's an accurate representation of Appendix E,
             but would love review.
  TabAtkins: I've also introduced some top-level concepts introduced
             in Fullscreen spec
  TabAtkins: Have PR to move those over
  TabAtkins: Would also like review on that.
  TabAtkins: And finally, the `overlay` property that we discussed
             previously for controlling exit/entry animations for top
             layer
  TabAtkins: It's a slightly funky property, because it can only be
             specified UA-level !important rules
  TabAtkins: but allows authors to be able to control transitions.
  TabAtkins: I believe this is the right way to do it, introduces no
             new concepts
  TabAtkins: just relies on how cascade operates on transitions.
  TabAtkins: And that's the spec right now

  TabAtkins: [summarizes]
  TabAtkins: There's more stuff I want to add, to elaborate on
             stacking context stuff
  TabAtkins: want to e.g. get filtering and opacity built into this
  TabAtkins: and need to add steps for View Transitions which are on
             top of top layer
  TabAtkins: But what's there already is reviewable, and imho ready
             for FWPD
  Rossen: Any reasons not to publish?
  <fantasai> +1 from me, thanks for the overview

  RESOLVED: FPWD CSS Positioned Layout L4

  Rossen: What's the state of CSS Positioned Layout L3?
  TabAtkins: This doesn't touch L3, it's a delta spec
  TabAtkins: The things defined in L3 vs L4 are disjoint, no effect

Counter Styles
==============

Should fallback use prefix/suffix of original style or fallback style?
----------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/8619

  TabAtkins: Issue here is, per spec, when you generate counter style
             for a marker
  TabAtkins: it generates in your requested style, and adds prefix/
             suffix
  TabAtkins: but if there's fallback to a different style (because
             given style can't generate that number)
  TabAtkins: the algorithm doesn't pay attention to that fallback's
             prefix/suffix.
  TabAtkins: It uses the prefix/suffix of the chosen style
  TabAtkins: I wrote it that way because simple, and because ability
             to even obtain prefix/suffix of a counter style is not
             accessible to author code
  TabAtkins: so if we match to the prefix/suffix that was used to
             finally render
  TabAtkins: authors wouldn't be able to manually reproduce that effect
  TabAtkins: However, it seems that browser do follow the fallback and
             use the prefix/suffix from the finally used counter style
  TabAtkins: so have requested the spec to do that
  TabAtkins: If people want to change, then we can change the spec to
             have the prefix/suffix use the fallback style's prefix/
             suffix

  vitorroriz: WebKit follows the current spec, so not all browsers
              follow the other way
  vitorroriz: It came out from a bug report, but your sense about the
              counter API also makes sense
  TabAtkins: We can add more API to allow authors to do the same
             thing, if we want to
  TabAtkins: but it does seem that FF and Chrome do follow the
             fallback, and WPTs match that
  jensimmons: This might be a good time to do what's right for authors
  jensimmons: Safari hasn't had support for counter styles, so once we
              ship it could become a lot more popular

  fantasai: My concern with changing the spec is you'll end up with an
            inconsistent prefix/suffix if you're falling back
  fantasai: Say your number system doesn't have negatives, and you use
            () as your prefix/suffix
  fantasai: And if falls back to decimal which has period as its suffix
  fantasai: you'll switch styles when you fallback, functionally
  fantasai: Feel like it would make more sense to keep the prefix/
            suffix consistent across the list
  fantasai: even if your system is limited in some way
  fantasai: So I think the spec behavior makes more sense from a usage
            point of view
  fantasai: I understand from an impl it can be easy to just generate
            a string from another style

  ntim: Looking at WPT, it seems that Chrome matches safari, not
        Firefox

  emilio: When jfkthame changed this, he had a strong opinion that it
          was the right thing to do
  emilio: If we resolve not to change, we should check in with him
  <TabAtkins> the bug report has a good reason for the suggested
              behavior: https://bugzilla.mozilla.org/show_bug.cgi?id=1808995

  dholbert: Wrt fantasai's example, it was for someone using 2nd/3rd/
            4th, using letters as a suffix
  dholbert: and trying to use the appropriate suffix there
  dholbert: in which case it's quite reasonable to use the suffix from
            the fallback
  <TabAtkins> right, `counter(ordinal)` would still just produce a
              number from that counter style
  fantasai: It seems that that person is trying to create a numbering
            system
  fantasai: but the prefix/suffix is only a formatting applied to
            counters when rendered as a list-item marker, specifically
  fantasai: doesn't work in other uses
  fantasai: seems that it should be built into the number *value* if
            it's part of the number, not part of the formatting prefix/
            suffix
  TabAtkins: a) To build this in yourself, you'd have to do it as an
             additive system... which would probably work just as well?
  TabAtkins: but aside from that, this is the reason why it makes
             sense to have a counter() variant that produces the full
             representation rather than just the number value
  TabAtkins: so that authors can reproduce what authors are doing
             automatically in list-item
  TabAtkins: I would like it if authors can reproduce the
             functionality in API, so if we resolve to change should
             update API
  TabAtkins: I don't have a strong opinion on which way to go
  <TabAtkins> @counter-style ordinal { system:additive;
              additive-symbols: 900 "9", 800 "8", ..., 90 "9", ..., 9
              "9th", ..., 1 "1st"; }
  <TabAtkins> actually that's way shorter than what the bug reporter
              was trying to do
  fantasai: I feel like if we want to support ordinal numbering, we
            should build that into the value of the counter
  fantasai: so I lean no change
  vitorroriz: I tend to agree with fantasai, we should provide
              appropriate API
  vitorroriz: but might be a bit awkward if we don't

  jensimmons: Building examples, there's numbering in Ethiopic which
              uses a suffix based in the language
  jensimmons: It's confusing that prefix/suffix applies only to list
              items
  <vitorroriz> I also think that we should just change it if a
               counter() variant api is provided to enable authors to
               access the fallback prefix/suffix
  TabAtkins: That's a legacy issue, counter function has always worked
             this way
  jensimmons: It does feel like prefix/suffix works with the number
  jensimmons: feels unnatural
  TabAtkins: I can see both ways
  TabAtkins: Whatever way we decide the default, when we create
             function, could make it optional
  TabAtkins: then if what the default's doing, they can do themselves
  jensimmons: So keep existing legacy stuff simple and add something
              more powerful?
  <TabAtkins> value-prefix/value-suffix descriptors? and maybe with
              some more functionality to tie it to numeric value.
              something for counter-styles-4

  fantasai: I think the current prefix/suffix feature is reasonable
            to exist
  fantasai: this is so that list-item counters format properly, and
            those prefix/suffixes should not be emitted in counter()
  fantasai: but it might also be helpful to have a prefix/suffix
            feature that represents some segment of the number
            rendering itself
  fantasai: that's a different feature, and we have a bit of a name
            clash, but it's a different feature that maybe should also
            exist
  fantasai: and in that case, it's a bit more complicated, because the
            prefix/suffix can depend on the *value* of the counter
  fantasai: and is an essential portion of the stringification of the
            number

  <TabAtkins> proposed resolution: no change from current spec, but
              add a counter-tbd() function that generates a string
              *with* prefix/suffix (exactly what fills ::marker by
              default) with a choice of using original or fallback
              prefix/suffix.
  <TabAtkins> (oh, and put some notes in calling this behavior out)
  TabAtkins: [reads out proposal]
  <jensimmons> and I'd add that the new thing works in lists, and
               elsewhere counters are used.
  fantasai: I'm not 100% sure about whether that's going to make sense
            once we have proper support for ordinal numbering
  fantasai: Not sure if you'd want to switch, but maybe you do
  fantasai: If you prefix and suffix are characters, would you
            actually want to follow the numeric pattern
  fantasai: I think we might want to investigate further how to do
            ordinal numbering
  TabAtkins: That's a harder problem, but we still need the formatting
             string version of the function
  TabAtkins: so I think we should do it anyway

  Rossen: Any further thoughts or objections to the resolution?
  oriol: So the new function, could it be for the `content` property,
         or for list-style-type, or ... ?
  TabAtkins: At the moment, define it as exactly equivalent to
             counter() and counters() but with slightly different
             generation for the string
  TabAtkins: so these should be usable as <string>, if the browser
             supports it; but would definitely be allowed in 'content'
  oriol: so it wouldn't be for list-style-type
  TabAtkins: no, it's not a new counter type. Just a new
             string-generating function
  fantasai: Maybe an argument to the existing function?
  Rossen: OK, hoping this answers the question. Didn't hear any
          objections

  RESOLVED: No change to current spec. Draft ability for a counter
            function to return the counter string including prefix/
            suffix, with various fallback options

CSSOM
=====

Serialize numbers using scientific notation?
--------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/8538

  TabAtkins: Our rules for serializing numbers are reasonably
             well-defined
  TabAtkins: But we have scientific notation now, which is widely
             implemented
  TabAtkins: Browsers use it for serialization *sometimes*,
             inconsistent, depends on the property...
  TabAtkins: So the proposal here is to formalize when we serialize as
             scinot
  TabAtkins: My proposal is to match JS exactly, which means that you
             use scinot whenever either the number has 22 or more
             digits of integer value, or has 6 or more leading zeroes
             in its decimal portion and is zero integer
  TabAtkins: Only change from JS is that we continue to truncate to
             only 6 digits after decimal point, maximum
  TabAtkins: this is required for compat
  TabAtkins: and also it hides some differences between browsers/
             properties
  TabAtkins: and it also hides some floating-point variances
  TabAtkins: so there's spec text in the issue
  TabAtkins: and that's it

  TabAtkins: Wrt interop, we're all over the place
  TabAtkins: Every property and every browser does an effectively
             random thing
  TabAtkins: partially due to different levels of precision, e.g.
             width supports subpixel, but scale property supports ...
  TabAtkins: e.g. Chrome start scinot at 0.0001
  TabAtkins: So no interop, so match JS with wrinkle about 6 digits
             seems reasonable to do with minimal impact on authors
  Rossen: Any additional comments?

  TabAtkins: dbaron's point was to bias towards older formats during
             serialization
  TabAtkins: that's part of why the bounds are so wide
  TabAtkins: Most numbers you will ever encounter in a stylesheet do
             not trigger scinot
  TabAtkins: but outside those bounds, e.g. when serializing a
             transform matrix, need to serialize somehow
  Rossen: Pretty clear proposal, not seeing anyone rushing to the
          queue ...
  Rossen: any objections to the proposal?

  RESOLVED: Accept proposal to match JS scinot serialization triggers,
            other than 6-digit decimal truncation rule

CSSImportRule.sheet not being null conflicts with @import supports()
--------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/8608

  emilio: 2 specs conflicting with each other
  emilio: imported stylesheets cannot be null, but since we have
          supports() condition the UA is not required to fetch the
          stylesheet
  emilio: so we need CSSOM to allow it to be null
  <TabAtkins> +1 for the obvious fix
  <fantasai> +1

  RESOLVED: Update CSSOM to allow null representation of imported
            style sheets

Extend CSSImportRule to expose supports condition
-------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/8710

  emilio: While we were implementing supports() for @import, we
          realized it's not exposed in CSSOM
  emilio: so following the pattern for others
  emilio: and then report null or empty string if it's missing
  <TabAtkins> +1 to this one too, obvious and the suggested IDL looks
              right
  <TabAtkins> nullable is most correct I think
  TabAtkins: I think we should accept with proposed IDL in the thread
  fantasai: As long as the naming is consistent with other interfaces,
            I'm fine
  Rossen: Objections?

  RESOLVED: Accept IDL in issue

F2F
===

  Rossen: Going to transfer this conversation to these questions to
          the ML, and hopefully we'll have a meeting decision soon

Received on Wednesday, 26 April 2023 23:33:54 UTC