[CSSWG] Minutes Telecon 2019-11-13 [css-text-4] [css-fonts-4] [css-grid-2] [css-values-4] [css-grid-2]

=========================================
  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 Text L4
-----------

  - RESOLVED: Publish new WD for Text 4

CSS Fonts L4
------------

  - RESOLVED: Republish Fonts 4

Grid L2
-------

  - RESOLVED: Pick option 2; effectively subset the grid area into the
              subgrid (Issue #4411: Subsetting grid-template-areas in
              subgrids)
  - RESOLVED: Start L3 with all work that is in L2 but not about
              subgrid
  - RESOLVED: Publish Grid L2 as CR

CSS Values 4
------------

  - The group was interested in seeing specific details for changing
      attr() to be more var()-like (Issue #4482: Switch advanced
      attr() to being var()-like) so TabAtkins will write up spec text
      for review.

CSS Grid 1
----------

  - RESOLVED: Give the 2nd option a chance and see if there are compat
              reasons to instead keep current behavior (Issue #4475:
              Resolved values of grid-template-rows/columns don't
              round-trip)
  - TabAtkins will look into what the Gecko and Chromium devtools
      expose about grid to see if something similar can be specified
      as a future enhancement.
  - RESOLVED: Specify serialization as proposed in
https://github.com/w3c/csswg-drafts/issues/4335#issuecomment-548962309
              [When serializing either the specified or computed value
              of a <<string>> value of 'grid-template-areas', each
              null cell token is serialized as a single "." (U+002E
              FULL STOP), and consecutive cell tokens are separated by
              a single space (U+0020 SPACE), with all other white
              space elided.]

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

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

Present:
  Rachel Andrew
  Rossen Atanassov
  David Baron
  Amelia Bellamy-Royds
  Christian Biesinger
  Oriol Brufau
  Tantek Çelik
  Dave Cramer
  Elika Etemad
  Simon Fraser (IRC only)
  Dael Jackson
  Chris Lilley
  Peter Linss
  Theresa O'Connor
  Manuel Rego Casasnovas
  Florian Rivoal
  Christopher Schmitt
  Jen Simmons
  Alan Stearns

Scribe: dael

  Rossen: It's 2 minutes past, let's start
  Rossen: Wanted to call if there are extra agenda items or items to
          change
  fantasai: Brief announcement
  <fantasai> https://www.w3.org/wiki/Process2020
  fantasai: We posted an explainer to process changes and edits at
            this wiki^
  <fantasai> https://lists.w3.org/Archives/Public/spec-prod/2019OctDec/0007.html
  fantasai: If you have comments on improving, like the changes,
            dislike the changes, let me know about problems. If you
            have opinions forward them to spec-prod

  <tantek> quick summary, Process2020 explainer is looking quite good.
           Only nit is I don't think the Registries piece is mature
           enough as compared to the rest. I'd advise splitting that
           out and giving it more time to iterate/develop, perhaps for
           2021.
  <tantek> everything else I'm looking forward to reviewing closely
           (actual process doc changes), and quite optimistic about. :)

  astearns: TabAtkins wanted first item to be postponed slightly on IRC
  Rossen: I see Chris will be a bit late for fonts 3
  astearns: TabAtkins will be at least 15 minutes late

Publications
============

  Rossen: Text level 3
  florian: Text 4; fonts 3
  fantasai: fonts 4 as well; fonts 3 is REC isn't it?
  Rossen: It is.
  Rossen: Let's do text L4

Text Level 4
------------

  Rossen: Is it editorial?
  florian: Not only. At previous F2F we discussed word boundary in
           spaces, the text was added. It was announced and review
           requested. We're not getting to CR, but it's been in the ED
           for a while and it should go into an official space
  florian: It's been a year since it was published. Sounds like good
           timing
  Rossen: And the edits are in?
  florian: They are. It's the things I talked about at last F2F. Maybe
           some editorial tweaks
  Rossen: Great.

  RESOLVED: Publish new WD for Text 4

Fonts Level 4
-------------

  Rossen: Fonts 4 should we wait for Chris?
  fantasai: Chris is on IRC
  <ChrisL> Please wait until later
  fantasai: I think we publish since he requested
  <ChrisL> Ok great

  RESOLVED: Republish Fonts 4

