[CSSWG] Minutes Santa Clara F2F 2014-10-27 Part IV: Grid, Test Suites

Grid
----

  - There was a long conversation about the request from SASS to not
      use bare parentheses since they use it for grouping.
      - Brackets were suggested as an alternative. The editors
          stated that when they were originally writing this part of
          the spec, the selection of parenthesis over brackets was a
          coin-toss choice, not a specific preference.
      - There was conversation on which provided more readability,
          brackets or parenthesis which no clear winner, but no one
          strongly disliking either option
      - However, there were a considerably number of people that had
          concerns about the precedent that the group would be
          setting by agreeing to make this change for one
          preprocessor, even though it's a large one.
      - Ultimately, there was no consensus on the change.

  - Rossen brought his proposed algorithm for grid fragmentation to
      the group for feedback.  His algorithm sought to maintain grid
      areas as non-fragmented as possible.
      - There was concern about forcing items onto the next page to
          avoid fragmentation and about defining a non-ideal
          algorithm when implementers may be able to do better
          behavior.
      - Break properties were also discussed with some concern
          expressed that the proposal states that they don't apply
          to grid items, just the content inside.

  - The work gregwithworth has done on collapsing was tabled for the
      time being.

  - Grid's inability to handle problems like this
      https://twitter.com/AlanHogan/status/519256635911307265/photo/1
      should be solved since it's a reasonable case. Fantasai
      outlined a potential approach and she and TabAtkins will work
      on making it possible.

  - Sizing of grid items inside the containing block will be
      clarified slightly in the spec language by explicitly stating
      that sizing is defined by the object's type.

Test Suites
-----------

  - ArronEi will go through the errata on CSS 2.1 and see exactly
      what needs tests so that an update can be published with a
      test suite.
  - He is also working on creating a document that standardizes the
      process for getting tests and will use the backgrounds and
      borders test suite to make sure his process is complete and
      accurate before presenting the document to the group.

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

  Scribe: dael

Grid Layout
===========

