Plan for Completion of the Common Printing Dialog
The case for a Common Printing Dialog
Printing out of desktop applications is done/managed by very many different dialogs, mostly depending on which GUI toolkit is used for an application. Some applications like OpenOffice.org have even their own dialogs. This is confusing users a lot, forcing them to do the printing operation in many different ways. In addition to having different printing dialog user interfaces, each dialog has its own selection of functionality. Fortunately at least most dialogs use CUPS to list the available printers and to send print jobs, but for example not all expose the printer-model- or driver-specific options and settings which are defined in the PPD file of the CUPS queue or only a part of them, others do not give access to options provided by CUPS, like 2 pages per sheet, reverse output order, ...
We want to these dialogs replace by one common dialog which is provided by the desktop environment. This way it is assured that all applications use the same, easy to use, and feature-complete printing dialog, so that if a user knows how to print out of application A he will also know how to print from application B.
For that a group of OpenUsability experts has designed a printing dialog with usability in mind. It has an integrated print preview, quick presets for commonly used printing tasks, possibility to save presets, dialog can be expanded to get access to individual options, options accessed through result-oriented tags, ...
We are also in contact with printer manufacturers and take into account their needs, for example for branding.
How to integrate the Common Printing Dialog?
For the integration of the dialog the most common desktop environments GNOME (based on the GTK user interface toolkit) and KDE (based on the Qt user interface toolkit) should provide the Common Printing Dialog as a D-Bus service. The applications simply connect to the dialog via D-Bus, sending print job parameters, application-specific options to be displayed and user-settable in the dialog, and the job data itself as a PDF file to open the dialog and to allow the user to print his document. The dialog always comes from the user's desktop, so he gets always the GNOME version if he uses GNOME, also if the application is a KDE application.
The GNOME and KDE projects and also Linux distributions principally like this approach, but they do not want to have to do much work for it. The GNOME and KDE projects simply want to have patches, they do not want to work on the implementation themselves. The distributions want to have the Common Printing Dialog coming in from the upstream GNOME and KDE projects to avoid maintaining big patches.
What is already done?
We have started back in 2006 on the OpenPrinting Summit in Atlanta where a team of OpenUsability experts met and started the design of the dialog. After that the design work continued and regular meetings have taken place on the yearly OpenPrinting Summit. Most of the design work past and current work is done by Peter Sikking and Kate Price from man + machine interface works and OpenUsability.
During the Google Summer of Code 2008 and 2009 each year two students (2008: Lars Uebernickel, Alexander Wauck, 2009: Per Hermansson, Alexander Wauck) worked for three months on the implementation of the dialog. With this we got a lot of code together but did not complete the implementation. In addition, Lars Uebernickel did further work funded by an organization of the German government.
Completed work items:
- Basic dialog design: Layout, look & feel, preview and animation of page advance, printer selection, presets, saving and accessing user presets, number of copies and collation, paper consumption display, expansion for individual options, showing/hiding individual options by selecting tags
- D-Bus interface to connect application and dialog: Completed
- PPD extensions to control the presentation of the options and settings, branding, internationalization, ...: Completed
- Implementation of the GTK/GNOME version of the dialog: Most of the above mentioned basic design is implemented, missing are the size and theming of the dialog, preview animations, look & feel of the option tag buttons, size and flow of the option widgets to fill up the space in the dialog.
- Implementation of the Qt/KDE version of the dialog: Basic dialog look & feel, theming, size, preview, part of the page advance animations, presets, number of copies and collation, paper consumption display, option tag buttons. Main missing part are the option widgets, preset saving, and animation of page advance for double-sided printing.
- Patching GTK to use the Common Printing Dialog: First steps to make the Common Printing Dialog appear instead od the original GTK dialog, passing over the document to be printed.
What is still to do?
- Design: detailed interaction design of widgets and user interface wording for common options in the 7 principal printer categories (personal laser, photo inkjet, ...). These are options like N pages per sheet, double-sided printing, media tray and type, ...
- Design: rework of of interaction design, as a result of the march round of usability testing. This includes work on the tagging representation and multiple copies + collate.
- Design: conduct user research for the tagging and propose tagging for the 7 principal printer categories.
- Design: usability testing of the above and fix issues.
- Design: work with the developers on the specific GTK/GNOME and Qt/KDE realisations of the dialog. Note that the UI design is GNOME/KDE agnostic.
- GTK/GNOME version of the dialog: Size and coloring of the dialog, preview animations, preview showing multiple pages per sheet, look & feel of the option tag buttons, size and flow of the option widgets to fill up the space in the dialog.
- Qt/KDE version of the dialog: Widgets for the different type of options: Numerical, string, password, multi-parameter, special widgets for common options, icon support, user preset saving and accessing, animation of page advance for double-sided printing.
- Patching GTK to use the Common Printing Dialog: Continuing where we left off, cover all ways how printing is triggered, make preview and actual printing work, ...
- Design: work with the teams of the GTK and Qt apps listed below on the user interaction aspects of integration of the printing dialog. Integration needs to be best-practice to set precedents for thousands of other applications.
- Patching GTK-based applications: Firefox, Thunderbird, GEdit, eog, f-spot, ... Special attention is also needed for application-specific options. The applications used in standard installations like a Ubuntu Desktop Live CD should be treated with priority.
- Patching Qt to use the Common Printing Dialog.
- Patching Qt apps: KOffice, digikam, Konqueror, ... Special attention is also needed for application-specific options. The applications used in standard installations like a Ubuntu Desktop Live CD should be treated with priority.
- Patch OpenOffice.org to use the Common Printing Dialog.
- Test and debug the dialog and the application patches.
- Package the modified desktops and applications and make them available for download and testing.
- Provide example PPDs to printer manufacturers so that they let their PPDs make use of the dialog's functionality.
- Prepare patches to present to the GNOME and KDE projects so that they adopt the dialog.
How long will this take and how many people will we need?
We want to get the Common Printing Dialog into the KDE and GNOME desktops and into the Linux distributions in the spring 2011 releases of the distributions.
The design work will be continued by Peter Sikking and Kate Price, and will run in parallel to the implementation work. This work is planned to start in the month of June and run continuously until the end of the year. The combined involvement of the interaction design team is one man-month per calendar month. After that more infrequent support and re-work will continue.
For the implementation best is to have two persons working in parallel, one working on the GNOME/GTK part and the other on the KDE/Qt part. Lars Uebernickel will do the GNOME part and we will need a second person for the KDE part. Without a second person for the KDE part Lars would have to do it after finishing the GNOME part and then KDE-based distributions would only get the Common Printing Dialog in the fall 2011 editions.
Lars' work plan (for full-time) is as follows. Note that he has to finish his master thesis in August, so he can only start in September. For KDE the amount of work is more or less the same, so the second person would need to do the same work items for KDE.
- Gtk Dialog Dialog is up to the spec
- Packages for Debian-based distributions are available for testing
- Sample PPDs for common printer models from specified printer types are available for review
- Working version of a GTK toolkit patch is available to test
- GTK applications with the new dialog (including Debian packages)
- First GTK applications are ported. Focus is on the ones included in the standard GNOME and/or Ubuntu desktop
- Dialog and GTK patch are getting ready for release
- OpenOffice.org, maybe more applications are patched
What do we need?
We will need the funding for the continuation of the design work by Peter and Kate and also the funding for two persons working full time for 6 months each to complete the implementation of the Common Printing Dialog.
Why not volunteers?
Till Kamppeter is working full-time on printing for Linux for 10 years (for 3 years leading the OpenPrinting project). In all this time he has worked on improving the printing workflow of Linux through several projects. His biggest problem was finding volunteers to implement or maintain printing-related projects. Printing seems really not to be attractive in the big community of volunteer programmers in the free software area. Free software projects, like KDE, GNOME, or OpenOffice.org do only a certain minimum effort to keep printing working, as they do not have the developers who really like to work on the printing part. It is even difficult to get students applying for printing projects in the Google Summer of Code, as there is a big offer of other, more attractive projects. So the only way to get forward is to get the work funded.