Re: [csswg-drafts] [css-nesting] Problem with mixing properties and selectors (#8249)

The CSS Working Group just discussed `CSS Nesting Syntax`, and agreed to the following:

* `RESOLVED: Adopt Option 3`

<details><summary>The full IRC log of that discussion</summary>
&lt;fantasai> Topic: CSS Nesting Syntax<br>
&lt;fantasai> github: https://github.com/w3c/csswg-drafts/issues/8249<br>
&lt;chris> resolving two color issues in &lt;10min is unprecedented<br>
&lt;fantasai> TabAtkins: I'm willing to summarize what I believe plinss's position is, he can correct<br>
&lt;fantasai> TabAtkins: fear is that the direction the spec is specifying will overly constrain future CSS<br>
&lt;fantasai> TabAtkins: certain new syntactical things in properties or selectors<br>
&lt;fantasai> TabAtkins: proposal is instead to have a dedicated syntax to mark things as a selector<br>
&lt;fantasai> TabAtkins: that way all future syntactical developments would still be allowed<br>
&lt;lea> q?<br>
&lt;fantasai> TabAtkins: and future developments for selectors, which might currently conflict with properties, would also be allowed<br>
&lt;fantasai> TabAtkins: because you have a glyph to mark it as a selector<br>
&lt;fantasai> TabAtkins: related is the 8251 issue, where dbaron discusses the things that trigger selector processing and not currently used by selectors<br>
&lt;fantasai> TabAtkins: this issue accepts mixing of properties and selectors in grammar space<br>
&lt;fantasai> TabAtkins: issue is, we've already discussed previously, what peter is suggesting<br>
&lt;fantasai> TabAtkins: this was Option 1, you had to start with &amp; or @nest or various variants thereof<br>
&lt;fantasai> TabAtkins: This was rejected by WG for verbosity and for copy-paste limitations<br>
&lt;fantasai> TabAtkins: core issue is, WG has looked over that syntax direction and rejected it in the past<br>
&lt;jensimmons> q+<br>
&lt;fantasai> TabAtkins: so I would like to re-affirm that decision, that we're not going to use a dedicated marker syntax of some kind to denote selectors and separate them from properties<br>
&lt;fantasai> TabAtkins: but rather go with current approach of mixing the space<br>
&lt;lea> q+<br>
&lt;fantasai> TabAtkins: make sure the Syntax spec creates a clear dividing line<br>
&lt;TabAtkins> fantasai: I think something Tab didn't emphasize is the core part of Peter's concern for forward compat<br>
&lt;TabAtkins> fantasai: The real effect of forwards compat isn't as - we'r enot limiting as much as it seems like we are<br>
&lt;TabAtkins> fantasai: What we're allowing for the future is anything that's invalid, regardless fo whether it's currently property or selector<br>
&lt;TabAtkins> fantasai: The space of "what is invaidl junk" is actually really broad even with our current proposal<br>
&lt;Rossen_> ack fantasai<br>
&lt;Zakim> fantasai, you wanted to react to ntim<br>
&lt;fantasai> https://github.com/w3c/csswg-drafts/issues/8249#issuecomment-1362033982<br>
&lt;TabAtkins> fantasai: The ony thing we can't expand into is a super-limited syntax space that I can't imagine us actually doing<br>
&lt;fantasai> #stuff starting with a symbol { anything in this block } valid-property: value;<br>
&lt;TabAtkins> fantasai: We cant' start with a symbol, *and* has a curly-brace block *and* is followed by something tha tlooks like a property<br>
&lt;TabAtkins> fantasai: This is the only thing you can't define in the future is a cool new feature<br>
&lt;TabAtkins> fantasai: If it doesn't look like that it's invalid - whether a property or style rule, we throw it out<br>
&lt;TabAtkins> fantasai: And in th efuture we can call it valid either way<br>
&lt;TabAtkins> fantasai: So for concern abou tpainting us into a corner, it's acutally a very small corner and the rest of the space is open<br>
&lt;fantasai> plinss: Just want to clarify a couple points, most of what Tab said is accurate<br>
&lt;fantasai> plinss: it's not necessarily required to have a solution that prefixes every single rule<br>
&lt;fantasai> plinss: also fine to create a new scope<br>
&lt;fantasai> plinss: just nested brackets or whatever, that also solves the copy-paste problem<br>
&lt;fantasai> plinss: just want something that delineates the syntax space<br>
&lt;fantasai> plinss: we did resolve not to do this in the past, but I'm not sure that took everything into account<br>
&lt;fantasai> plinss: not locked by previous decision<br>
&lt;astearns> +1 to not taking older @nest decision as final<br>
&lt;fantasai> jensimmons: I did hear plinss's concerns, and we've discussed exhaustively<br>
&lt;fantasai> jensimmons: but despite downsides, I see all the momentum going towards Option 3 including from webdevs<br>
&lt;Rossen_> ack jensimmons<br>
&lt;fantasai> jensimmons: There was a lot of conversations after ?? meeting, and I appreciate dbaron, fantasai, TabAtkins investigating what we would limit ourslves<br>
&lt;TabAtkins> s/??/final December/<br>
&lt;plinss>  q+<br>
&lt;fantasai> jensimmons: but it seems we're not really limiting ourselves, so I think should move forward<br>
&lt;fantasai> jensimmons: want a path that moves us forward and is realistic and acceptable<br>
&lt;Rossen_> ack lea<br>
&lt;fantasai> lea: A lot of things I wanted to say were mentioned by fantasai, still have a lot of space for expansion<br>
&lt;fantasai> lea: but we could expand that space even further by reserving some characters<br>
&lt;Rossen_> ack plinss<br>
&lt;fantasai> plinss: I'm not sure I buy fantasai's argument<br>
&lt;fantasai> plinss: it's not infinite, but there are cases where we wanted to do something but couldn't because shows up in the wild as some weird hack<br>
&lt;fantasai> plinss: I think it'll be limiting<br>
&lt;fantasai> plinss: example is custom properties, couldn't have done that if we had done this first<br>
&lt;fantasai> plinss: I don't want us to get into that situation<br>
&lt;TabAtkins> fantasai: Lets take the custom property eample<br>
&lt;Rossen_> ack fantasai<br>
&lt;Zakim> fantasai, you wanted to respond<br>
&lt;TabAtkins> fantasai: say initial hypthen switched us to selector parsing<br>
&lt;TabAtkins> fantasai: we could do it<br>
&lt;Rossen_> Zakim, close queue<br>
&lt;Zakim> ok, Rossen_, the speaker queue is closed<br>
&lt;TabAtkins> fantasai: You'd throw it out as an invalid selector today<br>
&lt;TabAtkins> fantasai: And that means we can reinterpret it later<br>
&lt;TabAtkins> fantasai: Have you really looked at what the limiting case is?<br>
&lt;TabAtkins> fantasai: The ocnditions are really strict. anything that's currently invalid and gets thrown out, we can reinterpret<br>
&lt;TabAtkins> fantasai: have to keep in mind that the parsing in the nested context isnt' the same as top-level, we truncate at top-level semicolon even in selecto rparsing<br>
&lt;lea> *Nesting itself* is a case where past syntax limits us in what we can do syntactically (going back, maybe we should have used something other than a colon for pseudos), but it's not an insurmountable problem, we are designing around it. We'll design around these issues in the future too, if they come up.<br>
&lt;TabAtkins> fantasai: So there's very limited - can't think of anything you want to do that'll cause a problem<br>
&lt;lea> q?<br>
&lt;lea> q+<br>
&lt;fantasai> plinss: we could solve this with lookahead<br>
&lt;fantasai> plinss: also concerned that we have stuff that's valid for selectors and can't re-use for properties<br>
&lt;fantasai> plinss: selectors can be really really really long, especialy with lists of selectors<br>
&lt;argyle> q+<br>
&lt;fantasai> plinss: thing at the end that changes selector or property, could get into situation that we cant solve without a lot of lookahead<br>
&lt;fantasai> Rossen_: I've closed the queue, 2min past the hour<br>
&lt;lea> regarding exploring lookahead, I tried. Here's a summary: https://github.com/w3c/csswg-drafts/issues/8249#issuecomment-1362739063<br>
&lt;fantasai> Rossen_: Strong arguments in both directions<br>
&lt;fantasai> Rossen_: alan proposed we make nesting an additional call, can make it as soon as next week e.g. 1hr before the main CSS call<br>
&lt;fantasai> Rossen_: but right now we don't seem to have consensus<br>
&lt;lea> +1 to Nesting breakout<br>
&lt;fantasai> Rossen_: or we can take a resolution and ask Peter to file a formal objection<br>
&lt;fantasai> TabAtkins: I would prefer to get the formal objection filed now if it's going to be filed, would rather not be in limbo<br>
&lt;lea> let's try to avoid a FO as much as we can, the TAG is already overworked :(<br>
&lt;fantasai> TabAtkins: fantasai and I explored the syntax space carefully, we don't think there's a real limitation there<br>
&lt;astearns> have to drop<br>
&lt;fantasai> TabAtkins: so I don't think further discussion will yield anything useful<br>
&lt;lea> we need a Nesting breakout even regardless of the FO, don't we? So let's schedule that<br>
&lt;fantasai> Rossen_: ok, we'll try to have a call for nesting, whether this topic is part of it or not is TBD<br>
&lt;fantasai> Rossen_: I will call for objections, and then have a resolution that seems supported by rest of group<br>
&lt;fantasai> Rossen_: Any objections?<br>
&lt;fantasai> plinss: I clearly object. More than happen to have the long call or breakout or sub-breakout or whatever<br>
&lt;fantasai> plinss: happy to let Tab and fantasai convince me that I'm wrong<br>
&lt;fantasai> plinss: and to change my mind<br>
&lt;oriol> I'm more on Peter's side on this topic<br>
&lt;fantasai> plinss: but shy of that, or changing the processing rules, I sustain my objection<br>
&lt;fantasai> Rossen_: It does seem this has been discussed over and over, and I hear support for this from many people<br>
&lt;fantasai> Rossen_: so suggest we resolve this, or take up as additional changes to the current resolution<br>
&lt;fantasai> plinss: We've resolved on Option 3 with this issue open<br>
&lt;fantasai> plinss: still saying we can discuss at the breakout call, so what's point of resolving?<br>
&lt;fantasai> Rossen_: we resolved to discount other options, not to adopt Option 3<br>
&lt;fantasai> [some discussion of what we resolved or didn't]<br>
&lt;fantasai> jensimmons: would be helpful to take the temperature of the room<br>
&lt;lea> fwiw, I agree with plinss that lookahead should be explored more. But not primarily for futureproofing (I think there's enough syntax space that we're not painting ourselves into a corner), but primarily for syntax ergonomics. I'm not convinced it's an unsolvable problem.<br>
&lt;fantasai> fantasai: straw poll, and then close discussion until next week?<br>
&lt;fantasai> Rossen_: A = support Option 3, and B = not support it<br>
&lt;argyle> A<br>
&lt;jensimmons> A<br>
&lt;ydaniv> A<br>
&lt;TabAtkins> A<br>
&lt;fantasai> A<br>
&lt;oriol> B<br>
&lt;bradk> A<br>
&lt;SebastianZ> A<br>
&lt;miriam> A<br>
&lt;plinss> B<br>
&lt;dholbert> A<br>
&lt;GameMaker> A<br>
&lt;flackr> A<br>
&lt;davidleininger> A<br>
&lt;futhark> A<br>
&lt;florian> A<br>
&lt;lea> I find the question unclear, so I'm not voting.<br>
&lt;lea> A<br>
&lt;Rossen_> A<br>
&lt;fantasai> Rossen_: pretty strong signal here, let's go ahead and record this as a resolution. We will try to get the extra nesting discussions, Peter I'm hoping you can proceed with next steps if you want to pursue formal objection or wait until next week<br>
&lt;fantasai> plinss: happy to discuss on breakout call, but want to actually get to it<br>
&lt;fantasai> Rossen_: we've never had a rule that we can't re-open previous resolutions :)<br>
&lt;fantasai> plinss: that's been teh arugment several times<br>
&lt;fantasai> florian: from the other angle, if you do file an FO and are subsequently convinced, you can retract it<br>
&lt;fantasai> plinss: if discusisng in a week, don't need to file an objection today<br>
&lt;fantasai> Rossen_: We'll schedule for next week then<br>
&lt;fantasai> jensimmons: please schedule for next week, it's quite importnat to us<br>
&lt;fantasai> RESOLVED: Adopt Option 3<br>
&lt;fantasai> Rossen_: I appreciate everyone staying longer than usual, we don't almost ever, but this is an important topic to many<br>
&lt;fantasai> Rossen_: we'll schedule an additional meeting next week<br>
&lt;fantasai> Meeting closed.<br>
&lt;Rossen_> Zakim, end meeting<br>
&lt;Zakim> As of this point the attendees have been Rossen_, flackr, SebastianZ, khush, bramus, ydaniv, rachelandrew, bradk, emilio, chrishtr, alisonmaher, TabAtkins, futhark, plinss, chris,<br>
&lt;Zakim> ... morgan, fantasai, jensimmons, (chat, only, for, the, beginning), masonf, emeyer, miriam, dholbert, vmpstr, lea, smfr, oriol, GameMaker, jfkthame<br>
&lt;Zakim> RRSAgent, please draft minutes<br>
&lt;Zakim> I am happy to have been of service, Rossen_; please remember to excuse RRSAgent.  Goodbye<br>
&lt;RRSAgent> I have made the request to generate https://www.w3.org/2023/01/11-css-minutes.html Zakim<br>
&lt;jensimmons> Hey — did the minutes of the last issue get posted to GitHub? I don't see them.<br>
&lt;jensimmons> dbaron — does the new bot close minute taking for the last issue &amp; post those to Gitbhub when "end meeting" is triggered?<br>
</details>


-- 
GitHub Notification of comment by css-meeting-bot
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/8249#issuecomment-1379326665 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Wednesday, 11 January 2023 18:40:55 UTC