Intent to Remove: Shadow-Piercing descendant combinator, '/deep/' and '::shadow' pseudo-element, from the dynamic profile

3,435 views
Skip to first unread message

Hayato Ito

unread,
Mar 24, 2017, 12:32:22 AM3/24/17
to blink-dev
Primary eng (and PM) emails

Link to “Intent to Deprecate” thread

Summary
Remove '/deep/' (aka '>>>' [1]) and '::shadow' [2] from the dynamic profile [3].

After getting 3+ LGTMs, I plan to add a removal timeline of 1, perhaps 2 milestones in the future, to the deprecation message.
'::shadow' will be removed after that. /deep/ will be an alias for " " (the standard descendant combinator) in the dynamic profile to reduce page breakage. See the "Usage information from UseCounter" section for the rationale.

Note that /deep/ and '::shadow' pieces only into Shadow DOM v0. Shadow DOM v1 does not support /deep/ nor '::shadow' from the beginning.

Compatibility And Interoperability Risk

Edge: Not supported
Firefox: Not supported
Safari: Not supported

Regarding the internal usage of /deep/, see [4] for details. The remaining dynamic uses of /deep/ in i18n can be removed pretty soon.
Regarding AdBlock plus, they do *not* make use of the /deep/ combinator. See also [4].

Alternative implementation suggestion for web developers
No direct alternative.

Usage information from UseCounter

See [5] for the meaning of this use counter. This counter triggers only when /deep/ does something different to the standard descendant combinator. This great job was done by shans@.
Thus, aliasing /deep/ to " " is an effective strategy for reducing page breakage.

For references:

OWP launch tracking bug

Entry on the feature dashboard


Domenic Denicola

unread,
Mar 24, 2017, 1:43:13 AM3/24/17
to Hayato Ito, blink-dev
From: Hayato Ito [mailto:hay...@chromium.org]

> /deep/ will be an alias for " " (the standard descendant combinator) in the dynamic profile to reduce page breakage

Is there a plan to standardize this alias, or to remove it in the future?

Hayato Ito

unread,
Mar 24, 2017, 2:21:44 AM3/24/17
to Domenic Denicola, blink-dev
The plan is to remove /deep/ in the future. I think we will remove /deep/ when we remove Shadow DOM v0 from Blink.
From the standard's point of view, /deep/ was already renamed to '>>>'. 

Rick Byers

unread,
Mar 27, 2017, 4:36:18 PM3/27/17
to Hayato Ito, Domenic Denicola, blink-dev
To clarify, this isn't really removing /deep/ at this time.  Other CSS parsers won't ignore the token, so rules using /deep/ will still do one thing in Chrome but do nothing at all in other browsers (and so be an interop risk).  Right?

Still seems like a good step forward to me.  LGTM1.
Maybe create a new chromestatus entry for "make /deep/ behave like the descendant combinator"?  Will you also update the deprecation warning text to indicate that it's now a no-op (but still deprecated)?

Hayato Ito

unread,
Mar 27, 2017, 9:36:53 PM3/27/17
to Rick Byers, Domenic Denicola, blink-dev
> To clarify, this isn't really removing /deep/ at this time.  Other CSS parsers won't ignore the token, so rules using /deep/ will still do one thing in Chrome but do nothing at all in other browsers (and so be an interop risk).  Right?

Correct.  CSS parser won't ignore /deep/ and it will consider it as a valid token. We will convert it to " " (descendant combinator) internally. 

> Maybe create a new chromestatus entry for "make /deep/ behave like the descendant combinator"?  Will you also update the deprecation warning text to indicate that it's now a no-op (but still deprecated)?

Yeah, let me do:
- Make chromestatus entry for "make /deep/ behave like the descendant combinator"
- Update deprecation warning text: "/deep/ is deprecated. /deep/ will be a no-op in XXX". Then, "/deep/ is deprecated. /deep/ is now a no-op. Please remove /deep/ from the selector".

Hayato Ito

unread,
Mar 27, 2017, 10:41:45 PM3/27/17
to Rick Byers, Domenic Denicola, blink-dev
Let me clarity the intention because this "Intent to remove" are for both "/deep/" and "::shadow".

