LGTM2 to expand support for desktop.

On Tue, Aug 30, 2022 at 8:53 AM TAMURA, Kent <tk...@chromium.org> wrote:

> LGTM1.
> It's pretty safe to expand support to desktop platforms, and it
> seems there are no negative signals.
>
> On Thu, Aug 18, 2022 at 4:07 PM 'Angel Raposo' via blink-dev <
> blink-dev@chromium.org> wrote:
>
>> Contact emails
>>
>> toyos...@chromium.org, angelrapo...@google.com
>>
>> Explainer
>>
>> This I2S aims to expand our efforts on Prerender2 (currently shipped only
>> on Android) to Desktop.
>>
>> The full prerendering revamped explainer can be found at
>>
>> https://github.com/WICG/nav-speculation/blob/main/README.md
>>
>> Specification
>>
>> https://wicg.github.io/nav-speculation/prerendering.html
>>
>> Design docs
>>
>>
>> https://docs.google.com/document/d/1EpLshvc9RRW3vswmXsJGrbCkhlFmxDsWfbvgxmYDTfs
>>
>> Summary
>>
>> Prerendering is “pre”-rendering, it’s about pre-loading and rendering a
>> Web page before the user actually navigates to it. The main goal of
>> prerendering is to make the next page navigation faster, or ideally nearly
>> instant.
>>
>> Sites can inform the user agent about which pages the user may likely
>> visit, by asking to trigger a ‘prerendering’ for a particular URL (e.g.
>> user is at page A and will likely navigate to page B next). Once the
>> prerender is triggered, the browser pre-fetches the main resource,
>> instantiates a hidden page, and processes the main resource to fetch and
>> process more subresources.
>>
>> After shipping Prerender2 for Android (I2S speculation rules triggered
>> Prerender2
>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/EdW7O8yG7Jc/m/ypgp7pIjBAAJ?utm_medium=email&utm_source=footer>
>> and I2S for Omnibox triggered Prerender2
>> <https://groups.google.com/a/chromium.org/g/blink-dev/c/ogegRwcRlcs/m/Aso1a0UcBgAJ>),
>> we are now requesting approval to ship Prerender2 for Desktop. This release
>> will enable the same triggers (speculation rules and Omnibox) for Desktop.
>>
>> With this feature, Chrome (Desktop) will start prerendering
>> high-confidence URL suggestions provided by the page using speculation
>> rules or directly by Omnibox. During the prerendering process, a page will
>> process and construct the full DOM tree, including the execution of scripts
>> (this differs from No-state Prefetch
>> <https://developers.google.com/web/updates/2018/07/nostate-prefetch>
>> which only prefetches resources and doesn’t execute scripts).
>>
>> Note that we are not shipping cross-origin prerendering, which allows a
>> web page to prerender another page on a different origin.
>>
>>
>> Blink component
>>
>> Internals>Preload>Prerender
>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3EPreload%3EPrerender>
>>
>> TAG review
>>
>> https://github.com/w3ctag/design-reviews/issues/667
>>
>> TAG review status
>>
>> All issues have been addressed.
>>
>> Risks
>>
>>
>> Interoperability and Compatibility
>>
>> Interoperability risk: this feature is focused on enabling Prerender on
>> Desktop, which is already launched and available for Android.
>>
>> We believe that some browsers already have prerendering implementations
>> which are not specified and may differ from each other, or not always
>> exposed to the platform. Our vision is to produce a specification that can
>> help improve interoperability. There is a risk that other browsers do not
>> converge on a prerendering standard but we hope that we’ll be able to
>> address legitimate concerns if any are raised by interested parties.
>>
>> Compatibility risk: this feature is focused on enabling Prerender on
>> Desktop, which is already launched and available for Android. There are
>> some use cases that will need to know whether a page is being prerendered
>> by the user agent or navigated by the user, e.g. ads and analytics are
>> likely examples of this which are supported by already launched features
>> such as `document.prerendering` which lets a page know that it’s being
>> prerendered.
>>
>> Chrome Extensions have abilities to interact with web contents and have
>> widely used API surfaces. We’ve been keeping in mind compatibility with
>> Extensions’ compatibility, including giving enough capability for
>> Extensions to properly support Prerender2 [1].
>>
>> A similar concern applies to (P)NaCl/PPAPI. However, these plugins are on
>> a deprecation path. In the meantime, given that NaCl permits the page to
>> perform powerful operations, we are taking the safe route by canceling
>> prerendering if it triggers  a request to load a NaCl module.
>>
>> [1]
>> https://docs.google.com/document/d/1EpLshvc9RRW3vswmXsJGrbCkhlFmxDsWfbvgxmYDTfs/edit
>>
>>
>> Gecko: When we launched Prerender2 for Android, we had some informal
>> positive discussion with Gecko engineers on the HTML Standard issue
>> tracker
>> <https://github.com/whatwg/html/issues/7533#issuecomment-1022051187> and in
>> the HTML triage call
>> <https://github.com/whatwg/html/issues/7488#issuecomment-1029510684>;
>> formal positions request here:
>> https://github.com/mozilla/standards-positions/issues/613
>>
>>
>> WebKit: WebKit already ships URL-bar triggered prerendering, but not any
>> APIs for letting pages know about it, and it's unclear what strategy they
>> are using to prohibit disruptive behaviors for prerendered pages. When we
>> launched Prerender2 for Android, we reached out for a formal positions
>> request here in the hopes of moving toward interoperability:
>> https://lists.webkit.org/pipermail/webkit-dev/2022-February/032113.html
>>
>> Web developers: When we launched Prerender2 for Android, we received
>> positive feedback from initial web developers testing the speculation rules
>> triggers (see https://github.com/WICG/proposals/issues/2 for positive
>> sentiments on speculation rules triggered).
>>
>>
>> Other signals: When we launched Prerender2 for Android we created a
>> public request for feedback published (
>> https://web.dev/speculative-prerendering/#feedback-welcome) which is
>> currently being managed through:
>> https://github.com/WICG/nav-speculation/issues
>>
>>
>> Ergonomics
>>
>> This feature is triggered by the speculation rules API
>> <https://chromestatus.com/feature/5740655424831488> and Omnibox. We
>> don't anticipate any conflict with other Platform APIs.
>>
>> IT admins can disable Prerender2 via the existing group policy
>> "NetworkPredictionOptions"
>>
>> We are shipping the same web-exposed APIs previously launched on Android:
>> document.prerendering, prerenderingchange event and
>> performanceEntry.activationStart timing.
>>
>>
>> Activation
>>
>> There are two mechanisms to trigger a prerender:
>> (1) Speculation rules in which developers can immediately take advantage
>> of this feature by defining suggestions that the user agent will take into
>> consideration when deciding if a page is likely going to be browsed next.
>>
>> (2) Omnibox where the user agent decides if an URL should be prerendered
>> according to different heuristics.
>> Both of these triggers are already shipped for Android. With this
>> request, we want to allow Desktop to also trigger Prerender2 in the same
>> scenarios.
>>
>> The feature should just work for most existing pages but developers
>> should be aware of restrictions on prerendering content (they cannot play
>> audio or perform other disruptive behavior, etc.). As we grow our reach of
>> navigations by enabling the Desktop version, we will pay special attention
>> to the  documentation available to developers.
>>
>> We’ve also paid close  attention to extensions. We believe that
>> extensions shouldn’t be affected by this feature as the restricted features
>> are deferred behind a Promise resolution, and many extensions appear to
>> just work transparently.
>>
>> To report breakages in extensions developers have two options: they can
>> comment on the extensions related compatibility issue at
>> https://crbug.com/1351312, or they can discuss the desired API surface
>> in the mail group:
>> https://groups.google.com/a/chromium.org/g/chromium-extensions.
>>
>>
>>
>> Security
>>
>> We are scaling an already shipped feature in Android to cover Desktop.
>>
>> The speculation rules API was the first use of the Multiple-Page
>> Architecture, which is a significant change to Chromium's internals. Both
>> MPArch and the speculation rules API underwent significant security review. 
>> From
>> a web-exposed perspective, the security and privacy concerns are smaller,
>> because this feature is restricted to the same-origin case only. WebView
>> application risks
>>
>> Prerendering is not supported on WebView and doesn’t deprecate or change
>> behavior of existing APIs directly.
>>
>>
>>
>> Debuggability
>>
>> We are actively talking to the DevTools team about adding general
>> Prerender support to it [metabug
>> <https://bugs.chromium.org/p/chromium/issues/detail?id=1217029>] with a
>> current focus in providing meaningful debugging messages.
>> The current MVP is to reveal the status of prerendered pages so web
>> developers can know if prerendering succeeded or not.
>>
>> See [this document
>> <https://docs.google.com/document/d/1YEAfcuBjwlJn7GG6po8AFteObG15r9ro63fdFfcMvoI/edit>]
>> for our longer-term plan for improving the experience of debugging
>> prerendering with DevTools.
>>
>> Prerendered pages are also visible in chrome://process-internals.
>>
>>
>>
>> Will this feature be supported on all six Blink platforms (Windows, Mac,
>> Linux, Chrome OS, Android, and Android WebView)?
>>
>> No. Prerender2 was originally shipped on Android. This Intent expands it
>> to cover Windows, Mac, Linux, and Chrome OS. It remains disabled on Android
>> WebView.
>>
>>
>> Is this feature fully tested by web-platform-tests
>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>> ?
>>
>> We have written a lot of web platform tests using speculation rules as
>> the trigger:
>>
>>
>> https://wpt.fyi/results/speculation-rules/prerender?label=experimental&label=master&aligned
>>
>> Flag name
>>
>> Prerender2
>>
>> Requires code in //chrome?
>>
>> True
>>
>> Tracking bug
>>
>> https://crbug.com/1278141
>>
>> Launch bug
>>
>> https://crbug.com/1332400
>>
>> Estimated milestones
>>
>> DevTrial on desktop
>>
>> 105
>>
>> DevTrial on Android
>>
>> Already shipped on 103
>>
>>
>> Anticipated spec changes
>>
>> With this I2S we are aiming to scale already shipped APIs to Desktop.
>>
>> When we shipped the speculation rules, we reviewed all the current
>> pending discussions
>> <https://docs.google.com/document/d/1eFY7RMoeG7Mdhon9yLs6hKSfi6DYrASBPM-31hWXPDg/edit>
>> and all of them were resolved with the initial launch without causing
>> compatibility issues.
>>
>>
>> Link to entry on the Chrome Platform Status
>>
>> https://chromestatus.com/feature/5197044678393856
>>
>> Links to previous Intent discussions
>>
>> Intent to prototype:
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFWCB1n7W-gfr9b8FTNtB1bNDnYJ_%3DkSfWiY%2BtfGyqjuXe52zA%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFWCB1n7W-gfr9b8FTNtB1bNDnYJ_=ksfwiy+tfgyqjuxe5...@mail.gmail.com>
>>
>>
>> This intent message was generated by Chrome Platform Status
>> <https://chromestatus.com/>.
>>
>>
>> --
>> Angel Raposo  |  Engagement Manager  |  angelrap...@google.com  |
>>  Google Japan G.K.
>>
>>
>> This email may be confidential or privileged.  If you received this
>> communication by mistake, please don't forward it to anyone else, please
>> erase all copies and attachments, and please let me know that it went to
>> the wrong person.  Thanks.
>>
>> The above terms reflect a potential business arrangement, are provided
>> solely as a basis for further discussion, and are not intended to be and do
>> not constitute a legally binding obligation.  No legally binding
>> obligations will be created, implied, or inferred until an agreement in
>> final form is executed in writing by all parties involved.
>>
>>
>> もし、このメッセージが誤って貴殿に送信されたと思われる場合には、機密情報を含んでいる可能性もありますので、どなたにも転送せず、添付ファイルも含めて削除していただくとともに、発信者にその旨をお伝えいただきますようお願いいたします。
>>
>> --
>> 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+unsubscr...@chromium.org.
>> To view this discussion on the web visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA9vRHy7_o1ftcTz2-pC5rOPtZRhas5PGLw4HJ--v%2Bewkvcoww%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAA9vRHy7_o1ftcTz2-pC5rOPtZRhas5PGLw4HJ--v%2Bewkvcoww%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>
> --
> TAMURA Kent
> Software Engineer, Google
>
>
> --
> 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+unsubscr...@chromium.org.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGH7WqGfDVX7aWqdHt9skKSsnZcvvGHa9F6ZWshvGnVDJ24EAQ%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGH7WqGfDVX7aWqdHt9skKSsnZcvvGHa9F6ZWshvGnVDJ24EAQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfUr2bVZHm-GCy0Eh18rXY4HcZ0yv2EEsT_S1o7ORm%2BCtg%40mail.gmail.com.

Reply via email to