Line Name Lists: Parentheses vs. Brackets
-----------------------------------------

  TabAtkins: Before we start full grid, I've been talking to the
             lead maintainer of SASS because they use parentheses as
             a grouping and that's common with preprocessors. The
             only way to work around this is to inject some very
             specific language. She's requesting we revisit the
             syntax and either make it named or use a different
             grouping character.
  ??: What would the named function be?
  fantasai: not-a-SASS-function()?

  TabAtkins: I don't think we...I'm not sure if we've implemented
             the syntax or if we just did it, but we could change
             ours.
  fantasai: I don't think we're shipping.
  TabAtkins: If we're okay coming up with a name, we can just say
             that and address what it would be on the ML?
  Rossen: I wouldn't be opposed.

  TabAtkins: Their request is please don't ever use bare parentheses.
  plinss: What about inside calc?

  <leaverou> shouldn't preprocessors follow CSS instead of the
             opposite? It's much easier for preprocessors to change
             their syntax than it is for CSS.

  TabAtkins: It's already intrinsically-magic. She's talking on the
             property level.
  Bert: We use them in MQ.
  TabAtkins: Different syntax pieces, it's any property where it
             means something different.
  TabAtkins: Right now they use parentheses as a grouping and
             they're heavily used everywhere. They can't change
             their current use and they want to, as much as
             possible, have that for SASS it is a super-set. Any CSS
             is correct in SASS and that would force that to change.
  TabAtkins: And she says that calc is a crazy special case already.

  TabAtkins: We'd be resolving to not ever use bare parentheses.
  plinss: I'm not sure I'm okay with that.
  TabAtkins: This preprocessor is already 5 years old.
  leaverou: CSS has more users then preprocessors. If both options
            are the same we can make it easier for preprocessors,
            but if this is easier for authors we should do it.
  TabAtkins: This is small, though.

  astearns: The parentheses in question are grouping line names?
  astearns: Is there any other place in CSS where we've wanted to
            give alternate names?
  TabAtkins: What do you mean?
  fantasai: One issue is you'll make the syntax more awkward. Even
            if you pick a great name, every time you define a grid
            template, you'll have to type it again. It's not buying
            the author anything great.
  <TabAtkins> http://dev.w3.org/csswg/css-grid/#track-sizing

  rossen: Can they special case?
  TabAtkins: Not without special case-ing this one property and any
             others where we create blanks.
  rossen: They can create a lookup table.
  TabAtkins: They've avoided it until now.

  fantasai: We have three options. 1) switch to brackets
  fantasai: 2) switch to curly brackets.
  TabAtkins: I don't think we want that.
  fantasai: 2) is switch to a short name.
  fantasai: 3) is we tell SASS that the effort to put this into
            special case...we tell them they have to special case
            this.
  fantasai: The downside of switching to name is it makes the syntax
            have a lot of noise and it becomes harder to read. It's
            not helping the authors any.
  fantasai: Downside of telling SASS to special case is they have to
            put in some time to implement a special case.
  TabAtkins: Also, handing stuff in script becomes harder. In this
             particular case the parentheses in a list get
             translated to actual parentheses. It makes the model
             less consistent.

  fantasai: The only option without a downside is switch to brackets.
  fantasai: I'm not impressed with the list.
  bkardell: Brackets is pretty good.
  TabAtkins: The only point of a function is to group.
  bkardell: Also SASS is open source so anyone can submit a patch.
            If the WG felt strongly SASS should change they can send
            a request.
  <bkardell> I don't support us changing SASS
  florian: It's also bad for SASS users.
  TabAtkins: Their population is smaller, but it's not insignificant.
             They have lots of users.
  TabAtkins: I'm fine with square brackets.

  fantasai: Any other issues with them?
  fantasai: The only option I'm not okay with is script.
  TabAtkins: I'm down with square brackets. And in the future when
             we need to group things, we'll just use square brackets.

  <leaverou> I would argue that parentheses are more natural and
             intuitive for any kind of grouping.
  plinss: The forward compat parsing is that you match parentheses
          and brackets. That means we can use them where ever we
          want. That someone else jumped over that isn't our fault.
  TabAtkins: And within functions it's different.
  plinss: But we might have something in selectors or something we
          don't see now in the future.
  fantasai: I think plinss is objecting on principle.
  TabAtkins: I think the practical overrides principle as long as
             there's a reasonable answer to it.
  <fantasai> http://dev.w3.org/csswg/css-grid/#named-lines

  dauwhe: Will brackets feel as natural?
  TabAtkins: You don't need shift.
  dbaron: Is that true for non US keyboards?
  [it's not]
  TabAtkins: Anyone that writes code on their keyboard can find a
             square bracket.
  SteveZ: I'm not opposed but to me traditionally that means
          subscript.
  SteveZ: I think it's going to be a point of mild confusion where
          parentheses would be less.

  TabAtkins: This isn't common in programming languages.
  many: lists
  dauwhe: What % of CSS users are programmers?
  TabAtkins: Pretty low.
  bkardell: It's loaded. A lot of CSS users do basic PHP. They're
            not totally withdrawn.
  rossen: dbaron, didn't you use brackets in your overflow or
          something?
  dbaron: I don't know.
  TabAtkins: It would be this (link above) with square brackets.

  gregwhitworth: What was the argument again?
  TabAtkins: SASS uses parentheses for grouping.
  TabAtkins: LESS has similar problems.

  plinss: I'm not married to the parentheses and I don't mind
          alternate syntax, but I object to us giving up parentheses
          forever.
  <leaverou> plinss++
  florian: We're weighing the pros and cons.
  TabAtkins: Any argument we make here is for anywhere we use
             parentheses.
  SteveZ: If you establish that square brackets are ways of
          identifying chunks, we should use that anywhere that we're
          doing chunks.
  florian: And if we find another reason to use naked parentheses we
           can still do it.
  <leaverou> As many pointed out, it's not this particular property.
             If we use brackets here, we have to use them in every
             future property that needs grouping/chunks of any sort,
             for consistency

  rossen: So if you go back to them and say no, would they declare
          war or...?
  TabAtkins: They'll figure something out, but it would be
             frustrating for them and their users.
  bkardell: The problem is there's a bunch of SASS out there now.
  rossen: Existing SASS targeting grid.
  bkardell: That's true.
  TabAtkins: They can't tell context immediately. It's probably
             possible to make it work, but it would be weird.
  plinss: Well, they could change it.
  TabAtkins: That would break that "all valid CSS is valid SASS."
  plinss: If that's their rule, they violated it.
  TabAtkins: Technically any syntax they choose violates that
             because we can use it.
  plinss: I don't want to constrain ourselves because someone else
          picked a syntax. If they had restricted themselves to the
          extension points in our syntax they'd be fine.
  TabAtkins: Like @rule
  plinss: And prefixes
  TabAtkins: But they didn't and we can't go back in time. My first
             answer was "sucks to be you", but then she explained
             more and it makes sense.

  florian: Given that I don't find square brackets odder it's fine.
           In this case it's fine.
  leaverou: It's creating a precedent
  florian: If we find later a place where naked parentheses is
           better, screw SASS but right now we have an alternative
           that's not any worse.
  florian: If you think list you're in trouble, but this it doesn't
           matter square or round.
  TabAtkins: Sizes may be keywords so you need to disambiguate.
  fantasai: Or we might add the keyword.
  ???: Use strings?
  TabAtkins: It's uglier.
  fantasai: We had strings before. We switched to idents because
            that's what CSS uses for custom names. Also it's not
            just here, we use them in the grid position properties.

  rossen: I think the argument is beyond this. I think this is on
          the grounds of do we give up parentheses.
  florian: I don't think we have to always, but in this case they're
           not the only good choice.
  Rossen: You're saying that later in time there will be a larger
          chance of us going to SASS and ask them to change when
          they have more content because we'll have to use them.
  TabAtkins: We're making future us deal with it.
  leaverou: And they don't need to change until this ships.
  TabAtkins: We hope to ship in Q4
  florian: Forcing SASS users to use inconsistent, we want to avoid
           that.
  leaverou: But they'll special case.
  florian: But they'll have to remember the special case.

  <zcorpan> how about grid-template-columns: first nav 150px,
            main 1fr, last; ? i.e. use comma, all but the last
            component value are custom names
  <SimonSapin> Rossen, Is IE shipping the keywords-in-strings syntax
               of grid-template-areas?

  bkardell: Is there a compelling case why parentheses are better
            here? leaverou, I feel like you don't like this and I
            want to figure out why
  leaverou: I'm worried about the precedent.
  TabAtkins: When SASS has asked before, I've said no. It was a
             little inconvenient. They've just dealt with it like
             when we use /. This is a different bucket and way more
             inconvenient.
  bradk: Can they change their syntax?
  TabAtkins: Not at this point.
  TabAtkins: It would just make all SASS scripts broken.

  bkardell: Let me re-frame. I like brackets better.
  bradk: They make me think of attr.
  TabAtkins: That is where we use it right now.
  fantasai: Selectors is a completely different syntactic space.

  TabAtkins: If we pretend I had always used square brackets, is
             there an argument to switch to parentheses?
  <fantasai> Note, it wasn't Tab's suggestion to use parentheses
             originally, it was mine. :)
  dauwhe: The corner is hard on my eyes.
  dbaron: Would it inconvenience other preprocessors?
  TabAtkins: Not that I'm aware of.
  <dbaron> (Tab said he thinks [] are fine for SASS and LESS.)

  adenilson: For this specific case in grid we change to square, but
             it's important to let them know that this is an
             exception and we may use parentheses in the future.
             Since you'll have close contact, we can say we care
             about SASS but we are leading.
  TabAtkins: In this case which character doesn't effect our users.
  plinss: I think we need to be definitive that it's a future them
          that has to deal with this. If we do this the installed
          base of parentheses users will keep growing. Even if we
          say yes but we reserve the right, but we're creating a
          world where that's harder.
  TabAtkins: We can always say screw it SASS.
  fantasai: If the choices were between SASS fixes or we use names,
            I would says SASS has to fix its stuff.

  TabAtkins: So, square brackets. Objections?
  plinss: I object.
  TabAtkins: You object to future problems.
  fantasai: I think we switch to square brackets and tell SASS that
            if we have this problem again they have to fix it
  <hiroshi2> I think, to think about SASS users and scripts are
             important. but the time to take effects this
             parentheses would take some time. so, now we can ignore
             about sass. (SASS can moderate this change)
  TabAtkins: Remember future us has never treated past us's
             resolutions as unchangeable

  fantasai: Propose we switch grid line naming to square brackets
            and tell SASS that in the future they'll have to deal
            with it.
  rossen: Can we do a straw poll to see if others are objecting?
  glazou: I'd like to hear precisely.

  plinss: Is anyone else objecting to switching to square brackets?
  Rossen: I'm with you on the basis to giving up parentheses, yes.
          For a spec def that no one ships I don't care.
  florian: You can buy into a slippery slope where it applies.
  plinss: No matter what we say, we are.
  TabAtkins: No, we're not.
  plinss: If we're saying it's a bad idea now it'll be worse later.
          And the amount of pain and size will get worse.
  plinss: We're either forcing them to take pain now or force them
          to take a lot of pain later.
  Rossen: And you're saying if we use brackets here and need them
          again later we'll be inconsistent with ourselves.
  * glazou is with plinss and objecting too
  * ArronEi is also with plinss and objecting as well

  fantasai: We just did a coin toss to choose before and now SASS
            says we have a reason for you to go the other way. In
            the future we may need another type of grouping that's
            not square brackets, then we can tell SASS they have to
            deal.
  fantasai: We're saying next time we have this problem they have to
            deal.
  <leaverou> if in the future we have a similar discussion, there
             will also be the argument of consistency, i.e. "but
             we're already using brackets here and there"
  <leaverou> so it essentially makes it more difficult to resolve to
             parentheses in the future.

  plinss: Do you believe SASS will make changes based on this?
  fantasai: No.

  florian: As for it being worse in the future, this isn't obvious
           that SASS user base is growing faster than CSS.
  plinss: SASS may go away, but another one may step in.

  glazou: We have two arguments and no one is changing their mind.
          We have at least three objections. Raise your hand if
          you're objecting to using square brackets.
  TabAtkins: You're objecting to if we had picked brackets in the
             past.
  plinss: But if we had done the opposite we would be in the same
          place.
  glazou: So let me see hands.
  glazou: It's significant. It's too much.
  florian: We could use angle brackets, but it would inconvenience
           HTML users.
  dauwhe: This doesn't look like consensus.

  TabAtkins: I really don't like it.
  fantasai: People are objecting to changing but not to brackets.
  TabAtkins: We can say in the future we can tell SASS to change.
  plinss: We're telling SASS they made a mistake and they have to
          fix it now.
  TabAtkins: Your preferences are path-dependent
  glazou: We didn't choose to use the $ because it was used by
          preprocessors and we asked if they could change and they
          could not.
  glazou: We cannot be blocked by a 3rd party
  florian: It's about SASS users. Its inconvenient there.
  bkardell: If your argument is true, we already blocked ourselves.
  bkardell: If the argument is we set a precedent that we'll change,
            we already did it.
  <fantasai> could've just said script users need to use $$, just
             like in bash
  <fantasai> everyone else can use $
  glazou: But we found another option
  bkardell: Which we can do this again. If SASS had a WG rep they
            would have said they don't like parentheses.

  plinss: We're into our break. Lets go on break, meet back at
          3:30ish. If we come back with changed minds we can revisit.
          Otherwise this is done.

  <astearns> One possible argument that brackets could be better -
             the names can be nested in a repeat function
  <astearns> I find this: repeat(4, 10px [col-start] 250px [col-end])
  <astearns> easier to read than this: repeat(4, 10px (col-start)
             250px (col-end))
  <shans> astearns: me too

  [Snack Break]

