Contact emails
hark...@chromium.org, owe...@chromium.org, pe...@chromium.org
Spec
https://wicg.github.io/budget-api/
https://github.com/WICG/budget-api#web-budget-api
Summary
The Budget API grants developers a budget, based on Site Engagement Score, that can be spent on certain background operations such as receiving push messages without showing notifications. (Which will continue to require the user’s permission.)
The reserve() method decisively tells a developer whether they are able to do, or not do something. For Push Notifications, it enables them to verify whether a notification has to be shown when receiving a push message.
This should help to significantly drive down the number of generic “we have an update for you” notifications that websites show as a final effort when the contents for the Push Notification cannot be determined, for example because of poor networking conditions.
Link to “Intent to Implement” blink-dev discussion
https://groups.google.com/a/chromium.org/d/topic/blink-dev/I3FhKqtui_k/discussion
Is this feature supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
All but Android WebView. This is because the Budget API is tightly coupled with the Site Engagement Score, which is only available in the //chrome layer. (Having many dependencies.)
Interoperability and Compatibility Risk
Whereas we’ve proposed to experiment with the rest of the Budget API, we’d like to ship this immediately.
The method adds a cheap, clear way for sites employing Push Notifications to improve their user experience, by not showing low value notifications when they don’t have to. Given that there are many high traffic websites that use Push Notifications, this will bring significant improvements to users.
The exposed method is very simple and returns a Promise that indicates whether budget could be reserved or not. In a situation where we’d have to move away from this method we can safely always make it return `false`.
Edge: No public signals
Firefox: No public signals
Safari: No public signals
Web developers: Positive
OWP launch tracking bug
https://bugs.chromium.org/p/chromium/issues/detail?id=704725
Entry on the feature dashboard
https://www.chromestatus.com/feature/5691190548627456OWP launch tracking bug
https://bugs.chromium.org/p/chromium/issues/detail?id=704725
Entry on the feature dashboard
https://www.chromestatus.com/feature/5691190548627456
--
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.
Is this feature fully tested by web-platform-tests?
Please link to the test suite. If any part of the feature is not tested by web-platform-tests, please include links to issues, e.g.:
A web-platform-tests issue with the "infra" label explaining why a certain thing cannot be tested. (example)
A spec issue for some change that would make it possible to test. (example)
A Chromium issue to upstream some existing tests. (example)
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
My guess is that the largest risk is that not all implementation have an internal notion of per-origin background budget, and thus don't have the underpinnings for this API. There is positive feedback from Gecko, have you prodded WebKit and Edge folks for reactions?
A recent addition to the Intent to Ship template is this section:Is this feature fully tested by web-platform-tests?
Please link to the test suite. If any part of the feature is not tested by web-platform-tests, please include links to issues, e.g.:
Such issues are not blocking in an Intent to Ship.
A web-platform-tests issue with the "infra" label explaining why a certain thing cannot be tested. (example)
A spec issue for some change that would make it possible to test. (example)
A Chromium issue to upstream some existing tests. (example)
This looks to me like an API that falls into the first category and cannot be tested without test automation APIs (WebDriver or internal), but can you file the appropriate issues?
P.S. I noticed a trivial mismatch between spec and implementation that would be good to fix spec-side:
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
Hi Philip,See in-line.On Mon, Apr 10, 2017 at 2:05 PM, Philip Jägenstedt <foo...@chromium.org> wrote:My guess is that the largest risk is that not all implementation have an internal notion of per-origin background budget, and thus don't have the underpinnings for this API. There is positive feedback from Gecko, have you prodded WebKit and Edge folks for reactions?We've designed the API to be flexible for a variety of backends. We've also asked the other vendors for more data, but have nothing we can publicly share I'm afraid.
A recent addition to the Intent to Ship template is this section:Is this feature fully tested by web-platform-tests?
Please link to the test suite. If any part of the feature is not tested by web-platform-tests, please include links to issues, e.g.:
Such issues are not blocking in an Intent to Ship.
A web-platform-tests issue with the "infra" label explaining why a certain thing cannot be tested. (example)
A spec issue for some change that would make it possible to test. (example)
A Chromium issue to upstream some existing tests. (example)
This looks to me like an API that falls into the first category and cannot be tested without test automation APIs (WebDriver or internal), but can you file the appropriate issues?Yes, indeed. However, as the Budget API in itself is a generalisation, any testing infrastructure would be very targeted towards supporting the ability to test this speciifc API. Is the intention for the web-platform-tests issue tracker to track such cases too?
I wonder whether shipping reserve() is the right call before the other methods are ready.
The developer feedback you pointed to asks for silent push notifications, not for the budget API's reserve method in particular, right?
Have you reached out to the privacy team about this API in general? Won't we essentially expose an API for a site to query its own site engagement score (which you could consider cookie-like?)On Wed, Apr 12, 2017 at 8:52 AM Philip Jägenstedt <foo...@chromium.org> wrote:On Wed, Apr 12, 2017 at 7:27 AM Peter Beverloo <pe...@chromium.org> wrote:Hi Philip,See in-line.On Mon, Apr 10, 2017 at 2:05 PM, Philip Jägenstedt <foo...@chromium.org> wrote:My guess is that the largest risk is that not all implementation have an internal notion of per-origin background budget, and thus don't have the underpinnings for this API. There is positive feedback from Gecko, have you prodded WebKit and Edge folks for reactions?We've designed the API to be flexible for a variety of backends. We've also asked the other vendors for more data, but have nothing we can publicly share I'm afraid.This intent is about navigator.budget.reserve(), but I'll now ask a bit about the Budget API as a whole, as I think we cannot consider it completely independently. (Shipping only reserve() in the long term would be somewhat odd.)Can you file an issue at https://github.com/w3ctag/spec-reviews/issues so that TAG review is complete before Intent to Ship for the Budget API as a whole?BackgroundOperationComparison.md is good document, showing that iOS has some model for background execution. However, from a superficial reading it doesn't take the shape of a single budget that an app can spend. Rather, it seems to be a per-feature thing. For the generic background task, it sounds like there's a time limit. For downloads, it sounds like starting it in the foreground is the requirement, making it more like the web's user gesture requirements for some APIs.The Budget API is explicitly based on user engagement, which is still a fairly new thing in Chrome and I don't know if it exists in Edge and Safari. The interop risks are then roughly:
- Other vendors don't have a per-origin budget, concept and don't feel they need it to provide a compelling user experience.
- A per-origin budget may not map to how the underlying OS grants permission for various background operations.
Doubts like these aren't actionable, feedback from EdgeHTML and WebKit engineers would be much better. Did you poke them in a public forum? Doing that, also poking via private channels, and then giving them a week would be reasonable I think. Would it be a problem if this misses the M59 branch point?Other API owners, please weigh in here.
On Wed, Apr 12, 2017 at 3:29 AM, Jochen Eisinger <joc...@chromium.org> wrote:I wonder whether shipping reserve() is the right call before the other methods are ready.IMHO there's a lot of details here to work out that ideally we wouldn't feel too rushed on. Personally I think the interop risk is lower by shipping reserve now and waiting for more consensus between engines on the other aspects of the API, then if we tried to ship a larger chunk of the API sooner.If the main urgency we're feeling for budget can be addressed by 'reserve', I'd personally rather ship the minimal thing for that first and iterate from there. Worst case and the budget model changes, reserve is so simple that it probably still makes sense (and worst case is just confusingly named). This seems like the sort of "ship the MVP and iterate" model we (especially slightlyoff@) have encouraged elsewhere.
The developer feedback you pointed to asks for silent push notifications, not for the budget API's reserve method in particular, right?Budget.reserve is all that's necessary to enable silent-push, right? So I think feedback requesting to know whether Chrome would show the scary default notification or not does represent demand for this API.
Have you reached out to the privacy team about this API in general? Won't we essentially expose an API for a site to query its own site engagement score (which you could consider cookie-like?)
On Wed, Apr 12, 2017 at 8:52 AM Philip Jägenstedt <foo...@chromium.org> wrote:On Wed, Apr 12, 2017 at 7:27 AM Peter Beverloo <pe...@chromium.org> wrote:Hi Philip,See in-line.On Mon, Apr 10, 2017 at 2:05 PM, Philip Jägenstedt <foo...@chromium.org> wrote:My guess is that the largest risk is that not all implementation have an internal notion of per-origin background budget, and thus don't have the underpinnings for this API. There is positive feedback from Gecko, have you prodded WebKit and Edge folks for reactions?We've designed the API to be flexible for a variety of backends. We've also asked the other vendors for more data, but have nothing we can publicly share I'm afraid.This intent is about navigator.budget.reserve(), but I'll now ask a bit about the Budget API as a whole, as I think we cannot consider it completely independently. (Shipping only reserve() in the long term would be somewhat odd.)Can you file an issue at https://github.com/w3ctag/spec-reviews/issues so that TAG review is complete before Intent to Ship for the Budget API as a whole?BackgroundOperationComparison.md is good document, showing that iOS has some model for background execution. However, from a superficial reading it doesn't take the shape of a single budget that an app can spend. Rather, it seems to be a per-feature thing. For the generic background task, it sounds like there's a time limit. For downloads, it sounds like starting it in the foreground is the requirement, making it more like the web's user gesture requirements for some APIs.The Budget API is explicitly based on user engagement, which is still a fairly new thing in Chrome and I don't know if it exists in Edge and Safari. The interop risks are then roughly:
- Other vendors don't have a per-origin budget, concept and don't feel they need it to provide a compelling user experience.
- A per-origin budget may not map to how the underlying OS grants permission for various background operations.
Doubts like these aren't actionable, feedback from EdgeHTML and WebKit engineers would be much better. Did you poke them in a public forum? Doing that, also poking via private channels, and then giving them a week would be reasonable I think. Would it be a problem if this misses the M59 branch point?Other API owners, please weigh in here.I think reaching out in some way (public or private) to ask someone from each of the other engines to weigh in on the public discussion and waiting a week is our typical min-bar for something like this, right? Peter, have you asked for feedback in any form from WebKit and EdgeHTML?
On Wed, Apr 12, 2017 at 3:29 AM, Jochen Eisinger <joc...@chromium.org> wrote:I wonder whether shipping reserve() is the right call before the other methods are ready.IMHO there's a lot of details here to work out that ideally we wouldn't feel too rushed on. Personally I think the interop risk is lower by shipping reserve now and waiting for more consensus between engines on the other aspects of the API, then if we tried to ship a larger chunk of the API sooner.If the main urgency we're feeling for budget can be addressed by 'reserve', I'd personally rather ship the minimal thing for that first and iterate from there. Worst case and the budget model changes, reserve is so simple that it probably still makes sense (and worst case is just confusingly named). This seems like the sort of "ship the MVP and iterate" model we (especially slightlyoff@) have encouraged elsewhere.
I think reaching out in some way (public or private) to ask someone from each of the other engines to weigh in on the public discussion and waiting a week is our typical min-bar for something like this, right? Peter, have you asked for feedback in any form from WebKit and EdgeHTML?