[CSSWG] Minutes Telecon 2020-05-13 [css-position-3] [css-display-3] [css-sizing-4] [css-cascade-5] [css-syntax-3] [css-ruby-1]

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


Publications
------------

  - RESOLVED: Publish updated WD of position-3
  - RESOLVED: Publish new CR of display-3
  - RESOLVED: Publish a FPWD of sizing-4
  - RESOLVED: Close issue #333 (Aspect Ratio) as fixed [it is a part
              of sizing-4]

CSS Cascade
-----------

  - The migration path for custom origins (Issue #4985) can't be
      finalized until there's a more complete proposal.
      - It's important to have a migration path so that authors can
          use this before every browser supports it.
      - Having a way to query support will be important for authors.
      - Polyfills may be the path forward, but it depends on where the
          custom origins fall in specificity.
  - RESOLVED: Call these "cascade layers" (Issue #4981: Better name
              for "custom origins"?)
  - The final design for issue #4971 (How do custom origins interact
      with `!important`?) will need to wait until the definition is
      more fleshed out.
      - There was interest in using this as a chance to re-think how
          to handle the use cases currently addressed by !important to
          see if there's a different way it can be done which is more
          inline with the cascade layers approach.

CSS Syntax
----------

  - RESOLVED: Close no change, this is an intended difference (Issue
              #4126: Input stream processing can calculate wrong
              encoding)