Fragmenting Grid Layout
-----------------------

  plinss: Other grid issues?
  Rossen: Did we close on the previous one?
  gregwhitworth: It was no consensus.
  plinss: What's next on grid?

  <Rossen> http://dev.w3.org/csswg/css-grid/#pagination
  Rossen: The one issue I wanted to cover is grid fragmentation
          which is something I added earlier today so I don't expect
          anyone to have reviewed it yet.
  Rossen: I can go over the proposed behavior and explain some of
          the decisions.
  Rossen: So, for context, CSS grid is a layout mechanism that
          allows you to divide your area into rows and columns and
          define grid areas in between those and the content can
          influence those by their size.
  Rossen: When we talk in terms of fragmentation, it's not a use
          case where grid should be expected to work great.
  Rossen: In other words, grid as a layout primitive in an ideal
          should be used in non-fragmented cases. It should be in
          the page, not across many pages.
  Rossen: With that in mind, our intent with the proposed algorithm
          is we wanted to keep the areas as intact as possible.
  Rossen: That's why that algorithm is fairly simple. Any time you
          come across a row on a fragment break, we would want to
          push that row to the next fragment.
  Rossen: The question is how you would resolve fr and auto row
          sizes because they depend on content and you might end up
          with reverse dependency.
  Rossen: The current algorithm resolves grid in the first fragment
          space, assuming it has a definite width. Then we resolve
          all the fr and auto rows, then we would fragment that
          layout.
  Rossen: Again, the question is what happens when a row gets to be
          fragmented. For example it's the first row and it's long
          enough it needs to fragment.
  Rossen: Obviously the content will become longer and larger than
          what we measured inside continuous space.
  Rossen: We would fragment the current rows and will overflow grid
          rows in the case of fixed height or extend if they are
          auto or fragment without having to re-layout the grid
  Rossen: Does that make sense?

  SteveZ: The last statement of if the second column overflows, does
          that extend the row across?
  Rossen: If it's not fixed height.
  SteveZ: So you're taking the max?

  plinss: I think what you're saying makes sense but falls down in
          more complex cases. Maybe this is a non-issue. You said if
          a row is fragmented you take all the areas...
  Rossen: All the areas that start in that row. So what happens with
          the lines, the line on the row, you can align bottom in
          that fragment and bottom on the other.
  plinss: Probably available on both fragmentainers.
  plinss: So say you have a grid that's a single cell and you have
          something that spans two lines. So the spanning cell gets
          split in the middle. It may get taller than it would have
          been and needs to behave properly to push the line down.
  Rossen: Yes, in step 4 we say you would not take that into account
          when spanning items.
  Rossen: I'm sure that we'll keep refining this as we come across
          more cases, but as a general intent, we want to keep grid
          areas as non-fragmented as possible. In the error case
          where a row has to fragment, we follow normal rules and
          that row may or may not extend depending on if it's set to
          auto or fixed.

  fantasai: I don't think we should push to next page if they don't
            fit. People want to use grid for page layout. If you
            have a bunch of headers/navigation and an article, you
            don't want a lot of blank space between the header and
            the start of the article. Tables don't avoid breaks
            within rows that for that reason. If you want that
            behavior you can set it with 'break-inside: avoid',
            but it shouldn't be an unchangeable default.
  fantasai: The other comment, fragmenting of grid layout will have
            similar problems to flex layout. It might make sense to
            use the same spec text which is 'here are the general
            rules' and not spec the algorithm except in an example.
  fantasai: I think that trying to get, we don't want to push
            implementors to implement a fragmentation algorithm that
            isn't ideal and any we put in right now won't handle
            flex ideally. Like if you have something with a lot of
            flexing and pagination, you sometimes want to pull
            things *up* to optimize space rather than pushing it
            down.
  fantasai: If you're using flex to size you have extra space on the
            first but not the second, if you're fixed height you
            want to take that space to avoid a break by pulling into
            the first page. I don't want to normatively require
            something simple when we know people can do better.
  fantasai: We should encourage them to do better.
  <fantasai> Flexbox: http://dev.w3.org/csswg/css-flexbox/#pagination
  Rossen: I'm not opposed to it.

  astearns: I have a question, it says the break properties don't
            apply to grid items. There's no way to assign a break to
            a grid item. If an element is assigned to a grid area
            and it has a break before...?
  Rossen: It was clarifying to say you can't apply break properties
          to grid areas.
  fantasai: Flexbox propagates it out. For consistency we should do
            that. Break-inside should apply to all these things.
  plinss: I'm not so sure about that. If you have multiple columns
          and have a break, do you want to break every column at the
          same place?
  astearns: You could have items in the same row on different pages
            which would be weird.
  dbaron: I can imagine cases where pages would work badly if you
          don't line it up. So you have something on the side and it
          breaks in the main content, there's an expectation that
          they'd line up.

  fantasai: If you have a forced break inside a flex item, it's
            basically an expanded margin within the flex item,
            and stretches its content height.
  fantasai: If you have something that's 'I'm a flex item break
            before me', that pushes the item to the next page.
  fantasai: They just operate on the actual item.
  Rossen: That's the easy case.
  plinss: Problem is you have a multi-column grid. One thing in
          there wants to break. Does it break the entire grid?
  fantasai: Yeah. We can't put a forced break property on grid rows.
  plinss: I know cases where that's really bad.
  fantasai: You can't put it on the grid row, just the items in it.
  plinss: So I have multiple columns it's a magazine flow, and one
          article has a break.
  fantasai: It won't break the grid, it increases the height of the
            item. If you say this *item* should start on a new page,
            it pushes down the whole row.
  astearns: And you could end up in a situation where you have a row
            on the first page and a duplicate on the second page.
  plinss: Authors are going to want it both ways.
  fantasai: If they want it just in that, they can create a wrapper
            item. You can work around that. You're looking at
            conceptually there's an item that has stuff inside it
            and you're pushing stuff up or down.
  fantasai: I'm having a hard time coming up with examples where
            this makes sense.
  fantasai: If you're trying to get things to line up, you do that.
            If you don't want them to line up you shouldn't be using
            grid anyway. If the goal is you're using grid you want
            things to line up.
  fantasai: If you think this is a bad idea, maybe we should revisit
            flex.
  plinss: I think it makes sense for flex, but that's one dimension
          and this is two.

  Rossen: I'm mostly modeling after table layout.
  fantasai: You never have a case where a table cell starts on the
            next page just because all its content didn't fit.
  plinss: Page break before an entire cell.
  dbaron: I think the spec says it's not supposed to wrap.
  dbaron: I believe Gecko has bugs saying it doesn't work in Gecko
          and it does in other implementations and we've pointed to
          the spec saying it's not supposed to work.

  Rossen: We can try a different heuristic. Going to your example
          where you used grid to create a header and content. I'm
          not sure pushing grid down and starting on the second page
          is worse than breaking on the first page.
  fantasai: I think that it's much worse. If you want that you can
            opt in, but if you dictate you can't do that, no one
            will ever have a normal looking article. If we want it
            to replace tables and floats, we want it to look like
            that when we're printing. The printing should be
            equivalent.
  Rossen: Which is what tables will do.
  fantasai: They do not push. Want me to write a test case?
  dbaron: Bigger point isn't just about equivalence. They'll design
          a page and just expect printing to work. Massive gaps
          count as not working. So do a bunch of other things.

  SteveZ: What I don't understand, I would like to start the next
          row on a new page if it's a small gap. Since that's a
          conditional, we could define a property that says when to
          start a new page, but there's something we want to happen
          automatically that isn't force to a new page or break into
          a new cell.
  fantasai: I think if you want that you want that for all layout
            models.
  fantasai: File a bug against fragmentation.

  plinss: You might need a precedent where you have multiple grid
          items and conflicting layout. You have to come up with
          something rational for the whole row.
  fantasai: For the content of a grid item, you don't have two items
            consecutively in the same row, you just have one item
            and content inside the item. If you have to do different
            fragmentation requirements, then that just effectively
            increases the content height of the row.

  plinss: Is that it?
  Rossen: That's pretty much all I had.
  Rossen: That was the issue we addressed. We'll keep working given
          the feedback, but at least we don't have a big gap anymore.