Grid L2
=======

Subsetting grid-template-areas in subgrids
------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4411

  <fantasai> https://github.com/w3c/csswg-drafts/issues/4411#issuecomment-548945615
  fantasai: Summary comment^
  fantasai: Two proposals, make grid-template-areas a thing and
            exclude names from inheriting. Currently grid-templates
            make start and end and those would not inherit into subgrid
  fantasai: Other option is we take those names and instead of saying
            don't inherit in, they do inherit in and if there's
            partial overlap we clip start or end so they exist in the
            grid and you can position to the overlap
  fantasai: Slight inconsistencies for both. If we exclude then a
            manually created grid area such as named lines as
            foo-start I implicitly create foo which I can position
            into. Kinda works on a subgrid; if both lines overlap.
            True in both cases
  fantasai: Question is do we want...we didn't want to create
            inconsistent behavior for templates. Want to say either
            set to part it overlaps or exclude all lines. Those are
            the two options.
  fantasai: Would like to hear from other preference
  <fantasai> A) Exclude parent template and its implicit line names
             from subgrid
  <fantasai> B) Subset parent template to the part where it overlaps
             the subgrid, allowing it to be usable

  Rossen: Prefer second option.
  Rossen: Having the grid-template-area lines not available from
          subgrid is quite weird given that rows and columns are
          available
  Rossen: I would lean toward the second solution if we have to pick
          from these two
  dbaron: Looks like Mats preference was first, but seems reasonably
          okay with either. Seems he had impl of 2nd and changed to
          1st.
  fantasai: He originally wanted B, then did A when we weren't sure
  Rossen: dbaron do you know why he switched?
  rego: It was not impl in all cases. I had example in issue that was
        different in 2 cases where should be same. He didn't have
        whole impl. I think he did the simplest thing
  <fantasai> Mats's comments