1. Regarding "::shadow"
We will remove it because the use counter is low enough.

2. Regarding "/deep/"
We will convert it to " " (descendant combinator), internally, to prevent possible page breakage.
I am aware that we might have an option to remove it completely together with "::shadow", but we are taking a safer approach here.
From the implementation's point of view, if we can remove the *functionality* of /deep/, that would be a huge win because we could get rid of the complexity of our style engine.

As of now, there is no concrete plan to remove '/deep/' completely, however, at least, we will eventually remove it when we remove Shadow DOM v0. Thus, /deep/ will not live forever. Its lifetime depends on Shadow DOM v0's lifetime.

Note that these plans are only for the dynamic profiles, however, we will remove '/deep/' from the static profile when we remove Shadow DOM v0 because '/deep/' does not make sense without Shadow DOM v0.

TAMURA, Kent

unread,
Mar 27, 2017, 11:09:09 PM3/27/17
to Hayato Ito, Rick Byers, Domenic Denicola, blink-dev
LGTM2.

--
TAMURA Kent
Software Engineer, Google


Chris Harrelson

unread,
Mar 27, 2017, 11:36:02 PM3/27/17
to TAMURA, Kent, Hayato Ito, Rick Byers, Domenic Denicola, blink-dev
LGTM3

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

PhistucK

unread,
Mar 31, 2017, 5:46:12 AM3/31/17
to Chris Harrelson, TAMURA, Kent, Hayato Ito, Rick Byers, Domenic Denicola, blink-dev
Can you file an internal bug for Google Translate Community?

community:379 /deep/ combinator is deprecated. See https://www.chromestatus.com/features/6750456638341120 for more details.

​Thank you!

PhistucK

Hayato Ito

unread,
Apr 2, 2017, 11:25:45 PM4/2/17
to PhistucK, Chris Harrelson, TAMURA, Kent, Rick Byers, Domenic Denicola, blink-dev
I've sent a feedback there.

LGTM3

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

mauric...@gmail.com

unread,
Apr 4, 2017, 10:09:21 PM4/4/17
to blink-dev, phis...@gmail.com, chri...@chromium.org, tk...@chromium.org, rby...@chromium.org, d...@domenic.me
This change will affect the 'allow custom UI themes' devtools experiment feature. Are there any alternative plans to support that?

PhistucK

unread,
Apr 5, 2017, 1:07:46 AM4/5/17
to mauric...@gmail.com, blink-dev, Chris Harrelson, TAMURA, Kent, Rick Byers, Domenic Denicola
I guess The Developer Tools team will need to re-implement the support using CSS custom properties and all of the current theme extensions will have to adapt.

You can search crbug.com for an existing issue and star it. If you cannot find one, file a new issue using the "New issue" link on the same page.
Please, do not add a "+1" or "Me too" or "Confirmed" (or similar) comment. It just wastes the time of Chrome engineers and sends unnecessary e-mails to all of the people who starred the issue.

You can reply with a link to the found or created issue and might get triaged (and fixed) faster.

Thank you.



PhistucK

PhistucK

unread,
Apr 18, 2017, 6:46:17 AM4/18/17
to Hayato Ito, blink-dev, TAMURA, Kent, Rick Byers, Domenic Denicola
Can you file an internal bug with the new Google Earth (preferably, for all of the deprecation warnings and not just for /deep/ :()?

(Off topic rant - not really web based. Only works in browsers that support the Portable Native Client)

/deep/ combinator is deprecated. See https://www.chromestatus.com/features/6750456638341120 for more details.
app.js:4009 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead.
app.js:188 ::shadow pseudo-element is deprecated. See https://www.chromestatus.com/features/6750456638341120 for more details.
splashscreen.js:906 This file is deprecated. Please use `iron-flex-layout/iron-flex-layout-classes.html`, and one of the specific dom-modules instead
(anonymous) @ splashscreen.js:906
splashscreen.js:954 This file is deprecated. Please use `iron-flex-layout/iron-flex-layout-classes.html`, and one of the specific dom-modules instead
(anonymous) @ splashscreen.js:954

Thank you!


PhistucK

Hayato Ito

unread,
Apr 18, 2017, 8:37:39 PM4/18/17
to PhistucK, blink-dev, TAMURA, Kent, Rick Byers, Domenic Denicola
Thanks. Done.

I appreciate if you could avoid to use this "Intent to Remove" thread to ask me to file an internal bug :)

