#910: Web Printing API

Visit on Github.

Opened Oct 19, 2023

こんにちは TAG-さん!

I'm requesting an early TAG review of the Web Printing API.

This API enables deeper integration with printer-related functionality in web applications by providing a set of JavaScript methods that allow developers to query local printers, submit print jobs to the most appropriate printers, and manage print job options and status directly from web applications. To represent these concepts, it relies on the attribute names and semantics from the Internet Printing Protocol (IPP) specifications.

  • Explainer¹ (minimally containing user needs and example code): Explainer
  • User research: N/A
  • Security and Privacy self-review²: Questionnaire
  • GitHub repo (if you prefer feedback filed there): GitHub repo
  • Primary contacts (and their relationship to the specification):
  • Organization/project driving the design: Google
  • External status/issue trackers for this feature: Chrome Status

Further details:

  • I have reviewed the TAG's Web Platform Design Principles
  • The group where the incubation/design work on this is being done (or is intended to be done in the future): WICG
  • The group where standardization of this work is intended to be done ("unknown" if not known): unknown
  • Existing major pieces of multi-stakeholder review or discussion of this design: N/A
  • Major unresolved issues with or opposition to this design: N/A
  • This work is being funded by: Google

You should also know that...

There's a demand for this API from VDI providers (Citrix & VMWare).

We'd prefer the TAG provide feedback as (please delete all but the desired option):

💬 leave review feedback as a comment in this issue and @-notify GrapeGreen@

Discussions

2023-11-13

Minutes

Hadley: lots of concerns about this. it's a thorougly written explainer including a good security & privacy section explaining about the fingerprinting risk. Mitigiation listed to put it behind a permission prompt. Proposal to not allow the user to choose the printer.

Peter: I can see the app wanting to filter down a list of printers... but ... i agree.

Hadley: my biggest concern is that it feels like the same discussion we've had with access to files & directories and the OS - crossing the line between what is the web and what isn't the web. Authors say it's based on internet printing protocol... I'm concerned that this is sacificing a lot of security / privacy for a slightly smoother user experience.

Peter: I share your concerns... It looks like the main motivating use case is for remote desktop applications, like Citrix... I'm sitting at home on my mac, i'm remote piloting a windows machine.. and i want to print to my local printer... not sure how that would work...

Torgo: this seems similar to Borderless mode, which was all about remote driving someone else's application, or a different computer, but instead of viewing the whole screen, but every single window is cast to you in a different browser window, which would be borderless.

...It was a conflation between the web and virtual desktop kind of thing.

...We said it shouldn't be standardised in its current form.

Peter: it's a really narrow use case to be adding a feature to the browser, especialy one with such big risks. Feels like this should be handled with a browser plug-in

Hadley: seconded.

...Also, no standardisation pathway for this, and no multi-stakeholder buy-in or collaboration.

Lea: I'm missing the discusion on the use cases. Remote printing is the main one.

Peter: that's the only one. Says "we acknolwedge there might be other use cases", which sounds like they don't know of any either.

...At A higher level... you're taking capabilities of the client's environment and handing them off to the server.

...I can see the utility with things other than printing, but it's really dangerous.

Lea: Yes, it doesn't see like the problems/pain points are worth the risks. Opens a significant vector and the pain point is niche

Peter: the workaround is that you print to pdf and then print locally. It's not like there's no way to do this.

Hadley: the price for this is too high

<blockquote>

Hi @GrapeGreen. We are looking at this in our W3C TAG breakout session today.

We have a lot of concerns about this, and don't think it should be added to the web platform in its current form.

The web has always been separate from the operating system, and implementing this proposal would take capabilities of the client's environment and hand them off to the server. Not only does this pose a large privacy risk, some of which you've outlined in your explainer, but it also moves the boundary of where the web ends and the user/client's environment takes over.

But most importantly, the use case seems rather niche, so the privacy risk is not balanced by a comensurate gain in user experience. Therefore, we are not convinced that the trade-off is worth it. We wondered if this might be better tackled with a browser plug-in.

We are proposing to close this review issue. You are welcome to come back to us with questions, or with a substantial re-architecture.

</blockquote>