freedomofpress / securedrop-workstation

Qubes-based SecureDrop Journalist Workstation environment for submission handling
GNU Affero General Public License v3.0
138 stars 43 forks source link

Create proof-of-concept print workflow #267

Closed eloquence closed 4 years ago

eloquence commented 5 years ago

As of #259, we now have a basic workflow for exporting documents to an encrypted USB volume. Significant work remains: UI design, client integration, better error state reporting (#264), VeraCrypt support (#265).

Separately, we also want to support printing documents. Ideally, the initial implementation would provide a similar guarded workflow, e.g.:

As we did with USB export, let's start with an initial CLI-only implementation spike to discover challenges and limitations that will inform the final architecture and design.

eloquence commented 5 years ago

Open questions from my end:

eloquence commented 5 years ago

For 6/12-6/26 sprint, we've committed to a 16 person hour timebox. As with export, our main objective is to answer the most pressing questions about what's feasible and what isn't, to inform UI design and subsequent iterations.

Should non-USB printers be supported?

Per discussion today, the answer is almost certainly no; the preference will be for printers without wireless (if such a thing can still be found), and certainly for the printer to plugged in during usage.

Do we need to put in some hardware purchases for testing?

As discussed today, @emkll currently does not have a printer. Mickael, probably easiest for you to propose a printer that seems worth testing with, and then buy and expense it.

ninavizz commented 5 years ago

Also: printers must be laser, not inkjet. Super important, as inkjet media goes fast and is very expensive. Likewise, laser printers are just far quicker for large document outputs. Color is not a necessity, just black and white is fine. Xerox made a wax-media for their "Phaser" printer tech, for some time, and that may still exist—it'd be ok, too.

Brother and HP both feature "Wireless Printing" capabilities on most of their laser printers; which is not intended to integrate with a standard 802.11 wifi network, but some other way (that I have yet to muster the patience to figure out with my own devices).

Lexmark is a brand that's mostly been for offices, and as such may offer no-wireless-option laser printers. Ditto on Xerox.

eloquence commented 5 years ago

First round of open issues, questions & feedback from today's proof-of-concept review:

eloquence commented 5 years ago

For quick reference, this is the spreadsheet with the supported file types: https://docs.google.com/spreadsheets/d/1l-DGR5UnnvYA5jfeZtplER933ANPWgFLx_uWbnJZKWI/edit#gid=0

ninavizz commented 5 years ago

Random thought: HP printers have the broadest availability of off-brand/generic toner cartridges (which means you pay $30USD instead of $150USD, or can buy toner to refill cartridges, as an example), too. It'd be great to include at least one HP model in the 2nd or 3rd option.

Sorry, yes, I love my treeware. :)

ninavizz commented 5 years ago

Question for @emkll and @redshiftzero: I'm wondering why we couldn't use the Libre Office workflow for printing? It should have all the drivers/PPD support things built in, and if the printer automagically mounted/attached to the same disp-VM as LibreOffice, then queuing and other things could be managed by that VM, too.

I don't feel it's a bad experience to require users to open something before printing it, and in many ways that may be a more desirable flow. Especially since LibreOffice has solved so many other design problems, such as queuing and the "Print Options" dialog. I do expect users will likely wish to queue multiple print jobs, and the ability to manage that would be highly desirable.

I do have a lot of experience working with large/off-brand plotters via my art stuff with SRL.org, and trying to get them to work on Windows machines. Drivers, PPD things, and then that damn "Print Options" dialog, are deep/dark rabbitholes it'd be great to avoid. Even when I've documented things on cheat-sheets, it's still a shitty experience to always have to navigate—and one my fellow SRL artists too often just didn't feel up to navigating, and would ask me "Hey Nina, I know you could do in 5min what it'd take me 20min... cd u just do it for me?" Newsrooms currently experience that user bottleneck w/ how SD's current experience runs. I'm wary of entering that zone with how the workstation prints.

Finally, random additional thought: printers sold in other countries may likely have whole other PPD & driver needs, than the same model sold in the US, because of random regulatory things. One of the printers I work with the most at SRL is Japanese, and for specific reasons I cannot remember (other than the manual's English translation being awful) I also recall that presenting a major headache with driver/PPD stuff.

emkll commented 5 years ago

Question for @emkll and @redshiftzero: I'm wondering why we couldn't use the Libre Office workflow for printing? It should have all the drivers/PPD support things built in, and if the printer automagically mounted/attached to the same disp-VM as LibreOffice, then queuing and other things could be managed by that VM, too.

The initial proof of concept was mirroring the existing export to USB functionality, maybe too much so: even though both printing and sending to usb are considered "export flows", you make a good point that they do work quite differently.

Being able to use the contextual print menu in the disposable VM when a submission is displayed might be somewhat challenging:

Using the current (simple) approach of the sd-export-usb vm, connecting the printer to the specific DisposableVM that is displaying the file the user is currently viewing is challenging:

Another way this could be achieved (significant research required) is having a (network or qrexec) print server running in sd-export-usb, which:

Some drawbacks with that approach:

eloquence commented 5 years ago

Thanks for that additional background, @emkll! Nina, Allie and I discussed this a bit more today. We agree that being able to print directly from the disposable VM used for viewing files would be the ideal user experience. We think it's worth investigating whether this can be done in a secure manner, after the pilot.

It's worth noting that users will be exposed to essentially useless "Save as" and "Print" dialogs in applications launched in sd-svs-disp VMs. This is potentially a significant point of user confusion. It may be worth thinking about creative solutions to at least indicate to the user that this won't work; I will file a separate issue for that.

A couple more points:

ninavizz commented 5 years ago

...below, per discussion yesterday with @eloquence where he clarified/reminded me CUPS has been decided to be the spooling thingbob we'll be using for the Workstation.

CUPS Things

CUPS is the standards-based, open source printing system developed by Apple Inc. for macOS® and other UNIX®-like operating systems. CUPS uses the Internet Printing Protocol (IPP) to support printing to local and network printers.

emkll commented 4 years ago

closed via #277