I think Blink developers can't be responsible for filling all internal bugs, and don't want be blamed; "You have filed an internal bug for XXX Google property, but you have not filed a bug for YYY Google property! You are lazy!".

This "Intent to Remove" thread and removal timeline warning messages in console would be our official process, basically, as far as I know.
Of course, there is an exception and we should judge case by case. If we find that the official process is not enough, I am afraid that something is wrong in our official process.


nina...@google.com

unread,
Jul 28, 2017, 1:40:50 PM7/28/17
to blink-dev
Can you clarify what "Thus, aliasing /deep/ to " " is an effective strategy for reducing page breakage." means?

I have confirmed that our /deep/ selectors are broken in google-chrome-unstable (61.0.3163.13), so I'm not sure I understand what "reduce page breakage" means in this context.

PhistucK

unread,
Jul 28, 2017, 4:42:37 PM7/28/17
to Hayato Ito, blink-dev, TAMURA, Kent, Rick Byers, Domenic Denicola
Sure. But - should I contact anyone directly instead? Should I post a new thread for that? Should I just keep it to myself?

(Using the various "Send feedback" links in the respective products would not really get me anywhere, I have been told by a Googler that, unfortunately, they are mostly ignored)

And you can always mention in the internal issue that the report came from a user ("I did not find it, the report came from a user") and thus waive the responsibility.

And yes, the official process does not work (but there is not much that can be done). It is a known fact that the vast majority of the (web? :P) developers ignore (deprecation or otherwise) warnings until it is too late and their application is broken.
I just think they would appreciate the application-specific heads-up (it does not guarantee that they would act on it, but, an issue is at least more than "just" another console warning).


PhistucK

Дмитрий Гончаренко

unread,
Jul 29, 2017, 1:47:08 AM7/29/17
to PhistucK, Domenic Denicola, TAMURA, Kent, Rick Byers, Hayato Ito, blink-dev

28 июля 2017 г. 23:42 пользователь "PhistucK" <phis...@gmail.com> написал:
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CABc02_LS2x6h0X5Z-HKTqxHq_JNFcszriD69bwc2hbAvyrsKyw%40mail.gmail.com.

Hayato Ito

unread,
Jul 30, 2017, 11:26:33 PM7/30/17
to PhistucK, blink-dev, TAMURA, Kent, Rick Byers, Domenic Denicola
On Sat, Jul 29, 2017 at 5:42 AM PhistucK <phis...@gmail.com> wrote:
Sure. But - should I contact anyone directly instead? Should I post a new thread for that? Should I just keep it to myself?
 
(Using the various "Send feedback" links in the respective products would not really get me anywhere, I have been told by a Googler that, unfortunately, they are mostly ignored)


Thank you for the feedback. That sounds more general issue which cann't be resolved in blink-dev. You might want to start a new thread.
 
And you can always mention in the internal issue that the report came from a user ("I did not find it, the report came from a user") and thus waive the responsibility.

And yes, the official process does not work (but there is not much that can be done). It is a known fact that the vast majority of the (web? :P) developers ignore (deprecation or otherwise) warnings until it is too late and their application is broken.
I just think they would appreciate the application-specific heads-up (it does not guarantee that they would act on it, but, an issue is at least more than "just" another console warning).

We should consider it seriously if our official process doesn't work. That is worth starting a new thread so that how we can change our official process. We don't want users to ignore our warnings.

Nina Chen

unread,
Jul 31, 2017, 1:39:50 PM7/31/17
to Hayato Ito, PhistucK, blink-dev, TAMURA, Kent, Rick Byers, Domenic Denicola
Can you clarify what "Thus, aliasing /deep/ to " " is an effective strategy for reducing page breakage." means?
I have confirmed that our /deep/ selectors are broken in google-chrome-unstable (61.0.3163.13), so I'm not sure I understand what "reduce page breakage" means in this context.