https://github.com/w3c/csswg-drafts/issues/4411#issuecomment-542292465
  Rossen: If we go with option B (the second option)
  Rossen: Would that be okay dbaron if you're representing Mats?
  dbaron: I'm only reading his comments in issue

  jensimmons: Still trying to wrap my head around. Seems like Miriam
              Suzanne and rachelandrew were advocating for A
  Rossen: A in TabAtkins summary is option 2
  <rachelandrew> option 2 for me (don't think my mic is working)

  fantasai: rego I think case with a difference is case of explicit
            line names creating implicit area.
  fantasai: TabAtkins and I discussed and concluded there wasn't a
            good way to make that work. Would require changes to how
            line names were handled. Couldn't figure out how to not
            cause changes to normal grid
  fantasai: Concluded line names from template are special and special
            for subgrids but explicit line names don't. Which means
            you can handle the partial overlap nicely for template
            areas, but not for area with explicit names
  rego: So original impl from Mats is final?
  fantasai: Yeah. Either way the line names created by template area
            need to be special so we either notice they're excluded or
            clamped for partial overlaps. Seems second is more useful
  rego: Still don't like difference in the example. I understand it's
        useful so maybe it's good enough. I think the difference can
        create confusion.
  fantasai: Ideally we would solve both, but didn't find a good way.
  <fantasai> rego, see
https://github.com/w3c/csswg-drafts/issues/4411#issuecomment-542288855
             for problems with the other options

  Rossen: Not hearing strong opinions, but more people toward option 2
  Rossen: Objections to resolving on "Subset parent template to the
          part where it overlaps the subgrid, allowing it to be
          usable" unless there's additional comments
  <fantasai> Example of option 2 -
https://github.com/w3c/csswg-drafts/issues/4411#issuecomment-543174237
  Rossen: Objections to Option 2: Subset parent template to the part
          where it overlaps the subgrid, allowing it to be usable?

  RESOLVED: Pick option 2 effectively subset the grid area into the
            subgrid

Publication
-----------

  fantasai: That's last subgrid so I'd like to propose every
            non-subgrid feature goes to L3 so we can go to CR
  <fantasai> https://drafts.csswg.org/css-grid-2/#alignment
  fantasai: There's a bunch that haven't been edited in. We'd defer
            this ^
  fantasai: There's a handful where we resolved to add features and I
            propose we start a new WD with those and put subgrid L2
            to CR
  fantasai: We didn't edit them in because Grid 1 was a little
            unstable. But none of those features are as urgent as
            subgrid
  <ChrisL> +1 on CR for Grid L2
  <tantek> +1 on CR for Grid L2 with only subgrid added

  Rossen: Proposal: Break Grid L2 down to only contain subgrid
          features. Take L2 to CR. Start L3 with all things moved
  <dbaron> presumably L2 will have the L1 stuff too?
  <tantek> dbaron, that was my assumption too
  <jensimmons> +1 Let's get going on Lvl 3 baby! All the ideas about
               how to make Grid better!!!

  RESOLVED: Start L3 with all work that is in L2 but not about subgrid

  fantasai: Question for ChrisL. Grid 2 is a diff spec and doesn't
            have L1 content. There's a lot in Grid L1 that aren't
            posted to CR.
  fantasai: I don't think I can copy it over yet. Is it okay to
            publish CR as a diff?
  <tantek> I'd be ok with CR as a diff
  <tantek> would rather than CR as a diff than have to wait until "L1
           done"
  astearns: I'd wait until we have L1 done. CRs are meant for review
            and diff is hard to review
  <ChrisL> Agreed, delta specs are harder to review
  fantasai: It's easier because it's one fairly isolated feature.
            We're adding this thing. I think it's okay as diff, but I
            want to fold in eventually
  florian: Another is publish subgrid L1 as a CR
  fantasai: No, not making this another spec.
  fantasai: I'll wait if we want.
  <tantek> agree with keeping this as grid L2
  <ChrisL> But okay if explicitly stated all of L1 will be included
  <tantek> I get the feeling most people here are ok with L2 as a diff
           CR
  fantasai: We're waiting on a handful of Grid L1, but we're hung up
            on not having tests
  florian: CR should be acceptable as REC and a diff isn't. We should
           wait
  jensimmons: I wonder if there's people that love grid enough they'd
              write tests
  fantasai: I think a lot are written and we need to figure out where
            they are
  Rossen: We can wait until next week. It would be nice to make
          progress
  fantasai: If it's up to me to do tests I won't get to it until
            mid-Dec at least
  Rossen: Let's get them in 2019 at least
  <tantek> I'd also be ok with L2 as another diff WD with explicit
           status stating we believe the additions are all CR-worthy,
           and that the only change expected before CR is the
           incorporation of all of L1

  Rossen: Reading ChrisL in IRC that he's okay if explicitly stated
          all L1 included. I guess republish with a note? Not sure
          what that looks like for CR
  florian: Not convinced process allows that
  Rossen: Objections to moving grid L2 as CR? We'll figure out format
          but we can resolve to do it now
  Rossen: And from previous resolution it means Grid L2 is the delta
          of 1 and subgrid
  Rossen: Objections?
  fantasai: Union of 1 + subgrid

  RESOLVED: Publish Grid L2 as CR

  Rossen: We'll work with ChrisL to figure out exactly what it looks
          like
  <tantek> 🎉
  Rossen: That's awesome because Grid is awesome

CSS Values 4
============

Switch advanced attr() to being var()-like
------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4482

  TabAtkins: Several years ago we defined the more complicated attr()
             functionality where it supplies the type. If you say
             foo=5px we parse as length.
  TabAtkins: No one impl. I realized why.
  TabAtkins: It ends up being high cost for low value. Type checking
             eagerly so at parse time we can reject it it means every
             thing that does grammar checking have to account for
             possibility of attr() being there
  TabAtkins: Lots of fiddly detail work.
  TabAtkins: We did it because we don't have valid at parse time but
             rejected later. We now have that for var(). The var()
             machinery and building on that gives us a lot of tools
             that didn't exist earlier which make attr() easier
  TabAtkins: Precise details of grammar aren't laid out, but core is
             we make attr() act like var(). It makes property
             automatically valid at parse time and we do parse at
             computed time. We validate at that time.
  TabAtkins: Specifying type lets you validate you put the right thing
             in the attr(). Handling attributes elsewhere tends to
             allow garbage and ignore. We maintain that and check type
             and make sure it works.
  TabAtkins: If we base on var() it's the same functionality for
             authors and a significant decrease in implementation
             complexity.
  TabAtkins: I'd like to pursue this change and the impl wants to
             experiment in it
  TabAtkins: Is WG amenable?
  <fremy> I strongly support this!

  emilio: I'm not opposed but concerned about type checking token
          string and then doing parsing again. When I looked at impl
          attr() I suggested doing it like variables in bugzilla.
  emilio: Complexity of doing attr() didn't seem so high either. I'm
          concerned about parsing, tokenization, and then parsing on
          performance.
  emilio: Other concern is XSS but that happens either way
  TabAtkins: Reason why I don't think first bit is a concern is it
             ends up being identical to custom values and properties
             API. Ideal is it works that way but it's inline
  emilio: I think that's also a concern with custom properties. I
          don't want to block on it, it's mostly theoretical
  TabAtkins: Never say never but I doubt used in performance sensitive
             ways

  AmeliaBR: My first concern would be how can we make it work
            logically with the existing use of the attribute function
            in the content property
  AmeliaBR: You've been talking as distinguishing if an explicit type
            is set. More I'm thinking maybe not necessary. If you
            don't have an explicit type the type is assumed string and
            any attribute can be parsed as a string, returned in a
            string. So maybe not an issue because string is always
            valid in content
  AmeliaBR: I'd like to see the exact write up and make sure it makes
            sense in backwards compat without special behavior
  TabAtkins: Not possible w/o any backwards compat because assume
             valid at parse time. Content properties currently invalid
             but use attr() become valid at parse time. It is a
             behavior change if we make unspecified type attr() use
             this.
  TabAtkins: Not sure what's best if we split parsing into separate
             function rather then flag it as attr() here. Puts you in
             2 parsing modes based on detail of function grammar.
  TabAtkins: If we think it's okay for behavior change in content
             where you wrote an invalid with a fallback and you're
             relying on that that seems minor. Otherwise good with
             your option.
  TabAtkins: There's some possibilities there, we can experiment
  AmeliaBR: Your example of something suddenly valid is if something
            else in content property would be a parse error. Like
            using slash syntax with alternative text in a browser that
            doesn't support makes a difference if it's parse time error
  TabAtkins: Exactly. You'd no longer have the fallback
  AmeliaBR: I would lean toward having a separate function for the
            type version and use attr() for how it's currently
            supported. Might be problematic for UA that support attr()
            more widely
  TabAtkins: No idea if various printers support. I know no web
             browsers do. I'm not sure impl quality of whole thing
  TabAtkins: But this is a behavior change. It will be off if there's
             a current impl. It's a custom thing or breaking change

  TabAtkins: If no other questions just want to check for objections
             for me creating a full write up of changes. I can do that
             for review next week
  Rossen: Objections?
  fantasai: Summary?
  TabAtkins: There's a lot of possible ways how, but it's a change in
             validation to make it more var() like
  TabAtkins: I'll have a write up fully next week. What's in the issue
             is the right gist
  TabAtkins: It's switch attr() to var()-type validation rather than
             strict parse time validation
  emilio: The fallback might be able to be fix for attr(). Unfortunate
          to add new type of attr() that can't be detected. Nice if
          forced to a valid type. Worth thinking about
  TabAtkins: Yep.
  Rossen: Objections to the approach of switch attr() to var()-type
          validation rather than strict parse time validation
  <astearns> +1 to try this out
  fantasai: Not sure, but let him write it up
  Rossen: TabAtkins there's no objections. Go ahead and write it up
          and we'll look when you're ready

CSS Grid 1
==========

Resolved values of grid-template-rows/columns don't round-trip
--------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4475
  <fantasai> See
https://github.com/w3c/csswg-drafts/issues/4475#issuecomment-548908448

  TabAtkins: As spec grid-template-row/column when you asked for
             resolved value you get width of implicit tracks as well
             as explicit. Given you can't spec implicit tracks this
             doesn't make any sense at all.
  TabAtkins: Getting the width of implicit tracks is worthwhile.
             Functionality is reasonable, but a number of useful grid
             things it would be great to get from layout that aren't
             in properties right now.
  TabAtkins: In past proposed things that would require new grid API
             to get
  TabAtkins: Resolved value of grid-templates does not round trip.
  TabAtkins: Options; 1) leave as is. Resolved value is not a valid
             value and confusing because unless you know number of
             implicit rows you don't know where explicit starts
  TabAtkins: 2) Change to only reflect explicit rows on resolved
             values. implicit we leave for a more explicit API
  TabAtkins: 3) Continue to allow grid-template-rows to express
             implicit but change grammar so it's valid. There is some
             value because only explicit are used for auto positioning
             by default. Being able to give bounds to auto while
             sizing outside could be worthwhile
  TabAtkins: Would need to be able to spec when the explicit grid
             starts and stops which would also need to return in the
             resolved value
  TabAtkins: We leave as is, change return of gCS for this so that it
             allows round-tripping either way
  TabAtkins: Need to decide, this was an accident. If we leave as is
             need to be more explicit
  TabAtkins: I prefer changing to be just explicit tracks. I could
             accept any of the 3.

  fantasai: Web compat is a substantial concern. Might be stuck with #1
  emilio: Also I also prefer 2 if we can get away with the compat issue
  TabAtkins: Web compat is always a concern and we might be stuck with
             1. Between 2 and 3 is group okay if we try for 2 and
             revert if web compat proves otherwise?
  oriol: In issue I propose feature which allows define where grid
         line could be. It could place it in another place. I think
         something like this could have its own uses outside this
         issue. However I agree this probably needs more thought and
         be in something like Grid 3.
  oriol: If we want to fix round-tripping we need more urgent for L1
         so it's reasonable to try and remove implicit tracks
  TabAtkins: Your suggestion was option 3, but as you say requires
             additional work. How it interacts is unclear right now
             and a breaking change anyway. If breaking, might as well
             do one that's easier to work with. If we ever want
             explicit/implicit we can do that later

  TabAtkins: Any strong preference for keeping current behavior? Or is
             everyone okay with trying to change gCS and falling back
             to no change if there's web compat problems?
  <dbaron> please make it round-trip correctly :-)
  <florian> I like the proposal
  Rossen: Try it out. It makes sense.
  fantasai: We don't have syntax for that right?
  TabAtkins: Not for 3. No one is suggesting widen the grammar first.
             This is keep as is and have gCS report explicit only or
             have gCS report more accurately
  <fantasai> sorry, I was confused

  Rossen: Resolution would be for give the 2nd option a chance and see
          if there are compat reasons to instead keep current
  Rossen: Other opinions or objections?
  emilio: No objections but I want note sure both Gecko and
          Chromium...info from gCS is not useful. Both Chromium and FF
          have special dev tools because gCS is not enough.
  Rossen: We can look at extending OM for grid
  Rossen: I think you're pointing out more general issue. I don't
          disagree
  <emilio> https://searchfox.org/mozilla-central/source/dom/webidl/Grid.webidl
           fwiw
  TabAtkins: Point is valid in that what's currently returned is not
             enough for current use cases. So we're not losing
             anything and we should look into more advanced on
  Rossen: Agreed
  Rossen: Objections?

  RESOLVED: Give the 2nd option a chance and see if there are compat
            reasons to instead keep current behavior

  <TabAtkins> emilio, I'd love to with with you and jensimmons or
              anyone interested in this to figure out what devtools is
              using and how we could expose that to users.
  <emilio> TabAtkins: fwiw, this is the API exposed to devtools:
           https://searchfox.org/mozilla-central/source/dom/webidl/Grid.webidl
           via https://searchfox.org/mozilla-central/source/dom/webidl/Element.webidl#322

Spaces in grid-template-areas serialization
-------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4335

  fantasai: Want to clarify how spaces are handled. There's no
            compatibility. We said serialize between tokens we do a
            single space no matter if it's needed
  fantasai: Want to confirm with WG
  astearns: Makes sense to me
  emilio: Seems weird to change string because we don't change string
          in other places
  TabAtkins: You do change the string somewhat. You don't if parsing
             splits tokens correctly. But you trim spaces at end and
             collapse many to one
  oriol: In issue #3261 we resolved against preserving precise string
         in favor of normalizing. Just wasn't clear on what to do with
         spaces
  TabAtkins: Thanks
  astearns: emilio?
  emilio: No objections
  astearns: Other concerns?
  astearns: fantasai has comment at end with proposal
  astearns: Objections to this?

  RESOLVED: Specify serialization as proposed in
https://github.com/w3c/csswg-drafts/issues/4335#issuecomment-548962309

Received on Wednesday, 13 November 2019 23:29:46 UTC