CSS Ruby
--------

  - RESOLVED: Rename collapse value [of ruby-merge] to merge (Issue
              #5005: Rename ruby-merge: collapse to ruby-merge: merge)

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

Agenda: https://lists.w3.org/Archives/Public/www-style/2020May/0007.html

Present:
  Rachel Andrew
  Rossen Atanassov
  Tab Atkins
  David Baron
  Amelia Bellamy-Royds
  Oriol Brufau
  Emilio Cobos Álvarez
  Dave Cramer
  Elika Etemad
  Simon Fraser
  Megan Gardner
  Daniel Holbert
  Dael Jackson
  Peter Linss
  Myles Maxfield
  Nigel Megitt
  François Remy
  Florian Rivoal
  Jen Simmons
  Miriam Suzanne

Scribe: dael

  astearns: We've got enough to get started
  astearns: There was a request to move MQ topics to the end
  astearns: Any other agenda changes?

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

Position-3
----------

  astearns: TabAtkins and fantasai have prepared a bunch of drafts
  astearns: First is a WD of position-3 which has been re-written
  astearns: Objections?
  Rossen: Go for it

  RESOLVED: Publish updated WD of position-3

Display-3
---------

  astearns: They would like to update CR of display-3
  astearns: Looks mostly editorial.
  fantasai: Really just a clarification and shifting/improving
            glossary definitions. Pulling content from css 2.1 into
            display and shifting some out to position

  astearns: Glanced at changes and didn't see anything about text
            being shifted out. Is it mentioned?
  fantasai: I think I grouped that in
  astearns: Stuff added from CSS 2 is just editorial shifting from
            draft to draft?
  <fantasai> " Improved/moved glossary definitions relating to
             absolute positioning. "
  <fantasai> " Merged in additional prose from [CSS2] into the
             definition of containing block. "
  fantasai: Yes, this ^ pointers in CSS 2 so containing block
            definition is in L3

  Rossen: Were there any changes to fixed positioning?
  fantasai: We did not make any changes to fixedpos or abspos in
            display
  fantasai: Re-wrote sticky but shouldn't be a normative impact.
            Sizing and margin calc rules we left in the old as a
            duplicate so people can check and we'll remove it in the
            future. Intention was no change, we did add some new terms
            which makes it easier for specs to hook in; absolute and
            fixed position containing blocks.
  fantasai: No intended normative change, there needs to be review
            that hopefully we didn't break
  astearns: Since this is CR, Rossen do you want more time to look?
  fantasai: Those are to position. The CR we removed abspos
            definition. Otherwise minor clarifications
  Rossen: I was mostly asking for clarification on sticky b/c that was
          the most different section compared to 2.1 in positioning. I
          started reading it and it was changed significantly.
  Rossen: That's fine.
  Rossen: I don't have problems with display CR
  fantasai: We re-wrote draft with different approach to defining. New
            definition relies less on arbitrary rules and more on
            conceptual definition and geometry. All text in
            positioning has changed more or less. Hopefully easier to
            understand and do things that make sense since it's higher
            level.
  Rossen: Looks great.

  astearns: Point in question is if we'll update CR for display-3
  Rossen: Back to your question I was fine with display CR. My
          questions are on position.
  astearns: Other opinions?
  astearns: Objections?

  RESOLVED: Publish new CR of display-3

  fantasai: Question- I think this is editorial and I think that's a
            different publication process.
  astearns: Do we have staff on the call at the moment?
  TabAtkins: I think we need to publish both, wait to get into
             shepherd, and publish again
  astearns: Start a thread with staff on private and try to get it
            through editorial process with their help

  nigel: Question on publication. This CR points to an ED for abspos
         and you want to publish as a WD. I wonder if it's clearer for
         wide world to wait until you're in CR for abspos
  fantasai: We're nowhere near. There is cross linking and the extent
            of display relying on positioning is just for definitions.
            Display is in CR with minor editorial fixes
  astearns: And if we have to move Display to PR before positioning is
            CR we can change the links to CSS 2.1 without issues
  nigel: That gets to my question, thanks

Sizing-4
--------

  astearns: Last is FPWD of sizing-4
  <TabAtkins> https://drafts.csswg.org/css-sizing-4/#changes
  fantasai: Things in are definition of aspect ratio (issue #333). I
            suggest we resolve that. Definition of
            contain-intrinsic-size. Definition for stretch,
            fit-content, and contain. Contain we decided to add and
            stretch and fit-content were moved from L3. Contain we
            added during grid where it tries to respect aspect ratio.
            Useful but shouldn't be default so we decided not to add a
            keyword.
  fantasai: It's a diff spec, nothing is copied over
  astearns: Do you want to resolve on aspect ratio before we do FPWD?
  fantasai: No preference
  astearns: Let's publish. Obj to FPWD of sizing-4?

  RESOLVED: Publish a FPWD of sizing-4

  astearns: Do you want to put the aspect ratio on agenda for upcoming
            meeting? Or need resolve now?
  fantasai: If we're publishing FPWD I think that means we're
            resolving to have it
  astearns: Oh, so given we're publishing, objections to close as
            fixed?

  RESOLVED: Close #333 as fixed

  astearns: Other publishing topics?

CSS Cascade
===========

What is the migration path for custom origins?
----------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4985

  miriam: Based on conversation last time some of these issues maybe
          should be handled with bigger questions. Some discussion of
          TF or community group.
  miriam: First one stands out as something we could get feedback on
  miriam: If we're updating cascade how are they handled in terms of
          migration path.
  miriam: Issue explained by florian well. If syntax is ignorable it's
          bad but hiding rules from old browsers they'll miss code
  miriam: No solution in mind. Playing around I can mimic rough
          behavior using custom properties. Don't know if it gets us
          anywhere, but interesting I could mimic
  miriam: Open to discussion on this

  myles: What did custom properties do?
  miriam: Create a stack of custom properties with fallback values.
          Each of those acts as a level of cascade so I can decide at
          which point in fallback stack I make a change. Anything more
          forward in the stack overrides anything further down. Allows
          me to pass in information from different intents I set up
  miriam: I do use them in other ways we talked about for custom
          cascades.
  <AmeliaBR> `var(--overridecolor, var(--themecolor,
             var(--defaultcolor)))`

  astearns: florian since you just joined any feedback?
  florian: I'll read offline and feedback later
  AmeliaBR: miriam was introducing question on the migration path for
            custom origins and authors being about to write
            stylesheets that make sense in browsers that do and don't
            support.
  AmeliaBR: miriam had said it is both bad if old browsers treat
            declarations as normal and bad if they ignore the
            declarations (quoting florian) Agree both are true if
            they're required, but one solution is to make sure both
            things are available in that authors can write their code
            in a way so that things would fallback to be regular css
            cascade or write code so if custom origins not supported
            it's ignored
  astearns: If we design such that old browsers can read but not have
            custom origins than we can do it and put things in
            @supports if want ignore in older
  AmeliaBR: We'd need a way of doing an @supports rule that has that
            option if you don't understand don't use but also have a
            way that the syntax doesn't get blocked off as
            unrecognized/invalid. The options gives authors
            flexibility about how initial behavior is and interacts
            with a polyfill that uses classes to create same effect
  florian: One worry is if there's a syntax that lets browser ignore
           and apply as if not custom origin this is fragile depending
           on who ships first. If dominant market doesn't ship there's
           a change people will put it in there and have it not work
           and than it'll be that we can't update. Not working may
           require polyfills because requires authors to be careful.
  myles: Another strategy is JS. It could work.

  fantasai: I think either way good to have @supports so people can
            figure out way to handle lack of support
  fremy: It could work in JS, but in JS when all stylesheets loaded
         you look at all css rules, count IDs, and append :not()s with
         IDs. you can know in JS make IDs in a selector so you can
         create an origin that way
  florian: Thing with @supports is we have to use it as exists today
           and if we introduce a new @supports you have to wait for
           that. Depends on how proposal works out. Maybe a property
           to order and you test the property

  fantasai: I think we should have a more solid proposal first. Have
            some kind of @supports but anything beyond it's not worth
            discussing in the abstract. I think this is a major
            feature so I don't think we should try best for backwards,
            we should try our best to make this as good as possible
            and than create fallback
  <jensimmons> +1 to what fantasai just said
  <fremy> I agree, polyfills are possible, I am not worried, so +1 to
          fantasai
  miriam: Polyfills rely on this falling between existing origins and
          specificity. It's a bit harder if they interact with
          existing origins to polyfill.

  astearns: Sounds like we keep this open and in consideration as we
            work on the feature and than answer once there's a more
            solid proposal.
  miriam: sgtm.
  miriam: Same true of other agenda items
  astearns: Introduce them or skip?
  miriam: Either
  astearns: Why don't you introduce?

Better name for "custom origins"?
---------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4981

  miriam: Term origin has a meaning. If this is falling anywhere
          different or interacts in a different way it maybe deserves
          a name without that meaning.
  miriam: Some discussion. Proposal for "scope" but that's loaded.
          Playing with "layers" or "intents" but don't know if there's
          one that stands out.
  TabAtkins: I favor "cascade layers". Distinguishes but gives right
             idea
  jensimmons: Talking with other folks the word layer is good. Invokes
              photoshop for some authors and way it's used in graphic
              design. Layer speaks for itself, it's a good word to
              have in there
  <jensimmons> cascade layers is :)

  fantasai: How about we call them cascade layers and if we have a
            better idea in the future we file an issue
  miriam: Like that

  AmeliaBR: Interest in expanding so existing things in spec as
            origins are also cascade layers? Same argument that origin
            has other meanings.
  fantasai: I am cautiously in favor. Have to see how this shakes out,
            but if similar mechanism we should rename. If they're
            different we have to rethink.
  astearns: I think it would be cool if we could redefine things in
            terms of this. I don't think we should take that as a
            design constraint. Nice if but not a requirement
  fantasai: Yeah. Switch to cascade layers and once we figure out the
            proposal more if it makes sense to combine we rename
            origins
  astearns: Hearing consensus on cascade layers. Anyone opposed?

  RESOLVED: Call these "cascade layers"

 How do custom origins interact with `!important`?
 -------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4971

  miriam: Touched on this at F2F
  miriam: This ties in closely with question of where cascade layers
          fit in cascade. Interact with origins or some layer below.
  miriam: Question is how for normal in !important styles work in
          these layers. Intertwine in a way that single layer contains
          both normal and important styles so normal and important can
          overrider a different layer. My sense was no, but it would
          help with some use cases like new styles overriding old
  miriam: Other is all important override all normal styles and you
          get 2 layers for each custom cascade and then need to answer
          if they reverse
  miriam: Alternative is it's somewhat customizable and you can
          determine which of these you want

  fantasai: Definite use cases for inverted order that we have. This
            is the way scoped styles work. There is a layer in between
            normal and !important which is animation layer. If someone
            needs a second layer they can have another custom layer
            and don't need !important. Specificity problems should be
            addressed directly. Reverse order important should be what
            we do. Only strong use case is I have old styles I want to
            be lower.
  miriam: Sense is with any of these if you can create custom origins
          you should be able to create any outcome from layering as
          needed.
  miriam: Changes ordering of layers

  TabAtkins: I have an alternative. fantasai explanation is good in
             many, but an independent library you don't want its
             !important to leak out and overrider. Alternative is
             within a cascade layer there are no !important. We ignore
             or syntax error and that way we don't answer this. You
             just make a higher level if you want a higher level
  fantasai: I don't think that quite works.
  fantasai: You as a library don't control the ordering of layers.
            That's dependent on how things are imports and master doc.
            Reasonable for something to express these are my styles
            and these rules need to exist or it breaks. That would go
            into an !important layer.
  fantasai: I don't think that works super well if you have to create
            layers and importer has to know the order. We have a
            mechanism for !important. If a library is using it for not
            important things that's bad on the library
  TabAtkins: Your model is outer page is direct controller?
  fantasai: I think it's possible for things to pull through multiple
            levels. All levels should have idea that if something is
            !important it's because it will be broken if I don't have
            it.
  TabAtkins: Common practice for !important is not the best thing here.
  fantasai: People doing it wrong are already making broken stuff.
            Example is !important is overriding animations already.
  TabAtkins: Seems to be one of the largest bits there.
             Distinguishable from saying layers with no importance is
             anyone using cascade layers couldn't override animation.
             How important is that?
  florian: Reversing your argument if people want multi layer in
           library to override they should create layers and
           !important is to go on top of the rest.

  jensimmons: You took conversation to where I was going. One of the
              underlying debates is how much do we design this new
              thing to be the best idea of a new thing or how much to
              design to deal with how authors think they understand
              origins and cascade and !important.
  jensimmons: We could decide to design an API to match author current
              understanding and doesn't require them to re-learn.
  <florian> +1 to jensimmons
  jensimmons: But I think we should believe that authors will learn
              and we can teach. It will be a breath of fresh air and
              people will be okay. The story will be clear. This was
              old cascade, this is new, and here's a new meaning. I
              think it will be fine.
  jensimmons: We shouldn't worry and think about if we can jump 10
              years ahead when authors know what they're doing, what
              is the ideal.
  <fantasai> jensimmons++
  jensimmons: In this moment debating if !important should go on top.
              It could be useful to them. I think think this is a big
              enough change that it will lead to a new understanding.

  dbaron: I wanted to throw an idea out. TabAtkins was talking about
          what would happen if we didn't have !important. Some
          discussion about what people would do to get it. One answer
          is custom origins could let you do what !important does
          today in a different way. You can say these rules are where
          !important use to be in the old way.
  <jensimmons> I agree with dbaron — and want to say it's super
               interesting to think about not having !important
               anymore. (sort of). Or doubling down on it & making it
               work still....
  florian: Depends on specific of proposal. What I find hard to do is
           in world where you set !important you don't know how many
           layers there will be because you haven't been placed.
           Beauty of the model is where ever you end up your
           !important is on the other side
  fantasai: We have inverted order for scoped style so being
            consistent is good because it helps reinforce. We have it
            for origins and scoping, we should have it for layers.

  myles: Wonder if you could use TabAtkins idea of no !important
         allowed if we allow negative orderings so if you're in L3 you
         can also control level -3 and put things there. Allows both
         worlds
  florian: Put rules in negative of self or negative whatever you
           choose?
  myles: Former
  florian: How different from !important?
  myles: From impl pov it's a collection of layers. It has simplicity
         I assume TabAtkins looking for
  astearns: Building on myles's idea instead of having ! mean invert
            we can have explicit teachable syntax that says where ever
            this layer goes the rule is in the inverse. We can come up
            with something better than !important syntax

  jensimmons: Makes me think it's hard to answer this until we have
              other answers like is there nesting rules, how are they
              layers declared- list or numbers or link tag? What's the
              other parts. Then do we need !important?
  jensimmons: I think the idea of getting rid of it is fascinating. Or
              we realize that to keep things simple we need it.
  jensimmons: I think people will need a way to do use case of
              !important. Override animation or shift bootstrap 17
              under but a couple you need above.
  jensimmons: Maybe we need it going forward but not in !important
              syntax. Hard to know without knowing how other part looks
  miriam: I agree there's a need to escape your layer. That's a strong
          use case to say this one style is required for this to work
          so you have to go to extra effort to override it which is
          what !important is for.

  astearns: Not hearing consensus, I suggest we keep this open and
            work on a syntax where we can have examples and try out
            the use cases in a syntax.
  astearns: Sound alight?
  <fantasai> wfm
  TabAtkins: Yep
  jensimmons: Great discussion; fascinating.
  <miriam> very, thank you all!
  astearns: Yep, cool stuff. Great this is being considered.
  astearns: Anything else on cascade layers?
  <fantasai> +1 to miriam's use case

CSS Syntax
==========

Input stream processing can calculate wrong encoding
----------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/4126

  TabAtkins: If you recall several years ago when first discuss syntax
             and character encoding in stylesheets vs css 2 we went
             really simple. Only recognize a couple
  TabAtkins: Purposefully match HTML closely. If you have a bite order
             it's utf8 no matter the character set.
  TabAtkins: Someone brought up there's a few tests in 2.1 that depend
             on older 2.1 encoding detection which respect charset.
  TabAtkins: Wondering if intentional.
  TabAtkins: As far as I or reporter can tell no one has reported
             issues on this.
  TabAtkins: Keeping number of unit charset detection heuristics to a
             min is good
  TabAtkins: I suggest we keep current syntax and close as working as
             intended

  AmeliaBR: Modify tests and keep spec?
  TabAtkins: Modify or drop the tests. I don't think there in the WPT
             suite. Something should be done with the tests.
  astearns: I have not read through original post, do you think
            original poster will be satisfied with close no change?
  TabAtkins: I think they will be. Mentioned they have no run into
             anyone trying for it, ran into it by running test suite.
             It's a little hard to activate. You have to use specific
             characters at beginning of document that have right
             bites. Technically possible, but not likely.
  TabAtkins: I think it's mostly this test suite fails and according
             to spec something should be different. Did we intend
             this? And answer is yes we did

  astearns: Proposal: Close no change, this is an intended difference
  astearns: Objections?

  RESOLVED: Close no change, this is an intended difference

  astearns: Would like a needs test on this to validate in test suite

CSS Ruby
========

Rename ruby-merge: collapse to ruby-merge: merge
------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/5004

  fantasai: Rename collapse value of ruby-merge to merge. Can we
            resolve?
  <fantasai> https://www.w3.org/TR/css-ruby-1/#collapsed-ruby
  florian: Not implemented?
  fantasai: Not that I know of
  florian: In favor
  fantasai: I don't care
  astearns: We can resolve because no one cares
  astearns: Objections to rename ruby-merge: collapse to ruby-merge:
            merge
  <fantasai> ruby-merge: separate | collapse | auto
  <fantasai> collapse -> merge

  myles: Request that editor adds pictures to this section of spec
  fantasai: Fair

  RESOLVED: rename collapse value to merge

  astearns: Talk to everyone next week

Received on Wednesday, 13 May 2020 23:33:27 UTC