Can you confirm whether this breakage is expected? And the effects we are seeing are severe and far-reaching: is it a known tradeoff that applications could see substantial breakages due to this change?

Is it a possibility to delay this change?

I'm also curious how is the /deep/ usage graph (https://www.chromestatus.com/metrics/feature/timeline/popularity/471) generated?
The huge spike in Fall of 2015 is unusual, which makes me wonder if there is a data error.

--
You received this message because you are subscribed to a topic in the Google Groups "blink-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/a/chromium.org/d/topic/blink-dev/HX5Y8Ykr5Ns/unsubscribe.
To unsubscribe from this group and all its topics, send an email to blink-dev+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFpjS_26364JdWwsOc6zmdHg_n-GwtcEZUVXrXVsdG2wYBMh%3Dg%40mail.gmail.com.

Hayato Ito

unread,
Jul 31, 2017, 11:14:45 PM7/31/17
to Nina Chen, PhistucK, blink-dev, TAMURA, Kent, Rick Byers, Domenic Denicola
On Tue, Aug 1, 2017 at 2:39 AM Nina Chen <nina...@google.com> wrote:
Can you clarify what "Thus, aliasing /deep/ to " " is an effective strategy for reducing page breakage." means?
I have confirmed that our /deep/ selectors are broken in google-chrome-unstable (61.0.3163.13), so I'm not sure I understand what "reduce page breakage" means in this context.

Can you confirm whether this breakage is expected? And the effects we are seeing are severe and far-reaching: is it a known tradeoff that applications could see substantial breakages due to this change?


Could you have a chance to take a look at the discussion at?
I think that explains well.


Is it a possibility to delay this change?
 
I'm also curious how is the /deep/ usage graph (https://www.chromestatus.com/metrics/feature/timeline/popularity/471) generated?
The huge spike in Fall of 2015 is unusual, which makes me wonder if there is a data error.


Yeah, I guess there was a data error.
 
To unsubscribe from this group and all its topics, send an email to blink-dev+...@chromium.org.

fbaiexecut...@gmail.com

unread,
Aug 29, 2017, 10:44:15 PM8/29/17
to blink-dev
/deep/ combinator is no longer supported in CSS dynamic profile. It is now effectively no-op, acting as if it were a descendant combinator. You should consider to remove it. See https://www.chromestatus.com/features/4964279606312960 for more details.

so is this something that we should fix or will it be fixed? I don't really understand anything of no longer supported by css and is no-op, I know it's coding but that's all, I was only in console because I tried to get the new youtube future trough a code until I found the link again. Maybe that was a mistake, I don't know.

PhistucK

unread,
Aug 30, 2017, 12:30:00 AM8/30/17
to fbaiexecut...@gmail.com, blink-dev
The console is only meant for web developers or authors of that site. If you are not one, or if you are but the console does not show it on your website without YouTube, you can safely ignore it, or report it to the website in order to remind them to take action as a nice web citizen. :)


PhistucK

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/2949900d-055e-4b06-9d33-800a27c0ca37%40chromium.org.

FBA

unread,
Aug 30, 2017, 7:50:49 PM8/30/17
to PhistucK, blink-dev
Ok, thanks for the clarification. 

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

Mattie Kenny

unread,
Oct 2, 2019, 12:23:02 PM10/2/19
to blink-dev
So is this saying we should instead be using `>>>` instead of `/deep/`. What is the alternative approach? All of the messages in this thread and the bug ticket just have quotes surrounding a space. It's pretty unhelpful.

Mason Freed

unread,
Oct 2, 2019, 4:48:43 PM10/2/19
to Mattie Kenny, blink-dev
All three of :shadow, >>>, and /deep/ are no longer supported for Shadow DOM v0. Much more importantly, the v0 APIs themselves are going to be removed from Chrome in just a few more months. Please see this post for more information on how to migrate to v1 Shadow DOM.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
Reply all
Reply to author
Forward
0 new messages