07:06:06 RRSAgent has joined #css 07:06:06 logging to http://www.w3.org/2017/08/03-css-irc 07:06:08 RRSAgent, make logs public 07:06:11 Zakim, this will be Style_CSS FP 07:06:11 Meeting: Cascading Style Sheets (CSS) Working Group Teleconference 07:06:11 Date: 03 August 2017 07:06:11 ok, trackbot 07:06:47 Bonjour to Zakim, RRSAgent, and trackbot 07:10:48 bdc has joined #css 07:12:25 dauwhe_ has joined #css 07:17:23 Florian has joined #css 07:18:31 ericwilligers has joined #css 07:19:03 bdc has joined #css 07:20:45 present+ 07:20:48 present+ 07:20:56 present+ 07:21:06 present+ Myles 07:21:08 present+ 07:21:09 present+ 07:21:10 present+ Surma 07:21:12 present+: Myles 07:21:20 ScribeNick: fantasai 07:21:38 present+ bdc 07:21:45 present+ dauwhe 07:22:33 gregwhitworth: Issue wrt replaced elements as table cell 07:22:37 https://github.com/w3c/csswg-drafts/issues/508#issuecomment-317529294 07:22:43 present+ 07:22:45 present+ 07:23:01 Topic: replaced elements as table cells 07:23:03 gregwhitworth: We added a diagram of what the spec says to do 07:23:08 github: https://github.com/w3c/csswg-drafts/issues/508 07:23:14 https://github.com/w3c/csswg-drafts/issues/508#issuecomment-260486721 07:23:31 dgrogan has joined #css 07:23:33 gregwhitworth: Made a table of results 07:23:46 glazou has joined #css 07:23:59 gregwhitworth: what we tried to do, where it behaved more like block, specified to be as block 07:24:08 gregwhitworth: if behaved more like inline, specified as inline 07:24:12 gregwhitworth: we dont' have a strong pref 07:24:24 gregwhitworth: This is 1st to discuss 07:24:42 dgrogan: WE talked about this in Chrome, don't want to defend our behavior. I todesn't make much sense 07:24:57 gregwhitworth: For firefox, we prefer firefox behavior 07:25:11 gregwhitworth: It seems like author did something wrong, so make it more obvious it's wrong 07:25:22 dbaron: One question here is do you do anonymous box construction around these things 07:25:26 gregwhitworth: 07:25:29 gregwhitworth: no 07:25:38 dbaron: Do you think some of these results are because of anonymous box construction? 07:25:59 gregwhitworth: they don't create separate cells 07:26:08 present+ 07:26:11 fantasai: They wouldn't, if they did anonymous box construction ...? 07:26:16 gregwhitworth: ... 07:26:39 gregwhitworth: So besides Chrome having pref, anyone else? 07:26:45 tantek has joined #css 07:26:52 svillar has joined #css 07:27:01 Rossen: So path forward is to fall back to Firefox's behavior? 07:27:19 tantek has changed the topic to: Paris agenda: https://wiki.csswg.org/planning/paris-2017#topics, logs: https://logs.csswg.org/irc.w3.org/css/today 07:27:27 fantasai: Seems to me that making it block would make more sense 07:27:36 present+ 07:27:49 fremy: Wouldn't be Web-compatible 07:27:55 present+ 07:27:58 gregwhitworth: Any objection to resolve on Firefox's behvaior? 07:28:19 RESOLVED: All internal table displays on replaced elements to behave as 'inline'. 07:28:31 RESOLVED: table falls back to block, inline-table falls back to inline 07:29:02 tantek: Point about anonymous box construction, are there tests ? 07:29:10 gregwhitworth: I'm sure we have tests for it somewhere 07:29:46 tantek: ... 07:29:54 fantasai: What do you mean anonymous boxes don't get constructed? 07:30:22 dbaron: Do individual things create individual table cells, or group together into one cell 07:30:28 svillar has joined #css 07:30:41 dbaron: Do different things depending on row-group vs table-cel etc 07:31:03 tantek: Based on what dbaron said, maybe just copy what Firefox does 07:31:16 present+ 07:31:49 The resolution is specific about what the behavior is 07:31:50 fantasai: If it's defined as "behave as inline", then anonymous box construction is defined 07:31:58 dbaron: Could do anonymous box before, rather than after treating as inline 07:32:01 ... and it is not "just repeat what Firefox does" 07:32:07 fantasai: That would end up with improper table structures, which the spec does not allow 07:32:38 Topic: min-width and percentages on table cells 07:32:42 github: https://github.com/w3c/csswg-drafts/issues/607 07:32:49 fremy: Next issue is min-width and percentages 07:32:59 https://github.com/w3c/csswg-drafts/issues/607#issuecomment-317532741 07:33:17 fremy: width behaves as min-width on tables, so it's a bit redundant 07:33:43 fremy: Browser generally ignore min-width of percentage, except Firefox 07:33:45 present+ 07:33:57 fremy: Would like to ignore percentages 07:34:10 dbaron: Would like to explain why percentage on min-width overrides width 07:34:16 dbaron: That's the general behavior of tables 07:34:40 dbaron: If a column has cell that's a lenght and cell that's a percentage, it ignores the length instead of the percentage 07:34:51 fremy: We should go with the more interop solution 07:35:00 fantasai: What about fixed tables? 07:35:35 Rossen: What would be different? 07:35:53 fantasai: widths aren't "minimums" in fixed layout, they're honored and the content of the cell doesn't matter 07:36:02 fantasai: I would expect min-width and width to interact as for blocks in that case 07:36:16 Fixed layout for table cells is the same as in normal 07:36:40 the only difference is that the overall column sizing and distribution is based on the first row only 07:36:41 fremy: Our goal was to spec most interoperable behavior 07:36:57 fremy: So we should go with the non-Firefox behavior 07:38:08 fantasai: But what about fixed tables 07:38:22 Rossen: You do the layout based on the first row 07:38:52 fantasai: ... 07:39:05 dbaron: fantasai is saying that in fixed table layout, you honor the width even if the contents overflow 07:39:23 fremy: It's true content overflows even i nthe first row, but that's not the problem 07:41:31 fremy: But if you have a table and you set 300px on the table and 100px on the two columns, then you get 150px columns 07:41:39 fantasai: but we're talking about a different case 07:42:09 https://jsfiddle.net/gvco0t54/2/ 07:42:47 fremy: min-width % on fixed tables is ignore 07:42:55 glazou: Is your goal only interop? 07:43:23 fremy: Yes, all browsers except Firefox ignore the min-width 07:43:41 glazou: Yes, but you haven't considered the user's perspective. From the perspective of the Web author, why would you ignore min-width? 07:44:04 s/min-width/min-width percentage only on these elements/ 07:44:15 fremy: I don't think there's a strong reason, except this is what browsers do. 07:44:27 fremy: No good reason not to do it, except we have multiple impls 07:44:32 glazou: Web browsers can be wrong 07:44:46 glazou: It's not all browsers, there's at least one that implements it 07:45:06 astearns: It's been here for decades 07:45:19 glazou: It's been in Firefox for decades too 07:45:27 dbaron: We do get requests from authors to make these things work in tables 07:45:40 dbaron: e.g. we get requests for max-width to work, but that's a bit harder 07:46:35 dbaron: It's weird to try to honor web author requests for new features, but here where we have the feature they want, we decide not to have it because it only works in one browser not four 07:47:00 Florian: we have evidence that the Web doesn't break if you don't support min-width, but we also have evidence that it doesn't break if you support it 07:47:19 gregwhitworth: The only reason we're working on this spec is because we'll try to fix a bug and other sites will break 07:47:35 gregwhitworth: I guarantee you that there are websites that are broken if 3/4 browsers have interop 07:48:11 fantasai: ... 07:48:20 fremy: In tables widht works like min-width 07:48:31 fremy: The author doesn't lose anything here 07:48:49 fremy: I don't buy that we are bothering authors, if you want to use table you would learn to use width 07:49:01 fremy recites history of widths 07:49:05 and HTML 07:49:14 glazou: The problem is with "authors should learn CSS' 07:49:26 gregwhitworth: Your assertion is also that authors should test in Firefox, and we know they don't 07:49:42 gregwhitworth: We put opening in the spec, .. 07:49:52 gregwhitworth: 3 browsers are shipping this way, that's the de facto standard 07:50:56 fantasai: ... 07:51:17 fremy: ... doesn't work 07:51:51 fantasai^: You have to consider what browsers do but also what makes sense. 07:52:14 fremy: min-width and widht are just widths 07:52:18 fantasai: except in fixed tables 07:52:23 dbaron: please add tests to WPT 07:52:44 s/please/I guess I'm OK with this, but please/ 07:53:08 glazou: I can live with it, but I find it regrettable 07:53:23 Rossen: Proposed that min-width: % is ignored on table cells 07:53:33 RESOLVED: Ignore percentage min-widths on table cells 07:54:13 Topic: resolution of percentage heights on children of table cells 07:54:17 https://github.com/w3c/csswg-drafts/issues/474#issuecomment-317544515 07:55:03 fremy has joined #css 07:55:28 fremy: Bit of history 07:55:38 fremy: 1st issue is that Firefox for a long time had very different usage for height on table cells 07:55:50 fremy: Height on table cells was applied on table cell not on row 07:56:02 fremy: But earlier we resolved that height on table cells is applied to th row 07:56:06 fremy: That change was not made in Firefox 07:56:20 fremy: For that reason, firefox does very different resolution of % on table cells 07:56:25 fremy: All other browsers have similar behavior 07:56:39 fremy: Which is 1st computation of layout, cell doesn't have any size, so % is treated as auto 07:56:44 fremy: Then you do a 2nd layout pass 07:56:54 fremy: In this case, all browsers will apply the percentage based on size assigned to the row 07:57:03 fremy: Which is also assigned to all cells in the row 07:57:18 dbaron: Is it interoperable when you do the 2nd pass and when don't bother with 2nd pass 07:57:29 fremy: We always do 2nd pass when there's a % 07:57:32 dbaron: that's not what I found 07:57:41 fremy: Testcases we wrote gave identical results 07:57:46 fremy: One exception unfortunately 07:57:56 fremy: In Chrome, if you set overflow: scroll on an element 07:58:34 fremy: Rule in CSS, if size is auto and you're allowed to scroll, automatic size is smallest size possible such that you don't need to scroll 07:58:38 fremy: That's in general for CSS 07:58:42 fremy: This is what edge implements 07:58:48 fremy: But not web compatible, because this is not how it works 07:58:57 fremy: In that case, in the 1st pass the auto sie is considered 0px 07:59:04 fremy: So in 2nd pass you are going to have a scrollbar 07:59:16 fremy: The scroller will match the size of the rest of the cells in the row 07:59:38 fremy: In Firefox, because you resolve percentage based on the height set on the cell, you get exactly the same behavio 07:59:47 fremy: because 1st pass in Firefox, you already know your percentage 08:00:01 fremy: Edge is outlier, because we don't give the same behavior 08:00:12 fremy: So we propose that we match Chrome behavior, because Web interop requires it 08:00:18 fremy: Canonical example is ToS 08:00:54 fremy: People set height 100% on scrollabe ToS, and then button to accept in the next row 08:01:04 fremy: In Edge the 1st row blows up and gets as big as needed to contain entire ToS 08:01:32 fremy: So we would like to resolve on doing what Chrome is doing 08:01:41 fremy: If you're allowed to overflow, your automatic size will be 0px 08:01:49 fantasai: And that's for a table cell? 08:01:53 fremy: Percentage is set on the child 08:01:57 of the table cell 08:02:07 second testcase in https://dbaron.org/css/test/2006/percent-height-in-tables 08:02:10 dbaron: You claimed that you always do 2nd pass, so I loaded testcase and loaded in Chrome 08:02:26 dbaron: And I got as far as the 2nd testcase in the set before finding a contradition with your assertion 08:02:38 08:02:38 08:02:38 08:02:38
25% height div
text
08:02:49 fremy: % doesn't get applied 08:02:57 fremy: % inside auto container is ignored 08:03:02 dbaron: Except that's not how it works in tables 08:03:13 dbaron: there are things in tables that can make things non-auto height, that don't match that CSS rule 08:03:26 fremy: Rule in CSS is extended 08:03:42 fremy: You need at least one table element with a height defined 08:03:49 fremy: that isn't a percentage 08:04:25 dbaron: If you define height on table itself, then ... 08:05:09 s/extended/extended in css-tables-3/ 08:07:13 fremy: "It is appropriate to resolve percentage heights on direct children of a table cell if the cell is considerd to have its height specified xplicitly or the child is abspos, see CSS2. It is futher clarified that a cell is considered to have its height specified explicitly if the computed height of the cell or any of its table ancestors is a length or percenage and that length does not "bheave as auto"" 08:08:00 s/bheave/behave 08:08:57 fremy: Cases where we don't have interop are on tbody we don't all behave the same way 08:09:10 fremy: but agreed we'd behave the same way on tbody, so fixing that issue every browser should behave the same 08:09:26 Rossen: Interop with firefox? 08:09:31 fremy: Firefox has a different model 08:09:41 dbaron: We have tests if any cell in a row has a specified height 08:10:00 dbaron: The code that decides whether hegihts are definite looks at whether there's any cell in the row that has its height specified 08:10:09 dbaron: So I wouldn't blow that all off as having not implemented that decision 08:10:24 Rossen: So what is the proposed resolution to this issue? 08:10:32 fremy: the stuff I just quoted 08:11:23 fremy: "During first pass, percentages are resolved as auto, except if they are height-related and used on a scrollable box, in which case they resolve as 0px. Edge changes its behavior, as well as Firefox once it fix the other bug." 08:11:27 https://github.com/w3c/csswg-drafts/issues/474 08:11:44 fremy: To explain behavior in dbaron's testcase 08:11:47 fremy: ... 08:12:21 fremy: Like other places in CSS, you don't apply percentages if you're in auto height. For tables it's more complex, looks at table ancestors 08:12:31 dbaron: Is this also interoperable when tables are paginated for printing? 08:12:40 dbaron: Because I know that the behavior is dfiferent when tables are paginated. 08:12:49 fremy: I haven't tried printing tables... 08:13:03 fremy: Why would it be different? 08:13:07 dbaron: Shouldn't be but in Gecko it is 08:13:58 fantasai: Consideration for printing, maybe. When printing you can't scroll, so if you can size the item to show all its content that's better. 08:15:12 Rossen: So should we resolve? 08:15:20 dauwhe has joined #css 08:15:20 dbaron: I'm still trying to understand some of these cases... 08:15:58 dbaron: I'm okay with resolution for now, if I think it's wrong I'll reopen 08:16:10 Rossen: Objections? 08:16:19 RESOLVED: Accept proposed resolution for #474 08:17:02 dbaron: afaict, 1st testcase that I found a difference between FF and Chrome is where FF does what you say and Chrome doesn't 08:17:40
08:17:40 blah
08:17:40
hello
08:17:40
hello
08:17:41 blah
08:17:41 blah
08:17:41
08:17:49 dbaron: There's an outer table 08:17:54 dbaron: Inside of it there's two cells 08:18:03 dbaron: 2nd one is empty but has explicit height of 200px 08:18:10 dbaron: In your model means row has 200px definite height 08:18:26 dbaron: other cell has ... 08:18:36 dbaron: In Gecko, we honor the height 50% on the div 08:18:50 dbaron: and also on the table but the table overflows the cell (??????) 08:19:03 fremy: There is no reason for a table to behave differently from a block here 08:19:27 dbaron: So the thing we just resolved on is not what Chrome and Edge do 08:19:49 dbaron: matches Firefox better 08:19:53 dbaron: Which I'm okay with :) 08:20:17 dbaron: testcase is the 2nd one after the horizontal rule 08:20:55 ... 08:21:07 fremy: You look for a definite height on the ancestors 08:21:18 fremy: ? does not apply 08:21:44 dbaron: ... 08:21:48 dbaron: ok whatever 08:22:13 dbaron: Web will probably end up with one layout engine by the time we get around to fixing this... 08:23:20 Topic: excess width distribution in fixed layout 08:23:23 s/dbaron: Web will probably end up with one layout engine by the time we get around to fixing this...// 08:23:23 https://github.com/w3c/csswg-drafts/issues/484#issuecomment-317943064 08:23:41 gregwhitworth: Doign excess width distribution of space 08:23:54 gregwhitworth: Edge and Mozilla render the same 08:24:00 gregwhitworth: We do same distribution as non-fixed mode 08:24:07 gregwhitworth: We wanted an actual resolution 08:24:12 gregwhitworth: Chrome team said they're ok with the change 08:25:17 dgrogan: we're okay with caveat that we check web compat data 08:26:17 topic: visibility collapse: clip or not to club 08:26:21 s/club/clip 08:26:27 gregwhitworth: Talked about this at TPAC 08:26:31 gregwhitworth: Specified Edge behavior currently 08:26:37 gregwhitworth: To not get rid of data 08:26:45 gregwhitworth: But when author asks for visibility collapse on column or row 08:26:50 gregwhitworth: They've asked that row or column to be gone 08:27:23 gregwhitworth: If you have a spanning cell that goes into the collapsed column/row, then clipped to visible columns/rows 08:27:39 fantasai: I think that's what's in the spec. Not really that great 08:27:47 gregwhitworth: FF overflows the content 08:27:54 gregwhitworth: Behind a flag in Chrome 08:28:05 dgrogan: We also clip to border box. Behind a flag 08:28:27 fantasai: I thin there were two options we were considering here, and overflowing was definitely not one of them 08:29:52 fantasai: ... 08:30:12 dbaron: This would ... 08:30:26 https://jsfiddle.net/v23h0338/ 08:30:46 gregwhitworth explain the demo 08:31:21 dbaron: Suppose before collapsing ou have a cell here and it's part of 3 rows that are conceptually here 08:31:31 dbaron: cell has some content which overflows in theses various directions 08:31:36 dbaron: And then you collapse the middle one 08:31:44 dbaron: When it's not collapsed, these overflow visibly 08:31:54 dbaron: Are you saying when its collapsed, we only draw... 08:31:58 dbaron: I'm collapsing the middle row 08:32:09 gregwhitworth: You only draw what's in the first / third cells 08:32:24 [drawing on whiteboard, behind Bert, can't be captured for minutes] 08:33:22 fremy: If you're clipping the middle row, do you draw the content in the 1st and 3rd rows, or do you show the 1st and 2nd rows and clip out the end 08:33:52 dbaron: Once you collapse the middle row, you're clip everything that overflows the top and you're clip out stuff [over there, over there nobody is telling me what that means and I can't see it] 08:33:59 gregwhitworth: This is an edge case 08:34:23 gregwhitworth: Haven't seen people hiding rows/cols except in data grids, and ... 08:34:33 gregwhitworth: What you're proposing is complicated 08:34:41 dbaron: If it's not a use case why clip anything? 08:34:45 Rossen: That is the use case 08:34:59 Rossen: Your primary purpose was to have a layout 08:35:07 Rossen: We go to extreme lengths to avoid overflow 08:35:13 Rossen: To make sure that all content is displayed inall cells 08:35:27 Rossen: Then you have user facing behavior that allow ppl to collapse things away, purposefully make things appear or disappear 08:35:48 Rossen: When they explictily aske for something to disapear, and you continue to show them what disappeared, weird no? 08:35:55 dbaron: I just meant don't clip this cell 08:36:20 gregwhitworth: In dbaron's example ... 08:36:32 https://jsfiddle.net/dgrogan/9uduq99L/3/ 08:37:14 gregwhitworth: If you collapse 08:37:27 gregwhitworth: we end up clipping in both axes 08:37:50 gregwhitworth: My statement ot dbaron is, he forcefully asked for no wraps which will overflow 08:38:01 gregwhitworth: I don't see circumstances where it isn't primariy the excel-based scenario 08:38:16 gregwhitworth: this is the most performant way to accomplish, which is clipping to bounding box 08:38:20 gregwhitworth: weird side effect 08:38:33 dbaron: Proposal is that if you have a cell that spans some collapsed rows or columns 08:38:42 dbaron: that cell clips its content to its resulting bounds 08:38:43 gregwhitworth: yes 08:39:48 RESOLVED: cells spanning collapsed rows/columns are clipped to their resulting bounds 08:39:52 (in both axes) 08:40:12 Rossen: Goal of work on this spec is to minimize interop pain 08:40:16 Rossen: not trying to rewrite history 08:40:30 Rossen: issues aren't introduced, we're trying to write out the path of least resistance 08:44:09 https://lists.w3.org/Archives/Public/www-style/2016Nov/0069.html 08:44:11 bdc has joined #css 08:50:24 svillar has joined #css 08:51:45 nigel has joined #css 08:56:43 rachelandrew has joined #css 08:59:20 ScribeNick: eae 08:59:26 bdc has joined #css 08:59:29 Topic: Automating Test Coverage 08:59:53 gregwhitworth: I was planning to have this discussion with Geoffrey and Tab at some point. 09:00:18 gregwhitworth: When we were working through table tests I was going through all anchor tags to get an idea of test coverage. 09:00:31 Gecko bugs on implementing the results of our previous discussion on tables: https://bugzilla.mozilla.org/buglist.cgi?bug_id=1386981%2C1386982%2C1386983%2C1386985&list_id=13708350 . If it's not in that list, I don't know about it. 09:00:31 gregwhitworth: It was pointed out to me that I can't depend on the anchor tags as they change for various reasons 09:00:49 gregwhitworth: Basically from what I could see there is a fundamental problem, we're waiting until CR until doing a review of all tests 09:01:01 gregwhitworth: We need to keep these things up to date as we go 09:01:24 gregwhitworth: We could add an automatic solution, maybe in bikeshed. 09:01:34 gregwhitworth: We could either anchor any line or sub anchors. 09:01:44 gregwhitworth: Espeically for things like MUST and SHOULD 09:02:07 gregwhitworth: We need to resolve normative changes that have corresponding tests. 09:02:21 gregwhitworth: Would slow down the process. 09:03:01 gregwhitworth: When you make a change include a test collateral. Two action items: 1) For normative changes to coincide with test collateral. 2) some kind of work to bikeshed to aid in this. 09:03:28 gregwhitworth: To prune as we go. Additionally worth considering that all specs would have a test QA editor 09:03:45 gregwhitworth: We've seen the benefit of this at Microsoft. 09:04:04 astearns: When you went through the flexbox tests manually did you find that the anchor tags where not sufficient 09:04:25 gregwhitworth: Too broad. Requires reverse engineering to find the right section. 09:05:00 astearns: For prior art, in terms of more specific anchor. You might want to take a look at the WOF spec. Has anchors for all. 09:05:10 s/WOF/WOFF/ 09:05:19 TabAtkins: Very easy to do in BS. Wrap everything in an assert tag. 09:06:14 fantasai: Specs do change and the individual sentences that are associated with a particular test isn't stable. Automated association will result in broken links. 09:06:24 TabAtkins: Manually associating isn't practical either 09:06:56 astearns: If automated we cna show that this anshor change, anything associated with it must change. Automation can give us a checklist that is a subset rather than a full set. 09:07:09 dbaron: The actual assertion often brings in other defintions. 09:07:38 gregwhitworth: I agree, you cannot fully depend on this to solve our tesitng needs. We need to resolve that when you make normaitve changes there is also a test change. 09:07:54 gregwhitworth: I want to be able to run the test suite to know what changed. 09:08:39 astearns: You claimed this would slow down the process. I don't think this is true. You had to manaully do this for flexbox, if we can automate it it might be faster. Would speed up feedback for changes if it came with tests. 09:09:01 q? 09:09:06 Florian: Not sure this is true, it takes at the very least many months to get anyone to take review. 09:09:18 Florian: For mutlicol for instance it might take years for the review. 09:09:22 q+ 09:09:38 Florian^: Maybe for high-priority specs like grid or flex, you get the review quickly, but 09:10:20 Rossen: The problem is from what I have observed, a spec goes through an idea phase, someone is excited. A lot of people are talking about it then disucssion starts in the domain. Veyr few people are participating in topic. Then we get to bikeshedidng names, everyone is involved. This is the best part. Then we're in a no-mans land where we want to start implementing but there are no tests. 09:10:40 Rossen: This is the part where no body wants to participate. 09:10:41 Rossen: Then we have someone who starts implementation. 09:10:55 s/no body/nobody 09:11:17 Rossen: If there are no tests that are there to verify the asusmptions. Then we start making up our own assumptions. Then when the next implemtor comes along there are a lot of interop issues. 09:11:50 Rossen: Then we find ourselves here a few years later wondeirng about min-width for table cells, for instance. This happens when the test was written as a part of the implemtation. 09:11:50 s/implemtor/implementor 09:11:53 q? 09:12:11 Florian: I want tests. I like tests. I write a lot of them. And I harass people to review them. 09:12:17 q+ 09:12:52 Florian: People *should* write tests with spec chnages, yes. I agree. Requiering tests for all changes, maybe not so much. Would slow down process *a lot*. 09:12:59 Florian: I wrote a bunch of UI tests, fantasai finally reviewed them a year later after I ambushed her after dinner last night. 09:13:43 ack ericwilligers 09:13:57 ack dbaron 09:14:23 dbaron: A bunch of specs at the whatwg, about 3-6 mo ago tried to do more test driven. Feedback form that is that they're moving faster than before. 09:14:26 ack gregwhitworth 09:14:56 gregwhitworth: Florian, I think that is a valid point. Important that when we sign up for a spec we're not only signing up for the spec, you are also signing up for tests as well. 09:15:13 gregwhitworth: If no-one wants to sign up for QA then that is a problem. 09:15:43 gregwhitworth: It's fun to work on spec. Not as fun to review test changes or star writing tests. 09:15:54 q? 09:15:55 gregwhitworth: Important that the QA people are here as well. 09:16:12 q? 09:16:47 fantasai: One advantage of QA not being here is is that if the spec is not clear then the QA person cannot infer from discussion. Validates that the spec is clear. 09:17:02 Florian: We should assign people to be in charge of the test suite. Hard to find volunteers. 09:17:24 Florian: If we're explicit about ownership we'll see spec that lack a QA owner 09:17:36 (That said, i'm all for having more QA involvement in this process. We've historically had that back when Opera and Mozilla had dedicated QA persons, and we've lost that along the way.) 09:18:08 Rossen: We started three months ago to move a nch of specs that we belive as a working group to be close to rec. Fonts, for example, was one awesome example of a spec that got a lot of attention. A bunch of tests added to it. Reviewed. This spec is now moving very quikcly compared to other. 09:18:34 Rossen: On the other hand, we have background and borders, needs tests from mozilla.. Cascade-3 needs tests from mozilla. 09:19:30 Rossen: Two more specs where we are waiting for tests. Specs that have been in the works for years. Specs that are already implemented and have been for years. Holding us back. We're missing tests. We don't even have the data to start the discussion around whether we're interopable. Holds up the process. 09:19:47 q+ 09:19:50 Rossen: Those specs, that could have been recs, arguably years ago. Will not be rec for years to come due to lack of tests. 09:20:02 fantasai: We need more dedicated QA. We've had that in the distant past. 09:20:05 q? 09:20:33 fantasai: We don't really have that as much as we need. We have Greg, wokring on some stuff, Florian is working on some tests. Japan doing it for writing mode. Only a little bit here and there. 09:21:02 fantasai: Having we and Tab and I having QA ownership for everything is not scalable nur reasonable. Need more people involved. 09:21:04 q+ 09:21:05 Rossen: This is correct. 09:21:24 Rossen: You (Tab + fantasi) are not the only ones who should be doing this 09:21:30 ack glazou 09:22:03 glazou: This is a really old problem/. We're all implementros here. Some people do not consider it as rewarding. We've always had this problem where we've relied on the work of ???. 09:22:20 fantasai: We've not always had this problem. Years ago we had people that were interested in this. 09:22:31 q+ 09:22:33 Tab: We should make daniel the QA owner for all specs :) 09:23:24 Any decision made here relies on the commitment from corporate members of this group. 09:23:26 +1 to glazou 09:23:33 s/Any/glazou: Any/ 09:23:52 s/group/group to commit resources for testing to this group, not just send people to work on specs and implementations/ 09:23:54 Rossen: I agree this is an old problem. Not the easiest to solve. I think most implementors companies have solved this problem years ago. 09:23:58 glazou: Internally. 09:24:30 Rossen: Internally. The spec writer knows how this is supposed to work. Commit your spec to an repo without review. 09:24:35 fantasai: that is what editors draft is for 09:24:44 q? 09:24:46 s/of this group/of this group to dedicate participating engineers' time to write tests FOR THE WG, which they don't atm/ 09:24:48 (ED = repo without review) 09:25:02 Florian: If we have a resolution. We have a spec change, where am I allowed to commit that. 09:25:15 q+ 09:25:21 Rossen: As soon as someone starts implementing your working draft they will stare review your tests. 09:25:37 dbaron: They will look in web platform tests. Do not like the review process 09:26:04 s/tests/tests, not at unreviewed PRs/ 09:26:10 q? 09:26:10 q+ 09:26:12 astearns: People will take the tests that are in web platform tests and run them. Will onlky review if there are errors. I think that is fine. 09:26:14 ack fremy 09:26:14 ack fremy 09:26:27 fremy: We mentioned that spec implementros dont have time to write tests. Might be fair 09:26:56 fremy: At the very least we know what tests needs to be written. That needs to be part of it. "We need tests for this". At the vert least that way two years later we'll know. 09:27:04 fremy: That should be the responsibility of the spec writer 09:27:11 +1 with fremy but that's theory ; I'm afraid practice will differ a bit 09:27:21 fremy: If the assertion changes, that should be part of the spec process. Flagging tests that needs to be changed. 09:27:44 fremy: Otherwise impossible to know which tests needs to be written for a change. Should be part of resposnibility for spec editor. 09:28:08 fremy: Nobody is in a better position. 09:28:10 ack gregwhitworth 09:28:15 +1 to the idea of tracking what tests are needed, but issues in the test repo isn't the way to do it (we just threw out a bunch of issues that tracked this when we did the wpt merge) 09:28:17 fantasai: The person making the change might think of 20% of the needed tests 09:28:52 s/tests/tests, but it's better than none, yes/ 09:29:08 gregwhitworth: I feel like for normative changes I don't think it is too much to ask that a test case should already be written. Maybe you don't write 700 of them to cover all edge cases. 09:29:50 gregwhitworth: We have a lot of people that want to be involved. 09:30:03 gregwhitworth: For addative css for instance, who is going to wirte all the tests? 09:30:16 gregwhitworth: The goal is interop. Webdevs wants it to just work. That is why tests are important. 09:30:34 gregwhitworth: Some type of tests commitment for normative changes is important. 09:30:44 gregwhitworth^: Have a QA owner, so when spec owner makes a change says "hey, can you write some tests for this thing / update the tests for this thing" (goes above goal is interop line) 09:30:50 q? 09:30:53 ack glazou 09:31:31 glazou: Just one point about normative changes and tests. If we have a test for ??. In my opinion we need to wirte tests from the very beginning. 09:31:56 fantasai: Disagree. Some of the specs Tab and I have worked on have changed so much that writing tests from day one would have been a waste of time. 09:32:00 q? 09:32:08 glazou: Hard to catch up if we don't have tests from the beginning. 09:32:12 s/waste/huge waste/ :p 09:32:14 ack Florian 09:32:28 so many FPWDs already implemented and shipped w/o tests 09:32:32 and used in the wild 09:32:40 stryx` has joined #css 09:32:55 q? 09:32:58 q+ 09:32:59 q+ 09:33:02 Florian: If we're saying that there is an expectation to ahve tests for normative changes I'm all for that. Adding ecplicit resposnability I'm also in favor. On the other hand I'm against a policy that would disallow changes without tests. 09:33:11 ack gregwhitworth 09:33:33 gregwhitworth: When we get around to CR, here are four hundred PRs. Test cases exists. 09:33:57 gregwhitworth: There needs to be automation so that we're not trying to puzzle it together years after the fact. 09:34:07 a? 09:34:10 q? 09:34:19 dauwhe has joined #css 09:34:32 fantasai: Resolutions that aren't followed more than 80% of the time aren't great. 09:34:38 q+ 09:34:47 ack melanierichards 09:34:50 ack melanierichards 09:34:53 Is there a timebox or goal for this topic? 09:35:02 fantasai: We already have quite a few edits that don't make it into the spec until a year later. Wouldn't want to add to that. 09:35:20 Florian: We're already being slowed down for this. I've already considred hiring people to review my tests. 09:35:20 ack Florian 09:35:29 q? 09:35:35 Rossen: Let's see if we can get to something a little bit more actionable. 09:36:12 Rossen: 1) way forward, automation between tests and linking tests from specs. 09:36:34 Rossen: What would be changed if a normative hting changed with a PR. 09:37:01 fantasai: Would require an assert tag around each part they change in a spec for bikeshed tooling support 09:37:43 fantasai: We could make it a habit to wrap all things in assert tag. Would be a bit annoying. Could help but we would end up with a lot of broken links. OK wit someone trying this on one spec. 09:37:53 fantasai: We should experiment with a couple of different approaches 09:37:55 q? 09:38:16 Florian: Our system could detect when we make a change to a section where there are no tests then somebody needs to know. 09:38:30 Rossen: Do we have a candidate spec for this? 09:39:04 more-specific assertion tagging might be something to add once a spec is in CR (or late CR) 09:39:26 fantasai: You said we should have q QA person for a spec. Lets take three specs and assign a QA person and have them pick different approahces. Some migt use assert, another might use a wiki linking and see how it works. 09:40:09 fantasai: I don't think we have a good solution. If spec were staatic bikeshould would be oboivus solution. That is not the case until they reach rec. We need to experiment and see what the right level of automation and linkage is. Individual people need to try somehting and see how that approach works. 09:40:26 fantasai: We need somebody to own the testing practice for a spec. 09:40:42 fantasai: Someone needs to own it: "this is my spec, I need it to be tested". 09:41:08 fantasai: Then the tooling will fall out from that. I've tried many approaches and none are ideal. 09:41:39 Rossen: We have a ton of specs. choosing two or three is not a problem. Finding the QA people would be more problematic but a good idea. 09:42:00 Rossen: Won't volunteer people here but as a working gorup we should resolve to do this over the next few weeks. 09:42:17 Rossen: We need people to step up and take test ownershpip for one spec. 09:42:41 there's various examples for how we've tried to coordinate spec and test and test assertion. Comments in tests are one way. Annotations into the spec source are another way. Bikeshed auto-ID cross-linking is another way. An intermediary wiki that connects spec sentences with test assertions with links to tests is another way... 09:42:42 Florian: If they determine the best approach is to add tooling that they aren't themselves capable of producing. 09:42:52 we don't have an obviously best way atm 09:42:58 Florian: If I'm the owner for a test, can I task people with that? 09:43:18 Rossen: You can file a feature request for plinss 09:43:28 s/Comments/Comments or quotes from the spec/ 09:43:33 Rossen: Greg, was there anything else? 09:43:45 gregwhitworth: I think we need to figure out the tests for normaitve changes requirement 09:44:03 fantasai: At CR it is a reasonable requiremnet. Prior to that, not so much. 09:44:10 agreed with fantasai 09:44:55 gregwhitworth: My problem is that that is the situaiton wre're in with flex. We have a ton of tests, I don't know who wrote them. I don't know what tests are for each change. 09:45:32 fantasai: For CRs we have failry close tracking. We have a chnages list and for a spec like flexbox they're listed in the changes list with a summary, it wouldn't be too hard ot also include a link to the tests. 09:45:36 my comment earlier didn't get minuted so: if, with a process change, not getting tests reviewed in a timely fashion slows down progress in a way that's noticeable/painful to other people who want that spec to move forward (not just the test writer), that could be a forcing function to get tests reviewed faster / more people committed to reviewing tests 09:45:43 Rossen: Are there any formal requirmenets for normative changes to include tests 09:45:47 fantasai: Yes 09:45:55 https://www.w3.org/TR/css-flexbox-1/#changes-20160301 09:46:03 astearns: In part of you (rossen) and me to enforce. 09:46:52 fantasai: In link posted, each change has an anchor, a summary of the change, link to issue generaitg change, a diff for the change. We could add anothre component that is Test: 09:46:52 Rossen: Yes 09:47:12 gregwhitworth: Yes but I dont want 500 tests there and having them all reviewed at the end. 09:47:57 Rossen: If we already have a resolution for requering test for a CR that is great. This week alone we already have a ton of CR changes coming. We'll watch very closely how that goes. 09:48:16 fantasai: When we prepare for a CR we could look at the change slist and see the tests. 09:48:56 Florian: I think I'm okay with this. Do we want it in the change list or the DOC. 09:48:57 Normative changes to CR or later stages of the a spec need to link to an existing or a new test case(s). 09:49:16 fantasai: Sometimes you have multipe comments for leading to a single change. 09:49:32 PROPOSED RESOLUTION: Normative changes to CR or later stages of the a spec need to link to an existing or a new test case(s). 09:49:46 Proposal is the Changes List for a CR links to updated or additional test cases for each change 09:49:49 Rossen: Normative changes to a CR need to include test case. 09:49:59 Florian: the changes *list*, not the individual changes. 09:50:26 s/Florian/fantasai/ 09:50:37 fantasai: We require a list of changes. Reason is that it is helpful for implementros. Changes are less expansive and easier to track 09:50:45 than in WD 09:50:59 s/list of changes/list of changes for CR updates/ 09:51:10 RESOLVED: Changes List for a CR links to updated or additional test cases for each change 09:51:47 Topic: [CSS-UI-3] 09:51:50 https://test.csswg.org/harness/results/css-ui-3_dev/grouped/filter/ 09:51:56 https://test.csswg.org/harness/results/css-ui-3_dev/grouped/filter/17/ 09:52:05 Florian: Link to test suite results 09:52:17 astearns, Rossen, values and units is blocked on https://github.com/w3c/csswg-drafts/issues/434#issuecomment-310183908 09:52:21 Florian: Normative requierments that do not have two or more implementations 09:52:51 Florian: Think covergae is sufficient. One test per normative assertion. Only 6 are missing for MUST. More are missing for SHOULDs. 09:53:17 Florian: We're getting there. Since it is six and not zero I'm not pushing for CR today. Please fix them so that we can go to PR. 09:53:36 Florian: One of the things I have not verified coverage for is direcitonal navigaiton properties. Implemented in presto and TD 09:53:56 Florian: There are some informal issues raised. Marked at risk. 09:54:29 Florian: Specifically, one thing we have already resolved on that has been quesiton is whether we should stick to what we have resolved on with regards to cursor. 09:55:13 Florian: All the changes to cursor auto should be UA stylesheet. Have filed bugs to blink about this, they filed bug back with "are you sure?". 09:55:43 fremy: In edge, there are some cases where we have things in the UA stylesheet. Also things that are magic. Much better to use UA stylesheet, fies bugs. 09:55:52 fremy: If you want to change, it should be in the UA stylesheet, 09:55:54 re: https://test.csswg.org/harness/results/css-ui-3_dev/grouped/filter/ I would be strongly concerned with any test that fails in blink, edge, gecko, *and* webkit 09:56:04 q? 09:56:09 https://github.com/w3c/csswg-drafts/issues/1598 09:56:13 Florian: If you find cases where it cannot be in the UA stylehseet and it isn't a known one then please file a bug back. 09:56:33 Florian: Can we close this bug (1598) as no change? 09:56:37 Rossen: Any objecitons? 09:56:45 RESOLVED: Close 1598 as no change. 09:56:47 q? 09:56:54 GitHub: https://github.com/w3c/csswg-drafts/issues/1598 09:56:59 q? 09:57:06 https://github.com/w3c/csswg-drafts/issues/1637 09:57:13 github: https://github.com/w3c/csswg-drafts/issues/1637 09:57:28 GitHub: https://github.com/w3c/csswg-drafts/issues/1598 09:57:31 Topic: Be more precise about event dispatching of pointer events on the ellipsis 09:57:34 github-bot, end topic 09:57:38 github: https://github.com/w3c/csswg-drafts/issues/1637 09:57:43 Topic: Be more precise about event dispatching of pointer events on the ellipsis 09:57:44 github: https://github.com/w3c/csswg-drafts/issues/1637 09:58:13 Florian: We have a statement in the spec, text-overflow ellipsis should not affect dispatching of pointer events. 09:58:15 q+ re: https://test.csswg.org/harness/results/css-ui-3_dev/grouped/filter/ I would be strongly concerned with any test that fails in blink, edge, gecko, *and* webkit - per CR impl experience the spec&tests should likely change for those (postpone or whatever is appropriate per feature) 09:59:00 Florian: When you click the ellipsis the block that hosts it gets the event. Not clear to me that the statement normatively requires how the event is dispatches. Should it be dispatched directly yo the element hosting it or the one ellided. 09:59:19 tries to remember what he was thinking with this text 09:59:41 Florian: Leave level 3 somewhat ambiguous about how events are eing fired (but not that they *are* being fired) and be more specific in level-4. 09:59:53 tantek: It is better than before 10:00:10 Florian: Block with nested block, event to block vs in0between spans. Not iterop. 10:00:32 tantek: Are there any strong preferences about how it should work? 10:00:37 Florian: Firefox seems better. 10:00:46 fremy: Agree, edge should match Firefox. 10:00:57 eae: Chrome thinks it is resonable to./ 10:01:14 tantek: Can we add a SHOULD here to capture the consensus? 10:01:23 Florian: Haven't worked out the implications. 10:01:35 tantek: It is already in issue description. 10:01:52 tantek: Resolve on that same phrase, without being overly precise 10:02:04 tantek: Sounds like we have rough consensus 10:02:14 tantek: "dispatches the event to the ellided inline element" 10:02:33 tantek: That is all it takes, add it as a should. Capture consensus and keep moving. 10:02:54 tantek: We have one impl and verbal agreement from other vendors. 10:03:04 Florian: Normative change. 10:03:16 tantek: Not all normative changes need to go to CR 10:03:27 Florian: If we can do this without process changes that's fine. 10:04:05 tantek: We need to document ever change in the PR to CR process. 10:04:10 Rossen: No problem with that. 10:04:47 PROPOSED RESOLUTION: Clarify in level 3 that the UA should dispatch the event to the elided element. 10:05:03 RESOLVED: Clarify in level 3 that the UA should dispatch the event to the elided element. 10:05:24 Topic: Cursor and image maps 10:05:29 s/in the PR to CR/in the CR to PR 10:06:54 github: https://github.com/w3c/csswg-drafts/issues/1618 10:07:09 So the resolution was that the event is dispatched as if text-ellipsis was none 10:07:22 Florian: As a note, this is not in our spec, HTML is weird when it comes to image maps. 10:07:22 (fantasai asked for clarification on what the resolution meant) 10:07:53 Florian: The cursot that you are supposed to use over an area in an image map depends on the area element and not the image you are hovering. 10:08:13 Florian: The only property that is affected by area is the cursor. 10:08:22 tantek: I agree 10:08:32 Rossen: Other opinions? 10:08:34 yes, add the informative note 10:09:34 PROPOSED RESOLUTION: Add informative note that links to the part of HTML that specifies how cursor works on image maps. 10:09:36 q? 10:09:45 Rossen: Any objections? 10:09:46 q? 10:10:05 RESOLVED: Add informative note that links to the part of HTML that specifies how cursor works on image maps. 10:10:18 Topic: Test results 10:10:28 ack tantek 10:10:28 tantek, you wanted to discuss https://test.csswg.org/harness/results/css-ui-3_dev/grouped/filter/ I would be strongly concerned with any test that fails in blink, edge, gecko, 10:10:31 ... *and* webkit - per CR impl experience the spec&tests should likely change for those (postpone or whatever is appropriate per feature) 10:10:47 tantek: The tests results are really good, as pointed out by florian, there are a some we do not ahve tests for. 10:10:59 Florian: Directional navigation yes, I don't know. 10:11:10 https://test.csswg.org/harness/results/css-ui-3_dev/grouped/filter/17/ 10:11:23 tantek: In addition to the less than two problem, there are numerous tests, ... 10:11:54 tantek: Looking at the list there are several tests that have failures across all of the edge/blink/webkit 10:12:20 tantek: Indication that the normative text causing that needs looking into before we go to CR. 10:12:46 https://test.csswg.org/harness/results/css-ui-3_dev/grouped/filter/ 10:12:48 tantek: If we're seeing four of the major engines not do something that is a string indication it should be downgraded to MAY 10:13:17 tantek: If you scroll down to outline tests 14 & 15. Have three of the four engines failing. No one esle supporting./ 8 - 14 all but one of them have all four engines failing it. 10:13:26 tantek: Text overflow 18-19. Just talked about that 10:13:33 tantek: Cursor image, 13-15. Visually obvoius 10:14:01 tantek: Everyone of those where three enignes are failing, if these are coming from MUSTS they should be dropped 10:14:46 tantek: We shouldn't set the expectation that the SHOULD normative secitons of the spec applies. Should be dropped or changed to a MAY if we still think it is a good idea. Should as in english. 10:15:03 Florian: Some of them are already MAY. Can't tell which are MAY vs SHOULD. 10:15:39 Action item on florian to see which ones are from SHOULD and consider whether to change to MAY. 10:15:39 Error finding 'item'. You can review and register nicknames at . 10:15:44 Florian: Will cuase process churn. 10:15:56 ACTION florian to see which ones are from SHOULD and consider whether to change to MAY. 10:15:56 Created ACTION-856 - See which ones are from should and consider whether to change to may. [on Florian Rivoal - due 2017-08-10]. 10:16:17 fremy: MAY is very open. Almost seems like a bug we're expecting. 10:16:42 fremy: We want to progress, may doesn't do that. 10:16:48 Rossen: Let's not discuss this now. 10:17:03 Florian: If we downgrade to MAY that would require a new CR 10:17:25 trackbot: Loosening conformance requirements does not necessarily require a new PR. 10:17:25 Sorry, eae, I don't understand 'trackbot: Loosening conformance requirements does not necessarily require a new PR.'. Please refer to for help. 10:17:31 tantek: Loosening conformance requirements does not necessarily require a new PR. 10:17:45 dbaron: Opposite of SHOULD is SHOULD NOT 10:17:53 dbaron: Maybe it should be a SHOULD. 10:18:14 tantek: Leaving SHOULDs in there that four engines do not implement is a good way to block CR. 10:18:26 Rossen: Let's talk about this once we have more information 10:18:35 tantek: By downgrading we could go to CR faster. 10:19:23 Florian: Should I move the at-risk section now? nav-left, nav-down, .... No one has worked on them for years. 10:19:29 Florian: Would rather push to next level 10:19:32 Rossen: Do it. Move it. 10:20:05 PROPOSED RESOLUTION: Move at-risk section to next level. 10:20:29 Florian: Google has had an intent to implement which had problems. Concluded they wouldn't. 10:20:37 Florian: Presto and old TVs do. 10:20:56 Florian: Objection is "for tvs, why in browsers?" 10:21:09 Florian: Would like to move to next level. 10:21:18 iank_: We rejected the intent for this. 10:21:38 tantek: I see light green passes for webkit here too. 10:21:46 Rossen: tantek, are you trying to keep this in spec? 10:21:56 tantek: Want evidence based decision 10:22:04 Rossen: Absolutely no browser implement. No interest. 10:22:29 tantek: Test reuslts make it look more implemented then it is. 10:23:10 RESOLVED: Move directional navigation properties, nav-up/down/left/right to next level 10:23:28 s/reuslts/results 10:23:30 ScribeNick: fantasai 10:23:36 Topic: F2F scheduling 10:23:48 Rossen: Discussed 2018 summer meeting 10:24:03 Rossen: meeting April in Berlin, coordnated with TypeO 10:24:08 s/F2F scheduling/F2F scheduling https://wiki.csswg.org/planning 10:24:26 rego has joined #css 10:24:32 Rossen: We speculatively were thinking of doing in Hawaii (seriously, because easy for everyone to get to) 10:24:43 TabAtkins: Still on the table, but not finalized 10:24:49 astearns: I'm concerned about holding a meeting in the US 10:24:50 glazou: me too 10:25:07 astearns: Prefer somewhere not in the US 10:25:27 s/Prefer somewhere not in the US/bla bla on location/ 10:25:34 [discussion of options] 10:26:42 if you're looking for the closest non-US place to Hawaii, you want to look at how hard it is to travel to airport code NHV 10:27:22 why not keep any survey inclusive of all options just to see how the US options rank relatively to others? 10:28:39 dbaron: Do you have an office in NHV? :) 10:28:46 what are all the options for the summer meeting? 10:29:00 eae, no 10:29:07 Sad panda 10:29:35 current ideas include Toronto and various other Google offices in Canada, Sydney, Taipei 10:29:52 dino: costs of travel to Sydney? 10:29:54 various: a lot 10:30:09 TabAtkins: that's why we were seriously considering Hawaii, would actually cost us less than Sydney 10:30:31 Agree with tantek, why don't we vote on all options? 10:30:33 Iceland ? 10:30:52 Stockholm in july is gorgeous btw 10:31:19 tantek: why not vote on locations? 10:31:36 astearns: My concern with US is minority that doesn't want to come / can't come 10:31:56 TabAtkins: consensus poll, not actual vote 10:31:58 astearns: that might work 10:32:09 Rossen: ok, let's break for lunch 10:32:13
10:32:16 yes, consensus poll please among all options, with anon option 10:32:31 rachelandrew has joined #css 10:34:05 jensimmons has joined #css 11:03:54 myles_ has joined #css 11:07:26 eae, it would be even cooler if we had an office in MOZ 11:07:43 Florian has joined #css 11:14:17 rachelandrew has joined #css 11:31:16 we'll start again in 5 mins 11:32:21 RRSAgent: draft minutes 11:32:21 I have made the request to generate http://www.w3.org/2017/08/03-css-minutes.html gsnedders 11:32:34 RRSAgent: make minutes public 11:32:34 I'm logging. I don't understand 'make minutes public', gsnedders. Try /msg RRSAgent help 11:32:48 RRSAgent: make logs public] 11:32:50 RRSAgent: make logs public 11:32:58 svillar has joined #css 11:33:35 *your 11:36:25 myles_ has joined #css 11:36:30 ScribeNick: fremy 11:37:01 https://github.com/w3c/csswg-drafts/issues/1641 11:37:22 https://github.com/w3c/csswg-drafts/issues/1133 11:37:37 Topic: font-face without src 11:37:47 github: https://github.com/w3c/csswg-drafts/issues/1133 11:37:49 Github: https://github.com/w3c/csswg-drafts/issues/1133 11:38:14 myles_: for a long time, at font face without src is ignored 11:38:29 myles_: which means it is a parse error and is not there anymore 11:38:41 dbaron: i would argue ignored could mean it's there in the om but then does nothing 11:38:52 myles_: ok, I think it doesn't matter for what I want to think about 11:39:16 myles_: in some cases, you can have font faces to alter font properties 11:39:30 myles_: and all browsers accept to do that 11:39:44 bdc has joined #css 11:39:49 myles_: so I would like the text to be changed to say that the font face rule should not be used for font matching 11:39:55 myles_: but should apply otherwise 11:40:05 dbaron: i think that is the sensible way to "ignore" them 11:40:40 TabAtkins: I have a follow-up question about whether we should apply a similar reasoning to invalid counter styles 11:40:46 dbaron: it would make sense to me 11:41:01 myles_: I cannot say that this matches browsers in that case, i have not tested 11:41:21 TabAtkins: sounds good, but we could decide on a principle and update if needed 11:41:30 Alan: what is the proposition then? 11:41:39 myles_: (repeats previous proposal) 11:42:20 RESOLVED: font face rules should be in the om, apply for font settings, but should not be used for font matching 11:43:00 RESOLVED: font face rules should be in the om, but should not be used for font matching (correction of previous statement) 11:43:04 s/, apply for font settings// 11:43:32 Topic: can't add new values to font-synthesis 11:43:44 github: https://github.com/w3c/csswg-drafts/issues/1641 11:44:15 myles_: font-synthesis is a property that allows to turn on/off the font synthesis 11:44:32 myles_: for example font-synthesis: weight allows to generate bolder variants 11:44:44 myles_: by default you can synthetize everything 11:45:15 myles_: the issue is that if you want to turn one on, you turn off all the other ones 11:45:38 myles_: which means that new flags will be aciddentally turned off by older styles 11:46:03 fantasai: we have a similar problem with text-decoration-skip 11:46:17 fantasai: we decided to create sub longhands properties 11:46:32 Florian: we don't have quite resolved that but ok 11:47:06 fantasai: the other option is to only reset to false what you specify as off, but if you don't specify things we use the default 11:47:22 Florian: wait, don't you want the reverse? 11:47:37 fantasai: if you omit them, they default to true if true is the default, yes 11:47:58 !add 11:48:09 fantasai: there was a proposal that was similar but used + and - in front of keywords 11:48:29 s/proposal/proposal from ChrisL/ 11:48:58 TabAtkins: text-decoration only allows to append new decoration styles but not remove inherited ones 11:49:44 Florian: the reason we rejected the equivalent bold/no-bold for text-decoration because it cascades poorly which is the case for text decoration 11:50:00 Karen has joined #css 11:50:02 Florian: this is not quite the case for font-synthesis though so the option is still open now 11:50:33 fantasai: given that we want to follow that pattern for other things like variant, I think we should do that as well 11:50:40 fantasai: ... for font-synthesis 11:50:45 myles_: this is my opinion as well 11:50:45 s/want to/already/ 11:50:57 s/other things like /font- 11:51:01 myles_: plus some rule that explains what happens if you ask both 11:51:15 Florian: should we also also have no-everything? 11:51:23 myles_: we can discuss this as part of another issue 11:51:29 s/do that/use the bold|no-bold pattern/ 11:51:49 alan: is this ok to make this change? 11:51:59 myles_: we added font-caps and didn't see a problem 11:52:14 myles_: but the window is closing of course, the more we add the more difficult it gets to change 11:52:40 alan: so, proposed resolution is to use pair-keywords values for this property 11:52:46 alan: any objection? 11:53:06 RESOLVED: change font-synthesis to all pairs of keywords and no-keywords 11:53:19 fantasai: do we need to change text level 3? 11:53:24 myles_: don't think so 11:53:26 s/text/fonts/ 11:53:34 https://github.com/w3ctag/design-reviews/issues/183 11:53:40 Topic: TAG Review of variable fonts 11:53:52 GitHub: https://github.com/w3ctag/design-reviews/issues/183 11:53:53 github: https://github.com/w3ctag/design-reviews/issues/183 11:54:32 dbaron: ??? asked for tag review 11:54:39 s/???/drott/ 11:55:01 dbaron: the main feedback was how this should be font properties or descriptors 11:55:46 dbaron: the reasoning should be that some things should be whether you would want the things to apply to fallback fonts or not 11:55:59 dbaron: over time, system fonts are likely to get more variations 11:56:04 Looks like the axixes would be best done as an open-ended set of properties, similar to custom properties... 11:56:27 myles_: there are two spaces 11:56:28 We can't guarantee that the axis names live in the CSS ident space, so we can't do `font-axis-*` tho. 11:56:40 myles_: one is for things that are defined for all fonts 11:56:52 myles_: and things that are custom for your own font, which are used in all caps 11:57:08 TabAtkins: what is the ascii range for these names? 11:57:29 myles_: less than ascii for sure 11:57:47 myles_: no control char or anything, and casing does matter 11:57:55 dbaron: flip side is animation 11:58:08 dbaron: if you want to animate them, they should be properties 11:58:42 eae: there have been clear request to support that 11:59:01 dbaron: I think it would make sense then to have both to support both use cases 11:59:20 myles_: this is what font-feature-settings is, minus some stories I rather not start talking about 11:59:29 github: https://github.com/w3c/csswg-drafts/issues/1652 11:59:50 TabAtkins: how about having a list of values in the axis? 12:00:01 TabAtkins: we still need to be able to control them independantly 12:00:22 TabAtkins: we can instead allocate a property namespace so that you get a property for each axis 12:00:41 fantasai: the issue is that each axis might change of ascii range in newer formats 12:00:54 TabAtkins: you can escape any char in identifiers in css 12:01:09 myles_: in our impl we would not want that anyway 12:01:13 s/the issue is that each axis might change of/what if axis idents are outside/ 12:01:16 svillar has joined #css 12:01:25 s/that/weird axis names/ 12:01:49 alan: use case where you have weight animated 12:01:59 myles_: you can animate pair by pair 12:02:20 TabAtkins: but you still need to change all of them in same declaration 12:02:28 myles_: additive css would solve that 12:02:31 TabAtkins: yes 12:02:54 myles_: so, based on consensus we need a resolution to add descriptor and keep property 12:03:21 fantasai: we have a similar problem with various stylistic fonts tags you want to turn on and off 12:03:39 fantasai: what we did, we decided to tie them to an identifer that is font-specific 12:03:45 fantasai: we could take the same approach here 12:04:17 fantasai: this would allow to customize a font-specific thing in particular without affecting other fonts 12:04:42 myles_: that would work for named axises but some are just number-indexed 12:04:59 TabAtkins: also the ranges could not mean the same thing for each font even if name is identical 12:05:29 s/name is identical/the two axises do approximately the same thing/ 12:06:09 That works for stylistic alternates because the meaning of "alternate #1" is arbitrary but it doesn't make sense for axis names because the meaning of a value is supposed to be consistent across fonts 12:06:13 alan: even the lower-case standardized names, do they have identical ranges? 12:06:25 myles_: no 12:06:40 myles_: names are consistent between formats, but ranges are not 12:06:50 myles_: they are internally consistent per format though 12:07:02 alan: could we map one to the other? 12:07:13 myles_: yes, we could map to a canonical form 12:07:25 s/myles_: that would work for named axises but some are just number-indexed/That works for stylistic alternates because the meaning of "alternate #1" is arbitrary but it doesn't make sense for axis names because the meaning of a value is supposed to be consistent across fonts/ 12:07:30 alan: so could we define a css range? 12:07:36 myles_: I don't want to get into that 12:08:12 alan: anyway, I didn't hear any opposition to have things be both font descriptors and properties as per tag review 12:08:23 alan: can we get this resolved? 12:08:29 q+ to ask (about previous topic) what 'font-synth: no-weight style' means for small-caps: Is small-caps synthesis on (beacuse it is not explicitly turned off) or off (because it is not explicitly turned on)? 12:08:38 RESOLVED: font variations will be both properties and descriptors 12:08:48 alan: any other issue we should discuss from this review? 12:09:00 dbaron: not really, the rest is mostly editorial 12:09:13 ack Bert 12:09:13 Bert, you wanted to ask (about previous topic) what 'font-synth: no-weight style' means for small-caps: Is small-caps synthesis on (beacuse it is not explicitly turned off) or off 12:09:16 ... (because it is not explicitly turned on)? 12:10:00 Bert: so font-synthesis: no-abc --> turns off abc but on def, right? 12:10:11 myles_: well, it resets def to its default 12:10:50 myles_: right now all the other values are on by default, but in the future we could add new things that would be off by default 12:11:30 Bert: then why should we not change the fonts spec 12:11:42 myles_: no, it would just do as today, the spec will still be internally consistent 12:12:05 fantasai: well, new features will be off by default all the time right? otherwise it will be breaking change 12:12:33 Florian: not really, because new features could be things that did not exist at all before 12:12:44 Florian: so there would be no possible backwards compat problem 12:12:49 Gs has joined #css 12:13:14 fantasai: and small-caps? 12:13:21 myles_: it is not in level 3, so no revision to do 12:13:36 fantasai: but with this we could backport to level 3 12:13:42 fantasai: wouldn't you want that then? 12:14:08 myles_: to prevent a browser that support "small-caps" but "not-smallcaps"? 12:14:12 fantasai: yes 12:15:00 fantasai: We could have small-caps be on in the initial value and also be on if omitted 12:15:20 dbaron: well, i think there is still a change from level 3 12:15:27 fantasai: The ability to do this is effectively why we are considering having this foo/no-foo syntax. 12:15:42 TabAtkins: this is not the same default we are talking about 12:16:00 TabAtkins: now we talk about "default if you omit it in the declaration" not the "default if you omit the declaration" 12:16:07 dbaron: is this widely implemented? 12:16:09 myles_: no 12:16:41 dbaron and tabatkins arguing about default vs initial 12:17:03 dbaron: i would want the default to be the same as the initial 12:17:10 fantasai: +1 12:17:15 s/default/default if omitted/ 12:17:20 [dbaron kept using "default" to mean "initial value", when I and Myles were purposely using "default" to mean a totally separate concept] 12:17:48 fantasai: if we don't do what david wants, yes, there is not breaking change 12:18:02 Topic: font-synthesis, again (though a bunch of it was in the previous topic) 12:18:04 fantasai: but if we accept to break stuff, we can do default=initial, which makes more sense 12:18:17 github: https://github.com/w3c/csswg-drafts/issues/1641 12:19:10 alan: seems like we want a new issue, and try to come up with a new design for this, and discuss this in a smaller group 12:19:36 alan: then come back to this when the key people for this issue agree all together 12:20:00 fantasai: it is a breaking change, so we want to do it sooner rather than later 12:20:08 alan: what is the proposal then? 12:20:33 dbaron: intial = default 12:20:54 TabAtkins: "font-synthesis: weight" also turns on "italic" 12:20:59 TabAtkins: that is confusing 12:21:23 myles_: we could three set of keywords 12:21:26 none | [ weight || style ] | [ [weight-on | weight-off] || [style-on | style-off] || [smallcaps-on | smallcaps-off] ... ] 12:22:59 Florian: or we can also use the inheritance behavior 12:23:22 Florian: the only case that would be broken would be font-synthesis:initial 12:23:33 myles_: probably not common 12:23:55 dbaron: with this in mind, maybe i am fine with the previous resolution 12:24:14 dbaron: if we need to do something weird anyway, we might as well do what we proposed before 12:24:32 dbaron: but keep this as exceptions only for weight and style, and going forward we do default=initial 12:24:45 alan: so we have three proposals 12:24:59 1. previous resolution 12:25:13 2. extended keyword set 12:25:35 3. inheritance for omitted values 12:26:01 fantasai: 3 would break the meaning for font-synthesis:weight 12:26:05 TabAtkins: no, it would not 12:26:20 Florian: we change the initial to no 12:26:44 Florian: but the ua stylesheet sets to true on root 12:27:05 alan: what about small-caps? 12:27:28 myles_: small caps is on by default 12:27:36 (Idea: Disallow mixing positive and negative keywords. E.g., assume initial value is 'a b d' and you set 'a c', then only a and c are on. If you set 'no-a no-c' then b and are on, i.e., the initial value minus the ones that were turned off.) 12:27:50 myles_: so font-synthesis:weight allows small-caps 12:28:18 alan: do you have a preference, myles? 12:28:22 myles_: not really 12:28:40 myles_: the ua stylesheet case is the most simple and elegant solution, probably 12:29:03 TabAtkins: I like florian proposal 12:29:19 dino: the only issue is we break all:initial, which people do in shadow dom 12:29:23 TabAtkins: yes, true 12:29:53 fantasai: if we were doing this from scratch, we would have dbaron's behavior 12:29:54 Florian's proposal: initial value is `font-synthesis: no-weight no-style smallcaps`, UA style is `:root { font-syntheses: weight style smallcaps;}`. Omitting a keyword defaults it to the initial value for that keyword. 12:30:06 fantasai: how about we break existing content? 12:30:26 So author saying `f-s: weight;` would get weight & smallcaps syntheses, but not style. 12:30:34 myles_: places that use it today would then never synthetize small caps 12:30:59 myles_: i prefer the alternative 12:31:26 fremy: Why would you do 'all: initial' and not 'all: unset'? 12:31:55 alan: we reached the time limit 12:32:36 alan: i would want to come to a conclusion 12:33:04 dbaron: two proposals: fixing previous resolution, or breaking existing content 12:33:41 (idea2: use Chris's +/-. If you use a + or -, then the rule becomes "additive" :-) (relative to the initial value. 'font-synth: +weight' does not turn style off.) 12:33:57 Proposed resolution: make default values: weight (off), style (off), small-caps (on), make the initial value 'weight style', and add keywords no-weight, no-style, and no-small-caps. 12:34:29 More breaking option: make default values: weight (on), style (on), and small-caps (on), make the initial value 'new keyword to be determined', and add keywords no-weight, no-style, and no-small-caps 12:34:41 (although there's actually the alternative option to not have the non-default no-* variants) 12:34:50 (that alternative applies to both options) 12:35:24 alan: we try to resolve on the the first one dbaron proposed 12:35:29 (no objection) 12:35:46 RESOLVED: make default values: weight (off), style (off), small-caps (on), make the initial value 'weight style', and add keywords no-weight, no-style, and no-small-caps. 12:35:55 (at least for now, may discuss further) 12:36:06 Topic: CSSFontFaceRule isn't web-compatible 12:36:07 https://github.com/w3c/csswg-drafts/issues/825 12:36:20 github: https://github.com/w3c/csswg-drafts/issues/825 12:36:49 myles_: cssom for the font-face rule 12:37:04 myles_: used to be CSSStyleDeclaration with the declarations inside 12:37:17 myles_: rule.style.getPropertyValue("font-family") 12:37:31 myles_: the spec was then changed 12:37:52 myles_: instead of having a style, you would have a bunch of strings 12:38:01 myles_: e.g. rule.family 12:38:14 myles_: no browser has made this change 12:38:23 myles_: there is existing code that use the old way 12:38:30 myles_: we don't want to break that code 12:38:47 myles_: option 1: rollback to old spec text 12:39:14 myles_: option 2: get browsers to support the new spec text 12:39:21 myles_: option 3: get browsers to support both 12:39:51 myles_: option 4: make the "style" property return new type of object that looks like CSSStyleDeclaration but is simpler 12:40:13 dbaron: in the old domstyle spec, cssstyledeclaration was simple 12:40:25 dbaron: the weird stuff was in css2properties 12:40:50 dbaron: so you could implement both, and most things did 12:40:59 s/css2properties/css2properties, which had a property for every property in css 12:41:02 dbaron: that was then changed, and the two were merged 12:41:33 dbaron: so now the merge made it more difficult to implement 12:41:42 dbaron: we never implemented this merge 12:41:47 dbaron: (in gecko) 12:42:09 dbaron: my preferred proposal would then to be unmerge things 12:42:12 dbaron: our implementation doesn't include all the other stuff in font face rules, just the 6 original get/set methods 12:42:23 (that goes up a few lines) 12:42:31 dbaron: (and rollback to use cssstyledeclaration) 12:42:54 myles_: we still need to explain what happens when we set properties that do not exist in @font-face but do in general style 12:43:08 myles_: but I don't have a strong opinion in either ways 12:43:50 myles_: but I would rather rollback the spec, and maybe we can refine after 12:44:39 alan: so, instead of coming up with a perfect design, we rollback the improve iteratively 12:45:07 TabAtkins: we have copied the design in font-face 12:45:18 TabAtkins: and we have "style" property there 12:45:35 TabAtkins: so we cannot be consistent and keep style as CSSStyleDeclaration 12:45:49 myles_: life is terrible, who names these things ;) 12:46:51 dbaron: if other implementations are willing to remove css2props stuff, then it leaves less questions to be answered 12:47:01 myles_: i dont think we ever implemented these two interfaces 12:47:12 alan: any other opinion? 12:47:29 TabAtkins: i suspect if gecko is doing it, i guess we could do it 12:48:13 myles_: merge allows rule.style["font-family"] and unmerge does not 12:48:17 dbaron: yes 12:48:39 myles_: webkit does not support this either 12:48:50 s/rule.style["font-family"]/rule.style.fontFamily/ 12:49:12 I thought both of those were supported interoperably? 12:49:15 myles_: can we then try to resolve on rolling back to the unmerged version? 12:49:19 no objection 12:49:29 gsnedders: rule is CSSFontFaceRule 12:49:33 RESOLVED: rollback to previous state with CSSStyleDeclaration and umerged interfaces 12:51:33 plh has joined #css 12:51:40 https://github.com/w3c/csswg-drafts/issues/1349 12:51:43 Topic: Properties being reset by the font shorthand 12:52:04 https://github.com/w3c/csswg-drafts/issues/1636#issuecomment-317127312 12:52:10 myles_: I made an amazing table, let me paste the link 12:52:50 myles_: there seems to be consensus that the font shorthand resets what is not specified in it 12:53:03 myles_: but what the other things are doesn't seem interoperable 12:53:42 dbaron: I think the test is wrong for font-language-override 12:53:47 myles_: let me check 12:54:40 TabAtkins: there seems to be things we do support that this test says we dont 12:54:50 TabAtkins: so we cannot trust this data 12:55:10 font-size-adjust, at minimum - we def support it (it causes the CSSWG blog to display brokenly on a Chromebook >_<) 12:55:10 myles_: ok, we will discuss this another day then 12:55:15 https://github.com/w3c/csswg-drafts/issues/1579 12:55:20 Topic: Animating font weight 12:55:25 github: https://github.com/w3c/csswg-drafts/issues/1579 12:55:33 myles_: two things here 12:55:48 myles_: 1. requested font weight 12:56:00 myles_: 2. available options in the font 12:56:10 myles_: then algorithm match one to the others 12:56:46 myles_: for historical reasons, if you want 400 and it is not possible 12:57:00 myles_: search will be 300, then 500, then 200, then ... 12:57:24 myles_: variables fonts can have much more arbitrary values 12:57:27 500, then 300, then 200 I think 12:57:42 myles_: so I tried to come up with a solution for this 12:57:51 s/this/generalizing this/ 12:58:18 myles_: (connecting laptop to tv screens) 13:00:05 myles_: the generalization i came up with: 400, then 500, then any value between 400 and 300, then any value between 400 and 600, etc 13:00:41 dauwhe has joined #css 13:01:45 fantasai: why not directly 400 -> 500 instead of 400 then discretely 500 13:01:51 fantasai: doesn't seem very logical 13:02:11 TabAtkins: the old model did that 13:02:33 fantasai: but you could not express 430, it needed to be hundred multiples 13:03:17 fantasai: the goal of the algorithm was that 400 and 500 were very common values 13:03:29 fantasai: but 300 is often lightweight 13:04:07 fantasai: this proposal preserves the compat, but not the spirit 13:04:23 fantasai: I would prefer to connect the 400 -> 500 range 13:04:53 TabAtkins: yes, it is less weird 13:05:32 myles: if there is concensus, i am ok with this 13:06:25 fantasai: this would evolve the old algorithm, not run some algorithm after it 13:07:25 fantasai: proposal means if we did 400 then 500 then 300, now we do 400 -> 500, then 500 -> 300, ... 13:07:26 lajava has joined #css 13:07:36 fantasai: obviously some values will not match 13:07:39 basically play "connect the dots" with the old search points 13:07:44 fantasai: because they have been searched already 13:07:54 which might go over some ranges multiple times, but of course the UA would optimize those out 13:09:06 bdc has joined #css 13:10:16 (whiteboard discussion) 13:14:50 (the discussion seems to be about what fantasai's idea does if you search for 450 not 400) 13:15:01 (and related cases like 250 or 550) 13:15:44 [fantasai and myles are having hell of a time connecting dots and lines on the white board] 13:16:56 Split the weights into three categories: 13:17:00 light - < 400 13:17:09 medium - 400 <= x <= 500 13:17:13 bold - > 500 13:17:30 For light, first search from x => 0, then x => 1000 13:17:39 For bold, first search from x => 1000, then x => 0 13:19:48 For medium, several possiblities. 13:20:59 Never mind, bolder is better, so medium's category is: search x=>500, then x => 0, then x => 1000 13:21:40 RESOLVED: font-weight matching described before 13:22:06 ScribeNick: TabAtkins 13:22:19 myles: Previously you could animate font-weights, even tho they weren't numbers. 13:22:33 myles: You animated a number, then rounded to nearest 100, *then* invoked the font selection algo. 13:23:11 myles: So at a particular value of time, say your animation was at font-weight:540. You'd first round to 500, then run font-selection. 13:23:33 myles: For variable fonts, you don't have to round. This is a good thing. 13:23:43 myles: But rounding might change which case you fall into. 13:24:19 fantasai: And when animating between 401 and 450, rounding would make you choose the 400 font, but our new thing would choose the 500 font. 13:24:30 myles: So two options: undo what we just did and make it more complicated... 13:24:50 myles: Or say that animating font-weights before variable fonts wasn't often used, and just accept the behavior change. 13:25:55 fantasai: I think there's not much objection to computing font-weight and its animation to be a general integer. 13:26:22 fantasai: But for impls that don't do variable fonts, do we want them to accept any value, or should they still do the rounding? 13:26:54 dbaron: There are fonts with more than just 100, 200, etc weights; seems like it would be better to make that work. 13:27:05 dauwhe: I have a font with weights spaced every 5. 13:27:24 dbaron: So I think we should just make the change; we'll see if there's any problem. 13:27:40 myles: I think we alreayd have an old resolution to let weight accept any integer, actually. 13:28:13 dbaron: Does the spec really mean rather than ? 13:28:26 myles: is right; variables axises can accept any float in the range. 13:28:59 fantasai: So Fonts 3 needs to be updated; do we want to allow it at parse time too? 13:29:25 dbaron: I dont' think Fonts 3 needs updating; this is a new feature, the property just supports more values than it used to. 13:29:29 fantasai: That's fair. 13:30:19 TabAtkins: We could probably use a note in Fonts 4 that the animation behavior has changed. 13:30:21 myles: Yes. 13:30:42 astearns: Objections? 13:31:28 RESOLVED: Font selection algorithm has different behavior during animation than Fonts 3; we will add a note to that affect in Fonts 4. 13:32:15 topic: break 13:38:52 Loirooriol has joined #css 13:39:21 projector has joined #css 13:39:52 Rossen has joined #css 13:40:22 shans has joined #css 13:40:52 sylvaing has joined #css 13:41:22 leaverou has joined #css 13:41:52 plinss has joined #css 13:48:12 svillar has joined #css 13:52:24 glazou has joined #css 13:53:24 bdc has joined #css 13:54:38 dino has joined #css 13:54:49 scribenick: nainar 13:55:32 TabAtkins: first three issues are deeply inter connected 13:55:42 TabAtkins: second one is keystone issue here. 13:55:47 TopicL flow-root syntax 13:55:52 github: https://github.com/w3c/csswg-drafts/issues/1496 13:55:56 s/TopicL/Topic: 13:56:18 Topic: flow-root syntax 13:56:24 github: https://github.com/w3c/csswg-drafts/issues/1496 13:56:42 1550 is not listed in the wiki, but also interconnected 13:57:45 13:58:08 Tab draws a table with columns flow/flow-root, rows block/inline, and values block / BFC / inline-block / inline (clockwise) 13:58:46 Tab: block has to inlinify to inline-block, and inline-block has to blockify to block 13:59:05 https://www.irccloud.com/pastebin/8vyC7bj7/ 13:59:11 myles_ has joined #css 13:59:36 myles_ has joined #css 13:59:39 tmichel has joined #css 13:59:56 TabAtkins: to make this happen properly - we check if the value is a special value 14:00:05 tm has joined #css 14:00:10 dauwhe has joined #css 14:00:51 TabAtkins: we could break the congruence between legacy values andthe keywrod values so that we define that inline blockifies to block and inline 14:01:16 ScribeNick: fantasai 14:01:36 TabAtkins: which would mean that inline-block won't behave the same as inline flow-root 14:01:42 TabAtkins: even though they're the same thing 14:01:46 s/andthe keywrod values/and the two-keyword values/ 14:01:52 TabAtkins: I have an alternate suggestion 14:01:57 plh has joined #css 14:01:59 TabAtkins: It's still a little confusing, but maybe better 14:02:11 TabAtkins: That would avoid breaking existing implementations of flow-root, which have already shipped 14:02:30 TabAtkins: First suggestion is that we stick with block and inline 14:02:45 TabAtkins: But rather than just two values of flow/flow-root, we have three, calling 1 2 and 3 atm 14:02:53 TabAtkins: in increasing order of BFCness 14:03:04 TabAtkins: Legacy inline is inline-1 14:03:11 s/inline-1/inline+1/ 14:03:18 TabAtkins: legacy block is block+2 14:03:25 TabAtkins: inline-block is inline+2 14:03:36 TabAtkins: 2 is the "keep my children together" value 14:03:55 TabAtkins: 3 is the even stronger one, so flow-root is block+3 14:03:58 fantasai: 14:04:11 TabAtkins: and inline+3 is inline-super-block 14:04:18 Florian: What is an inline-super-block? 14:04:32 Florian: In which cases do they behave differently? 14:04:45 fantasai: when does that matter? 14:04:48 TabAtkins: If it blockifies it blockifies to flow-root 14:05:01 (swap last two) 14:05:06 TabAtkins: You contain floats and stuff 14:05:15 TabAtkins: So if you have a plain inline block 14:05:29 Rossen: You ahve two inline blocks, and they are inside a flex. They both get blockified 14:05:48 Rossen: If those have floats inside, those floats don't affect each other 14:05:59 tmichel has joined #css 14:06:02 Florian, fantasai: Flex items are BFCs 14:06:20 Florian, fantasai: When does CSS blockify something and not turn it into a BFC also? 14:06:27 TabAtkins: I can't think of any case... 14:06:35 Florian: What about the block+1 case? 14:06:40 TabAtkins: tiny-block 14:06:52 TabAtkins: tiny-block inlinifies to inline 14:06:56 Florian: concrete example? 14:07:23 TabAtkins: If you have a normal block inside of a ruby container. If you put a tiny-block into a ruby then it turns into a regular inline 14:07:29 TabAtkins: falls out of the 2x3 array 14:07:45 TabAtkins: I guess then we have two values that fall out and aren't really useful 14:07:55 TabAtkins: So in that case, I think we should have a diamond 14:08:02 Florian: So how's that different from 2x2? 14:08:28 TabAtkins: block and inline-block correspond 14:08:41 TabAtkins: I guess flow-root oesn't inlinfiie? Or maybe becomes inline-block? 14:08:47 TabAtkins draws a bunch of arrows 14:08:54 Florian: I don't know if this is useful..... 14:09:10 iank_: Why can't we ? 14:09:24 TabAtkins: Because block has to inlinifie to inline-block, and inline-block blockify to block. 14:09:36 fremy: getComputedStyle, right 14:09:45 Florian: that and display: inherit, which nobody does 14:10:10 Florian: Could we say that everything that BFCizes makes you go from block to flow-root ans independnetly from ... 14:10:13 Florian: Maybe? 14:10:25 TabAtkins: So given that block+1 doesn't have a use case, and neither does inline+3 ... 14:10:51 fantasai: i think its silly to have a combo that is not useful - cant see how this is better 14:10:57 s/combo/bunch of combos 14:11:07 TabAtkins: I want inlinification and blockification to be simple 14:11:17 TabAtkins: 2x2 grid doesn't work, have ot special case things 14:11:40 fantasai: I think you're overex=hasizng th imp of inlinification of swapping a keyword in an onut 14:11:55 fantasai: if we take arrows this set of 4 values correspond like that it will be better. 14:12:06 fantasai: we either have to syntatically disallow or have them do nothing 14:12:17 TabAtkins: .... 14:12:51 TabAtkins redraws original 2x2 grid 14:13:13 TabAtkins draws arrows representing inlinification and blockification 14:13:31 s/overex=hasizng/overemphasizing 14:13:34 TabAtkins: You don't have pairs, a flow-root inlinifies to an inline-block which then blockifies to a block 14:13:40 TabAtkins: But that doesn't seem to be a practical concern 14:13:56 Florian: ... 14:14:00 gregwhitworth: Can you please use words? 14:14:22 Florian: If the only dif between block and flow-root is being a BFC 14:14:29 Florian: becoming a block ...? 14:14:36 [Florian frantically pointing at the whiteboard yelling "this"] 14:14:37 TabAtkins: Inline block currently becomes a block when it blockifies 14:14:50 TabAtkins: It just happens to be an BFC in all these cases, but its computed value is 'block' 14:15:18 TabAtkins: e.g. for flex items, if you specify 'display: inline-block' and ask for its computed display you get 'block' 14:15:35 TabAtkins: Generally the case, also for abspos etc. 14:15:44 TabAtkins: Because 'flow-root' didn't exist 15 years ago 14:15:52 TabAtkins: I don't like it, but I'd be okay with just doing this (points at 2x2) 14:15:57 TabAtkins: So it's fine. 14:16:07 TabAtkins: OK, so we can analyze the other things 14:16:30 TabAtkins: So if we have blockification /inlinification algos just explicitly map these values in the 2x2 grid 14:16:39 TabAtkins: Then the next issue is ... 14:16:55 TabAtkins: This solves 1246 14:17:14 TabAtkins: where bz points out we get the wrong computed style (get flow-root where breaks legacy) 14:17:27 (note to Dael, Rossen's comment goes into the Florian: ... line) 14:17:46 Florian: I believe the board is a re-resolution of 1246 14:17:56 TabAtkins: also resolves 1496 14:18:36 TabAtkins: Suggested resolution is that blockfiication of an inline flow-root aka inline-block is defined to go to 'block' 14:19:19 TabAtkins: And inlinification of block flow special cases to inline flow-root aka inline-block 14:20:03 fantasai: 1486 is still open? 14:20:50 astearns: So sticking with 1496 14:21:41 RESOLVED: Leave 'display' syntax as-is for #1496 14:22:31 RESOLVED: For 1246, inlinification of 'block flow' goes to inline flow-root aka inline-block, blockfication of inline flow-root & inline-block go to 'block' 14:23:23 RESOLVED: For 1486, issue is moot because 1246 resolution was reverted (above) 14:23:47 fantasai: inline flow-root what is the computed value if we arent blockifying? 14:23:53 fantasai: the serialization? 14:24:09 RESOLVED: 'inline flow-root' serializes in getComputedStyle as 'inline-block' 14:24:45 Florian: https://github.com/w3c/csswg-drafts/issues/1550 14:25:17 TabAtkins: This is oriol asking, mechanisms that turn BFCs, why not make them all resolve to display: flow-root instead. And we can't due to web-compat 14:25:28 Florian: It's not that there are 2 behavior for flow, there are 4, and flow is way overloaded 14:25:56 TabAtkins: 2nd and 3rd are the same thing 14:26:03 (of some list that I missed, sorry) 14:26:14 TabAtkins: flow creates regular blocks and sometiems BFC 14:26:19 TabAtkins: That's just the way it is 14:26:28 TabAtkins: oh, I see 14:26:38 TabAtkins: Actual suggestion is to change the value at used value time 14:26:46 TabAtkins: That doesn't mean anything, because it's post box tree construction 14:27:07 TabAtkins: Used values are for turning box tree into fragment tree 14:27:23 dbaron: no, used values are just how we describe transformations that happen after inheritance 14:27:29 dbaron: i.e. anything that's post-computation 14:28:06 fantasai: is this editorial? he si saying tha tinstead of describing things as we have it - we shoudl vocab and change flow to flow-root for used value 14:28:18 "This change should have no effect in practice." 14:28:25 TabAtkins: ... 14:28:36 TabAtkins: computed value is eveyrthing before you inherit, and used value is everything after inheritance 14:28:58 Florian: No way to distinguish, but you could say that box tree is computed off of used value of 'display' 14:29:10 Florian: introducing this concept as a way of explaining what happens 14:29:19 fremy: All the old specs we already have will be even more confusing 14:29:30 TabAtkins: We already have had to edit every spec 14:29:40 TabAtkins: e.g. "height behaves as auto" thing 14:29:59 TabAtkins: Not actually every spec anywya 14:30:05 TabAtkins: Seems okay 14:30:11 TabAtkins: dbaron? 14:30:30 astearns: Given item wasn't on agenda, and this is first time apparently anyone understood it... 14:30:33 TabAtkins: OK, can discuss later 14:30:49 Florian: It was sort of on the agenda, next issue links to this one 14:31:03 astearns: OK, let's switch the topic and get minutes posted to the correct issues. 14:31:18 Topic: Becoming a formatting context 14:31:32 github: https://github.com/w3c/csswg-drafts/issues/1457 14:31:53 TabAtkins: big issue is 'contain' property 14:32:07 TabAtkins: which requires element to establish a formatting context 14:32:31 TabAtkins: But it's not meaningful, can't just say it establish a formatting context out of the blue, e.g. an 'inline' can 14:32:38 TabAtkins: can't establish a formatting context 14:32:47 TabAtkins: could say that it turns into an inline-block, tho 14:32:50 TabAtkins: But can't do that to Ruby 14:32:54 TabAtkins: So what should we do here? 14:33:03 TabAtkins: Most cases it's a no-op, grid/table/etc is a no-op 14:33:09 TabAtkins: block has an easy answer: switch to flow-root 14:33:18 TabAtkins: inline has an easy answer: switch to inline-block 14:33:25 TabAtkins: ruby is the only one that has a difficult issue 14:33:38 Florian: In other cases, we haven't had a problem with this 14:33:49 Florian: e.g. 'overflow' doesn't apply to inline/ruby, so don't have to worry about these cases 14:34:06 Florian: similarly column-span only applies to block-level elements, so no problem there 14:34:14 Florian: The only case where we have a problem is 'contain' 14:34:27 Florian: which needed to apply to 'inline' and 'ruby' 14:34:44 Florian: So we need to establish terminology, and oriol's suggestion works for this 14:35:09 fantasai: ruby cant block 14:35:16 s/cant/can/ 14:35:31 fantasai: ruby spec defines block ruby. AYOu cant turn into a inline block ruby which is what you were trying to say 14:35:34 Florian: The alternative is to not add terminology for this, and just say that these things blockify and th 14:35:39 (shift that up) 14:35:49 Florian: Might be worth leaving existing places the way they are 14:35:57 Florian: and have 'contain' blockify, and the rest is obvious 14:36:08 Florian: If there's an easy way to define this, then we should, and then call into it ffrom all these places 14:36:16 Florian: Oriol's suggestion solves this case 14:36:34 TabAtkins: So what should we do for ruby 14:37:04 fantasai: two solutions here. third one is what you were trying to do - ruby makes an inline block ruby thing. No use case - not a good idea 14:37:46 fantasai: second thing we could do - florian mentioned to blocify ruby and the inline. That is inconsitent with inline block. They get to stay as inline-blocks 14:37:55 fantasai: weird to have ruby turn into a block element 14:38:09 fantasai: you could turn all inline level things into block level things 14:38:43 fantasai: last thing, this aspect of contain doesnt apply to inline/ruby - the author should change it into a block first. Author then chooses to make the display transformation 14:38:57 TabAtkins: No reason not to apply contain to inline-block 14:39:09 TabAtkins: you mentioned block ruby 14:39:19 fantasai: confirms that if you specify display block ruby you get a block with ruby inside it 14:39:57 fremy: ruby does special alignment things 14:40:02 Florian, fantasai: it's not different from iline 14:40:04 inline 14:40:14 TabAtkins: Can we make block ruby a BFC? 14:40:36 TabAtkins: Only thing is that if you have a float, it won't intrude the way it does for regular blocks 14:41:05 Rossen: No reason to have inline layout of ruby be different from regular inline layout 14:41:21 fantasai: why not go with the last option? 14:41:22 TabAtkins: ... 14:42:04 fantasai: to apply to neither inline/ruby - you the author must turn it into an inline-block or block (preferred) 14:42:10 TabAtkins: Ok, I'm down with that 14:42:17 s/preferred/depending on the author's preference/ 14:42:39 dbaron: Issue is that contain is that authors won't know what effects to get 14:42:46 TabAtkins: Then it's a no-op, they're putting it there for trash reasons 14:42:53 fremy: They're not getting worse performance 14:43:11 ... 14:43:29 dbaron: Elements nested inside each other, and accidentally stuck property on inline instead of the inline-block 14:43:46 fremy: dom inspector can show that it doesn't apply 14:44:17 astearns: What if they applied it to a box that was block, and then changed it to an inline and now they lose the perf benefits 14:44:37 fantasai: keep in mind that if you had a contain on there - when you turned it into an inline you would not get the layout you expected. 14:44:59 fantasai: if we didnt ignore it we would be forcing it into an inline then 14:45:32 fremy: Your question is like someone getting perf benefit from ? and then turning it off and wondering why benefit is gone... 14:45:50 astearns: I like the fact that 'contain' doesn't have the blockification transformation 14:46:05 TabAtkins: That would be a significant layout change, whereas for other things its relatively minor 14:46:32 Florian: After understandign it, you used oriol's terminology, so regardless of whether we become an FC, i would support adopting oriol's terminology 14:47:09 Florian: It seems to me that we are getting closer to fantasai's position, which is to not define the idea of becoming an FC, and for all the situations except contain that may have been ambiguous it was good enough 14:47:27 Florian: and for contain we will eliminate the problematic situations so that it is also good enough 14:48:18 TabAtkins: First resolution is for 1457, which is "what does it mean to become a formatting context" 14:48:44 TabAtkins: resolution is that blocks become flow roots, inlines and rubies can't establish a formatting context, and so any property that tries ot nvoke this must exclude them somehow 14:48:53 TabAtkins: so we will change 'contain' accordingly 14:48:58 astearns: dbaron? 14:49:24 dbaron: I think ppl often have a bunch of nested elements and the display types are pretty random, and that usually just work 14:49:43 TabAtkins: Kinda, until people are like "why is there a 2px gap below this thing?" and it's because they have an inline-block instead of a block 14:49:47 TabAtkins: You have to learn that 14:49:56 Florian: Or fix it with margin-bottom: -2px :D 14:50:00 T_T 14:50:21 dbaron: If they have a baseline, won't have that problem tho 14:50:34 dbaron: only if they fail to have a baseline 14:50:50 astearns: So we could resolve on what Tab said, or resolve part of it 14:50:55 Hi CSSWG, what about 'block ruby'? The block container could establish a BFC. 14:51:20 astearns actually just asked that question to dbaron, didn't get a chance to type it yet :) 14:51:38 2nd question was also asked earlier, no answer yet 14:51:50 dbaron: I'm okay with resolving but kinda concerned about making 'contain' even more random 14:52:01 dbaron: I think one thing that is hard about web dev is that it's hard to understand perf effects of things 14:52:10 dbaron: Part of why contain is useful is it provides a way to make them more predictable 14:52:18 dbaron: by forcing various types of isolation 14:52:18 Loirooriol, It would be rather unfortunate if it was impossible to have block-ruby flow around a float; there's no reason to restrict that. 14:52:24 q+ 14:52:28 dbaron: If you make contain less reliable, then you're back to unreliable 14:52:39 fremy: I have a solution 14:52:41 ack fremy 14:52:44 fremy: display: none 14:52:54 fremy: then author will find out it's a problem 14:53:01 fantasai: we don't do dataloss by default 14:53:16 s/solution/solution but no one will like it/ 14:53:31 Florian: Do we also need to stop confusing formatting contexts and formatting contexts? 14:53:35 TabAtkins: not directly relevant 14:53:40 Tabatkins, I meant only when 'contain' needs a formatting context 14:54:26 Loirooriol, then there's no way to create a block-ruby FC without side-effects. :( 14:54:49 s/without/without using/ ? :) 14:55:06 TabAtkins: Thinking to leave 'contain' issue undef for now 14:55:10 TabAtkins: or figure out something for ruby 14:55:20 TabAtkins: or say that contain doesn't apply to inline ruby 14:55:24 TabAtkins: which do you like best? 14:55:35 dbaron: I guess I don't feel that strongly 14:55:37 s/inline ruby/inline and ruby/ 14:55:55 dbaron: I think you could say they become inline flow root or ... 14:55:56 fantasai: I think we imply ... the container 14:56:35 fantasai: I think if you turn display:ruby into flow-root you will.. Ruby does the same thing as table. 14:57:22 fantasai: set display:flow-root on a ruby element you will get a block ruby BFC - all boxes in ruby will generate correctly. 14:57:53 TabAtkins: you get a contained block and all the perf benefits there 14:58:04 fantasai: you have sideeffects like we turn of inlinification 14:58:23 s/of/off 14:58:27 fantasai: you have block boxes inside a ruby container they inlineify. They wont anymore 14:58:54 fantasai: there will be some differences in behaviour. 14:59:16 fantasai: it woudl break the case of not using rb elements to wrap bases? 14:59:32 fantasai: because parent is no longer ruby container 14:59:47 fantasai: scooping algo would ... 15:00:06 s/.../not scoop up ruby bases that aren't in explicit elements/ 15:00:39 TabAtkins: Then let's go ahead and do Loirooriol's thing of having "used value of flow-root" terminology for all of our BFCs 15:00:53 astearns: Any resolution for becoming a formatting context? 15:00:54 TabAtkins: not yet 15:01:19 astearns: proposed resolution to take Oriol's proposal in 1550 15:01:24 TabAtkins: This is just an editorial change 15:01:29 RESOLVE: Accept 1550 15:01:49 s/RESOLVE/RESOLVED/ 15:02:25 fantasai: Could say that the "becoming a formatting context" section is css-contain's problem, remove it from css-display 15:02:36 TabAtkins: yeah, since it's no longer affecting anythng other than contain 15:02:50 TabAtkins: so let's move to 'contain' spec, mark ruby and stuff as open issues 15:03:09 RESOLVED: Move "becoming a formatting context" section back to css-contain, mark ruby/inline as open issues to figure out 15:03:40 TabAtkins: Bunch of untriaged issues from Oriol, will talk about them later 15:04:04 Topic: CSS UI 4 and appearance 15:04:14 ScribeNick: TabAtkins 15:04:34 github: https://github.com/w3c/csswg-drafts/issues/1250 15:04:39 Florian: There's an appearance proeprty. We started standardizing it, because a lot of people use "none" on form controls to make them styleable in CSS. 15:04:47 Florian: This previous existed as a prefixed form in most browsers. 15:05:17 Florian: Before stadndardization, the values other than none was a very long list of all the ways an element could look; this list was different across browsers. 15:05:36 Florian: We concluded this was impossible to standardize, in part because many apply to pseudo-elements that other browsers don't have, as they construct form elements differently. 15:05:54 Florian: Instead, we'd just have an "auto" value that makes form controls look like whatever they need, and a "none" value that suppresses it. 15:06:14 Florian: We could possibly exxtend this into a small list of special values, like "button" to make it look like a native button, but so far ahve resolved not to. 15:06:29 Florian: Now Moz said that they need to implement all of the -webkit-appearance values. 15:06:34 Florian: I'm a little suspicious. 15:06:39 dbaron: Not sure if that's accurate. 15:06:56 dbaron: I think it's, *when* we implemented both appearance and -webkit-appearance, sites broke. 15:07:06 Florian: They first said they aliased them to each other, and that broke stuff. 15:07:12 Florian: That's expected, they're very different. 15:07:25 Florian: They said "we need to ipmlement all the -webkit values anyway, so the simple one isn't useful to us" 15:07:34 dbaron: Not sure that's what we said/meant. 15:07:42 Florian: Then I'm confused and need to know what they mean. 15:08:15 Florian: "fwiw, we intend to support -webkit-appearance with all values that Chrome supports" ~ Mats Palmgren, June 7 15:08:28 comment here: https://github.com/w3c/csswg-drafts/issues/1250#issuecomment-306788821 15:08:38 dbaron: There are sites that specifically set "input { appearance: none; } input[type=checkbox] { appearance: checkbox; }" 15:08:55 Florian: We did say that, if needed for webcompat, we could add a handful of required values. 15:09:03 Florian: This is very different from adding all 50+ webkit values. 15:09:19 FYI: https://bugzilla.mozilla.org/show_bug.cgi?id=1368555 15:09:21 dbaron: If that's the case, then don't put 'appearance' in a spec ready for impl. 15:09:26 dbaron: Otherwise people try to implement it. 15:10:06 TabAtkins: Maybe have a scary notice saying this is problemantic 15:10:14 Florian: I had that note. WG asked me to remove it. 15:10:28 see the webcompat.com URLs in the above bugzilla bug 15:10:29 TabAtkins: I'm fine with putting note back 15:10:38 TabAtkins: to say that we might need some values 15:10:54 Florian: Cool. But that's different from saying we need all the webkit values. Because then we need all the webkit pseudo-elements, and I'm not speccing that. 15:11:03 jet: Doesn't mean we might not need it. 15:11:15 Florian: Maybe, but it'll be a huge effort. Need good proof it's needed. 15:11:38 and Florian should be given a correspondingly significant budget for working on it :) 15:12:26 TabAtkins: So suggestion: add note saying don't implement this property yet; it needs some subset of the -webkit-appearance values; impls need to tell us which subset is necessary 15:12:43 Florian: Initial draft included the other values Edge supports for -webkit; presumably that's for compat reasons. 15:12:52 Florian: WG told me to remove it. 15:13:32 gregwhitworth: My recollection was a question whether it was even needed. 15:13:47 TabAtkins: David suggested we did - his example would break checkbox rendering. 15:14:01 dbaron: I don't know the exact details, there's so many bugs and compat stuff it'll take a while to untangle. 15:14:35 Florian: So two options: none | auto | ; or none | 15:14:51 fremy: Alternatiely: let it take any keyword, treat unknown ones as "auto". 15:14:56 Florian: That doesn't match today. 15:15:25 astearns: Why is "auto" only with non-exhaustive list? 15:15:40 +q 15:15:44 TabAtkins: We could put it with exhaustive, and we could omit it from the non-exhaustive list. Depends on details. 15:16:58 q? 15:17:02 ack ericwilligers 15:17:10 fremy: If you have "div { -webkit-appearance:button}", nothing happens. But "input { -webkit-appearance: none; }" does work; using "checkbox" will work on a checkbox input, but won't turn a text input into a checkbox. 15:17:30 ericwilligers: I heard dbaron say that if they ship appearance it'll break compat. Can we just change the name? 15:17:39 TabAtkins, yes 15:17:48 q+ to note or we go with original guidance to drop appearance from CSS UI, and let it get documented in https://compat.spec.whatwg.org/ instead (all prefix or not variants) 15:18:05 Florian: And then we can avoid saying "none", and use "normal" instead, which sounds better. 15:18:05 per https://github.com/w3c/csswg-drafts/issues/1250#issuecomment-306788821 15:18:16 dino: Who implements unprefixed appearance? 15:18:28 TabAtkins, input { -webkit-apperance:none} input[type=button] { -webkit-appearance: checkbox } renders as a button 15:18:28 Florian: Nobody that I know, but I last checked a while ago. 15:18:45 dbaron: We tried, but backed it out before it hit stable. 15:19:02 dbaron: It's not clear what portions of the problem were with "appearance" and which were with "-webkit-appearance". 15:19:10 dino: I was considering implementing unprefixed with just "none" and "auto". 15:19:26 ack tantek 15:19:26 tantek, you wanted to note or we go with original guidance to drop appearance from CSS UI, and let it get documented in https://compat.spec.whatwg.org/ instead (all prefix or not 15:19:29 ... variants) 15:19:41 tantek: One of the points Mats made is that this isn't a particularly useful feature for web authors. 15:19:50 tantek: So one proposal is just to drop it entirely. 15:20:25 fantasai: People use it a lot. 15:20:35 TabAtkins: I use "none" plenty to do styles on my buttons, etc. 15:21:34 dbaron: It's not cleaer to me which of these was the good reason to back the whole thing out. 15:21:47 dbaron: ONe of my guidelines is that if a user reports a bug, that's a compat problem; if the dev does, that's not a compat problem. 15:21:57 dbaron: And one of them was reported by a dev, because it comes with a jsfiddle. 15:21:59 s/not/not necessarily/ 15:22:11 TabAtkins: That said, your example looks believable 15:22:21 TabAtkins: It would be fixed by fremy's proposal 15:22:37 astearns: would also be fixed by minting an entirely new property 15:22:55 astearns: So that seems like a cleaner solution. 15:24:00 TabAtkins: Possible conclusion, just leave this unresolved, but note the handful of possible solutions and ask impls to tell us which they want to do. 15:24:04 svillar has joined #css 15:24:06 Florian: Seems better than trashing it. 15:24:21 seems like a lot of work for very little benefit 15:24:27 so I question why 15:24:52 RESOLVED: Put a note into "appearance" saying it's not ready to implement, list the possible solutions discussed here, ask impls which they want to do. 15:25:56 TabAtkins: Answer to tantek's question is that people use it for useful things today 15:26:09 TabAtkins: and there is no other solution for what they want today 15:26:33 where is the documentation of the use-case in the spec? let's drop a URL here for the minutes 15:26:43 topic: related side-topic 15:27:04 Florian: Another warning for the spec: the high-level doesn't need to change, but details are insufficient. 15:27:12 Florian: When you appearance:none something, the native-ness goes away. 15:27:21 Florian: AND this does not affect its beahvior; events still happen, etc. 15:27:25 Florian: This is established. 15:27:45 Florian: Waht's not established is: if you "none" a button, does it look loike an unstyled div, or is there UA styles that make it button-y, which you can replace. 15:28:11 Florian: Another thing: for a range input, you probably can remove the graduation on the bar that tells you where you are, but you can't remove the thumb; otherwise you have nothing to drag. 15:28:46 Florian: So going from the high-level principles that you need to keep it interactive, we need to dive into every control and specify what disappears, what is done by the UA stylesheet, and what is kept no matter what. 15:29:04 Florian: If you want me to spend time doing this, say so. 15:29:15 dbaron: I think some impls can assume they always have a neative appearance. 15:29:19 how high does the cost have to go before it is obviously not worth the supposed benefit? 15:29:25 s/neative/native/ 15:29:41 dbaron: A number of platforms provide an API that says "draw a background of a button". 15:30:03 dbaron: The original spec didn't say this, but I think both impls of appearance were about replacing the border/background of a button/widget with a native one. 15:30:13 dbaron: On some platforms you can rely on these native APIs always being present and always working. 15:30:16 dbaron: On some you can't. 15:30:23 dbaron: Not sure if we care about those platforms, but we might. 15:30:48 dbaron: One thing that led us to retain our UA stylesheet is because they always existed as fallback, for when the platform couldn't draw a native thing 15:31:06 dbaron: I think an example was older versions of windows not having all the widgets, or Linux themes not always being capable. 15:31:26 dbaron: At least GTK2, theme might be unable to draw if provided a surface that wasn't a real GTK window, so you had to do something else. 15:31:50 Florian: I think this is extra background for what I tried to state earlier; a combination of principle and compat requirements means that there must be *something* in the UA stylesheet. 15:31:56 Florian: This research hasn't happened. 15:32:12 dbaron: And specifying border/background explicitly also turns off appearance, on most (all?) things. 15:32:23 dbaron: And there are cases that "appearance:none" also turns off *more* things. 15:32:42 dbaron: FF didn't do this, but WK eventually started doing this, so there's lots of weird logic now. 15:32:56 dino: I don't think there's much we turn off with "none". 15:33:13 dino: Some cases where you'd get a native widget, but styles change it to a non-native widget, so it changes appearance dramatically... 15:33:27 dbaron: Some examples: the drop marker in a combo box... 15:33:45 dbaron: If you say appearance:none, the dropdown arrow next to a