Collapsing Rows and Columns
---------------------------

  plinss: The wiki said collapsing.
  gregwhitworth: We started by trying to come up with ways to
                 collapse a grid. At first it seemed simple like you
                 should be able to call an column, but then we
                 realized that the user would want to do that based
                 on an item, not a column.
  gregwhitworth: We came up with a couple ways to do it. I can paste
                 in the one that would be a pain to implement.
  <gregwhitworth> .grid::grid-row(“row-name”) {
  gregwhitworth: Inside that would be visibility: collapse and you
                 could declare a row name.
  gregwhitworth: There's no way to attach to a thing, so it would
                 end up being quite verbose. And I would like to
                 interact with an item and talk to its parent.
  plinss: The grid row solution; you're using two indexes to find it.
          You name/ID the two lines.
  plinss: Or use the span notation.
  gregwhitworth: I think it's one we can revisit.

  Rossen: Let's table this.
  plinss: But basically you're defining a new pseudo.
  gregwhitworth: It's the only thing we came up with.
  Rossen: Okay.
  plinss: No other issues?
  Rossen: We have issues, but nothing that we've worked on.

Auto-column-count Grids
-----------------------

  fantasai: There was one. Let me find it.
  <fantasai> http://lists.w3.org/Archives/Public/www-style/2014Oct/0108.html

  SimonSapin: I sent something months ago. Grid doesn't define
              determining the size of the grid item which is
              unfortunate.
  TabAtkins: It does.
  SimonSapin: That was fixed?
  fantasai: I'm linking to something different.
  TabAtkins: SimonSapin can you find the original complaint?

  <fantasai> https://twitter.com/AlanHogan/status/519256635911307265/photo/1
  fantasai: The issue if you look at the second link (right above),
            it's the problem.
  fantasai: Well, this was kinda a grid layout. To try and get that
            layout you can't do it right now. There's a couple of
            problems.
  TabAtkins: The reason you can't do it in grid, it's not a 5
             column, it's fixed width columns, but as many as
             you need to fill the available space.
  fantasai: We need two things to fix this, which seems pretty
            reasonable.
  fantasai: To get this to work properly you need to put as many
            columns as fit items of size x. What we need is a repeat
            function that says as many columns that will fit in the
            space and they're 15em wide.
  fantasai: I think it would be useful and encourage flexible grids
            that look good on multiple screen sizes. I think this
            should be simple, but I don't have syntax yet.
  fantasai: Second thing that's necessary is, you'll notice the
            space is just enough that the columns fill the space. We
            have a property in flex that gives you this alignment.
            The simple solution is to reuse the property and have
            that mean there's a gap between the columns. Once you've
            figured out the size, space out the grid with that
            amount of space.
  fantasai: It might be tricky to define in terms of spanning, but
            it's a property we have.

  TabAtkins: We were planning to add row-gap and column-gap.
  fantasai: This is in addition. You might want those as minimums.
            We have basic syntax here.

  SteveZ: If I have a span, do I assume the span covers the gap?
  TabAtkins: So if your edge, it'll go over to the closest.
  SteveZ: So the ends of the span line up with the ends of rows.
  TabAtkins: It's difficult to spec, but we'll handle it.

  TabAtkins: This stuff should be the first things in level 2. As
             soon as things start to ship, next year we can start on
             level 2.
  fantasai: I think the repeat is almost syntactic sugar. The
            justify is tricky.
  TabAtkins: You can center the whole grid or, if you center each
             item within, you can get space.
  fantasai: Which is I think is good enough. I think it would make
            people happy if we did repeat to fill.
  TabAtkins: I'm trying to be as conservative as possible to get
             grid level 1 done. I want grid and flexbox to finish at
             the same time.
  Rossen: You're not alone.

  * leaverou notes that the tweet fantasai linked to also
             demonstrates a great case for static value
             interpolation (that we discussed a while ago in the ML)

  plinss: Is that it?
  fantasai: I think TabAtkins and I need to do a lot of editing and
            we'll come back.

Sizing the Grid Container
-------------------------

  SimonSapin: I have an issue. There was grid containers, that's
              fixed. The only thing I can find on sizing with ident
              is by default they're stretched in the grid area.
  TabAtkins: Grid defines the containing block as the containing
             area, what else do we need?
  TabAtkins: The size is that of the containing block.
  SimonSapin: You said size is the containing block. Where is the
              sizing defined? Same as blocks?
  TabAtkins: If they're a block they display as block?
  Rossen: This is the same as asking how the table cell size are
          defined by the view of table?
  SimonSapin: That's defined. What we do in the spec, the outside is
              defined specifically. Blocks have their own sizing,
              what is the sizing of grid items inside the containing
              block?

  fantasai: He has a point. They are participating in a grid layout
            context. What that does is not defined.
  fantasai: You're confusing display inside and outside.
  TabAtkins: I'm not. It doesn't have a display outside.
  TabAtkins: Once we've established how big based on the layout
             algorithm, it should just have a containing block.
  dbaron: So if a grid item is just display block, and it has a
          background, the background fills the width of the grid
          cell but not the height?
  TabAtkins: If its got align self stretch, it's height will be the
             height of the grid area.

  fantasai: Normally is under-defined because there's no normal.
            let's look at width.
  fantasai: If align-self is start, how does it display?
            Shrink-wrap?
  TabAtkins: Flex says that. What needs to be defined besides the
             containing block.
  fantasai: We need to say that if it's start it's shrink-wrapped.
            If it's not we should say that.
  SimonSapin: Maybe by normally you mean like blocks. That's fine.
  TabAtkins: But we can't because if you're a table you don't.

  Rossen: If your item is another grid, what do you expect?
  TabAtkins: Certain types of things, flex puts requirements on how
             you size. But sometimes the layout says format as
             normal and give me your size.
  TabAtkins: How does a block layout, it does things and you get a
             size back.
  Rossen: You get a grid item that is a grid. In this case normal
          means do your grid layout and give me back your size. If
          that item happens to be table, it sizes like a table, if
          it's block it will behave like a block.
  TabAtkins: So you're looking for context on how blocks behave and
             I'm not getting what exactly you want.
  TabAtkins: Some display models put extra constraints on how
             children layout, but otherwise the rules should be
             defined by the layout mode.

  dbaron: It sounds like if the editors don't agree what the spec
          says, they should make sure there is language.
  TabAtkins: I'd love to but I don't understand what's being asked
             for.
  SimonSapin: When in alignment it says that grid items stretch to
              fill the area, what does it mean.
  TabAtkins: The align: self defines how you stretch.
  SimonSapin: So the default is auto.
  TabAtkins: Which is stretch for grid items.
  TabAtkins: Chrome isn't conformant with this right now. We're in
             the process.
  SimonSapin: Maybe add a note that says the sizing of grid items
              depends on the items' layout mode.

  Rossen: Do we have this text on flex?
  TabAtkins: Flex puts some constraints, but it just says do layout
             based on these things. I'll find it and if it's
             inconsistent, we need to fix it, but I'd like to know
             why it's inconsistent or incomplete.
  <TabAtkins> Flex algo line 3E
  TabAtkins: Is this insufficiently specified? It's the same level
             as grid right now.
  SimonSapin: Okay.
  TabAtkins: If you can figure out what needs to be stated in those
             cases we can fix that.

  Rossen: An editorial note?
  TabAtkins: I can't think of what it should say. If you can come up
             with something we'll put it in, but I think that 'do
             layout as you would normally for your display type' is
             a thing that doesn't need more qualification.
  SimonSapin: The thing I'm missing is for it's type.
  TabAtkins: Okay. That's also missing from flex layout right now.
             Okay, we can add detail as to what it means to do
             layout.
  TabAtkins: Alright.

  TabAtkins: Can you send a reminder to what wording you want in
             flexbox?
  Rossen: Or just put it in the minutes. We'll parse it out.
  plinss: So is that it on grid?
  Rossen: We're done.

Topic Search
============

  Rossen: Who put flexbox?
  fantasai: I think we were expecting to have the issues in.
  Rossen: Can we push that to tomorrow?

  plinss: That's the agenda for today. We should pull something from
          tomorrow.
  [general mentions of brackets]
  ArronEi: The test suite?
  TabAtkins: We're talking about 3.1 Who put the 2.2 test suite?

Test Suites
===========

  <astearns> https://wiki.csswg.org/test/css2.1
  Bert: I put 2.2 up. We talked about publishing an updated 2.1 with
        the errata and we decided we couldn't because we don't have
        a test suite.
  Bert: Each errata needed one or more tests and there were people
        supposed to write them.

  [crickets... literally thanks to rossen]

  astearns: There's assignments, but nothing indicates if it's done.
  TabAtkins: There's reviews of changes, but not of tests.
  TabAtkins: ArronEi is on most of the lines.
  ArronEi: I was surprised.
  ArronEi: I can look at my stuff, but it won't be for a couple of
           weeks. Maybe next conference call.
  ArronEi: If I'm starting, I can look at them all and give an
           update on all of them.

  ArronEi: The other thing is about the current test suites for
           everything in CR. I'm starting to put together a detailed
           document on how to approach testing since its been ad hoc.
  * astearns dismally ad-hoc
  ArronEi: I want to direct the testing a bit more so we know how to
           approach various tasks. I'm putting that together to get
           done in the next few weeks so we can attack specs in the
           same way. I'm going to test my documentation by testing
           it against whatever spec needs the most done.

  ArronEi: Which one is the highest priority?
  fantasai: Backgrounds and borders is almost done. It needs someone
            to pull it together.
  ArronEi: That's my question. I'll create my process document based
           on that and test my theories. After that's tested and can
           move forward I'll hand it over.

  florian: When it comes to writing tests from scratch, we also have
           the case of the existing mountains of un-reviewed tests.
  ArronEi: I'm going to have the review and updating of those. I
           know there's a lot from backgrounds and borders that are
           coming from a lot of places.
  florian: Opera has large amounts of probably good tests, but they
           need updates.
  ArronEi: I'll make sure I cover something on who to contact to ask
           for tests.

  fantasai: Backgrounds and borders needs triage. There's a bug on
            that.
  ArronEi: I don't want to create new tests until I have everything
           documented.
  ArronEi: This isn't the case for all specs.
  fantasai: Pretty much anything implemented has a bunch of tests.
  ArronEi: I'm trying to catch all the pieces. I'll focus on
           backgrounds and borders and put links on the wiki.
           Hopefully in the next month or so we'll have a process we
           can hand to other people.

  plinss: That's it on testing?
  ArronEi: That's all I have.
  plinss: Anything else from tomorrow?
  plinss: the ::role() proposal?
  smfr: I think that was James Craig.
  TabAtkins: I think it should have been and it was testing of aria
             roles? Let's get him in here for that one.
  plinss: So are we done for the day?
  plinss: I think we're done.

  [End of Day]

Received on Thursday, 18 December 2014 01:46:29 UTC