Printing Design: Difference between revisions

From OLPC
Jump to navigation Jump to search
 
(7 intermediate revisions by 4 users not shown)
Line 6: Line 6:
* New GUI on the XO will be added to configure and use printers.
* New GUI on the XO will be added to configure and use printers.
* Modifications and or additions to CUPS client might be needed to improve performance, reduce footprint, and or achieve desired functionality.
* Modifications and or additions to CUPS client might be needed to improve performance, reduce footprint, and or achieve desired functionality.
* New GUI for security and other configuration options (queueing, authorization, etc) for cups
* New GUI for security and other configuration options (queueing, authorization, etc) for CUPS.


== Use cases ==
== Use cases ==
# Teacher printing tests, notes to send home, etc. Does the teacher use an XO?
# Teacher printing tests, notes to send home, etc. Does the teacher use an XO?
# Student printing documents (text, pictures, etc) from an XO
# Student printing documents (text, pictures, etc) from an XO



== Configuration - XO ==
== Configuration - XO ==
Line 18: Line 17:
=== Manual Configuration ===
=== Manual Configuration ===
Printers can be manually added to /etc/cups/printers.conf.
Printers can be manually added to /etc/cups/printers.conf.

Even better, it is not necessary to install cups on the XO at all. Create the directory and file /etc/cups/client.conf and add a single line:

ServerName 1.2.3.4

where 1.2.3.4 is the ip or hostname a cups server on a bigger computer (school server or home desktop). The printers are configured on the cups server, and available to all. Most printing applications use libcups, and Just Work. Caveat, the UI in most printing applications do not support the full capability of libcups, especially authentication. See Authentication below.


=== Automatic Configuration ===
=== Automatic Configuration ===
The presence service may be a way to discover printers and configuration information. A printer would be configured, once, at the server. The server would advertise its printer through the presence system. This advertisement will include the information (driver, printer model, ports) required to configure the printer.
The presence service may be a way to discover printers and configuration information. A printer would be configured, once, at the server. The server would advertise its printer through the presence system. This advertisement will include the information (driver, printer model, ports) required to configure the printer.


==== proposed workflow - XO ====
==== Proposed Workflow - XO ====
[[Image:OlpcPrintingMockup.jpg|400px]]
# User sees printer in neighborhood view
# User sees printer in neighborhood view
# User right clicks and selects "add printer"
# User right clicks and selects "add printer"
# Printer configuration <strike>and driver</strike> is automatically retrieved and placed into printers.conf
# Printer configuration <strike>and driver</strike> is automatically retrieved and placed into printers.conf using python module for CUPS
# cups restarts (if unable to accept a new printer without restart)
# CUPS restarts (if unable to accept a new printer without restart)
# Printer is ready to use!
# Printer is ready to use!


==== Unanswered questions ====
==== Unanswered questions ====
* where are the printers listed?
# friends view?
# configuration activity?

* How is the default printer selected?
* How is the default printer selected?
# when its added
# from the friends view (if printers shown there) or from the config activity

* How is a secondary printer selected when the default is not available?
* How is a secondary printer selected when the default is not available?
# arbitrarily picked?

* Are there any other options given when adding a printer?
* Are there any other options given when adding a printer?
# open to set it as the default, if there are no printers first printer is always default



== Configuration/Moderation - Server ==
== Configuration/Moderation - Server ==
Line 39: Line 54:
=== Configuration ===
=== Configuration ===
Desktop should have some built in GUI for printer configuration. If auto configuration through presence is used this may require additional configuration?
Desktop should have some built in GUI for printer configuration. If auto configuration through presence is used this may require additional configuration?



=== Authorization ===
=== Authorization ===
Authorization will be needed to make sure kids only print to their own school, class, etc. Cups already allows for access per user and XOs can be identified by their ssh keys. The printer configuration tool in the current version of Ubuntu has this feature already.
Authorization will be needed to make sure kids only print to their own school, class, etc. CUPS already allows for access per user and XOs can be identified by their ssh keys. The printer configuration tool in the current version of Ubuntu has this feature already.


Authorization goes both ways, and may in fact be more important in the other direction. Consider a fake printer on the network which steals things that are printed to it.
Authorization goes both ways, and may in fact be more important in the other direction. Consider a fake printer on the network which steals things that are printed to it.
Line 55: Line 69:
* previewing jobs in queue
* previewing jobs in queue
* identification of duplicate jobs
* identification of duplicate jobs



== Supporting Printing in Activities ==
== Supporting Printing in Activities ==


Files sent to CUPS must be a file format it supports such as postscript, PDF or txt. What is shown on the screen must be translated to one of these formats if this is not the native format for the activity. Some Activities (Write, Browse, etc) have engines that already implement printing in some form. Cairo has an API for creating PDFs for any activity that needs to translate their files.
Files sent to CUPS must be a file format it supports such as postscript, PDF or txt. What is shown on the screen must be translated to one of these formats if this is not the native format for the activity. Some Activities (Write, Browse, etc) have engines that already implement printing in some form. Cairo has an API for creating PDFs for any activity that needs to translate their files. Adding libpaper to the build may be justified; Tux Paint requires this for printing support.


==== Activity Priorities ====
==== Activity Priorities ====
Line 66: Line 79:
# Write
# Write
# Browse
# Browse



== Using a printer ==
== Using a printer ==
Line 79: Line 91:


==== Through the Journal ====
==== Through the Journal ====
It would be great to have a printing icon in the journal. The entry detail screen would be a great place for this. Cups does not know how to print all file formats. Printing should be passed off to the activity that created it to handle printing.
It would be great to have a printing icon in the journal. The entry detail screen would be a great place for this. CUPS does not know how to print all file formats. Printing should be passed off to the activity that created it to handle printing.


==== GUI Unknowns ====
==== GUI Unknowns ====
Line 87: Line 99:


== Performance and Space Issues ==
== Performance and Space Issues ==
Cups includes drivers and or other information for a lot of printers. This creates a large footprint on disk and or in memory. If this is the case then cups should be modified to allow better control of resources that cups uses. Cups uses 3mb (need confirmation) of space on disk.
CUPS includes drivers and or other information for a lot of printers. This creates a large footprint on disk and or in memory. If this is the case then cups should be modified to allow better control of resources that cups uses. CUPS uses 3MB (need confirmation) of space on disk.


Formats could be limited to postscript 2, postscript 3, pdf (versions?), png, jpeg, and UTF-8 text.
Formats could be limited to postscript 2, postscript 3, pdf (versions?), png, jpeg, and UTF-8 text.

Latest revision as of 13:38, 28 October 2010

Overview

This document is design for the configuration and use of printers by an XO.

  • XO will have CUPS (currently installable by yum) and send print jobs to the school server or another linux desktop.
  • New GUI on the XO will be added to configure and use printers.
  • Modifications and or additions to CUPS client might be needed to improve performance, reduce footprint, and or achieve desired functionality.
  • New GUI for security and other configuration options (queueing, authorization, etc) for CUPS.

Use cases

  1. Teacher printing tests, notes to send home, etc. Does the teacher use an XO?
  2. Student printing documents (text, pictures, etc) from an XO

Configuration - XO

The number of printers, the models, and their locations will be unknown. Adding or selecting a printer needs to allow for these unknowns but still be simple enough that a 1st grader can easily configure a printer.

Manual Configuration

Printers can be manually added to /etc/cups/printers.conf.

Even better, it is not necessary to install cups on the XO at all. Create the directory and file /etc/cups/client.conf and add a single line:

   ServerName 1.2.3.4

where 1.2.3.4 is the ip or hostname a cups server on a bigger computer (school server or home desktop). The printers are configured on the cups server, and available to all. Most printing applications use libcups, and Just Work. Caveat, the UI in most printing applications do not support the full capability of libcups, especially authentication. See Authentication below.

Automatic Configuration

The presence service may be a way to discover printers and configuration information. A printer would be configured, once, at the server. The server would advertise its printer through the presence system. This advertisement will include the information (driver, printer model, ports) required to configure the printer.

Proposed Workflow - XO

OlpcPrintingMockup.jpg

  1. User sees printer in neighborhood view
  2. User right clicks and selects "add printer"
  3. Printer configuration and driver is automatically retrieved and placed into printers.conf using python module for CUPS
  4. CUPS restarts (if unable to accept a new printer without restart)
  5. Printer is ready to use!

Unanswered questions

  • where are the printers listed?
  1. friends view?
  2. configuration activity?
  • How is the default printer selected?
  1. when its added
  2. from the friends view (if printers shown there) or from the config activity
  • How is a secondary printer selected when the default is not available?
  1. arbitrarily picked?
  • Are there any other options given when adding a printer?
  1. open to set it as the default, if there are no printers first printer is always default

Configuration/Moderation - Server

Configuration

Desktop should have some built in GUI for printer configuration. If auto configuration through presence is used this may require additional configuration?

Authorization

Authorization will be needed to make sure kids only print to their own school, class, etc. CUPS already allows for access per user and XOs can be identified by their ssh keys. The printer configuration tool in the current version of Ubuntu has this feature already.

Authorization goes both ways, and may in fact be more important in the other direction. Consider a fake printer on the network which steals things that are printed to it.

Moderation

Printing supplies are not cheap and may be the biggest obstacle. There is concern that kids will print large jobs and use supplies up quickly. There should be some form of moderation to prevent waste and misuse. Authorization queues and or quotas were suggested. Some of these features exist in CUPS but there is no GUI to expose them.

Some possible features for moderation:

  • configurable quotas. IE. 2 pages per day. 20 pages per month. etc.
  • override for quota
  • Authorization queues. Rulesets to determine which jobs requires teacher authorization before printing
  • previewing jobs in queue
  • identification of duplicate jobs

Supporting Printing in Activities

Files sent to CUPS must be a file format it supports such as postscript, PDF or txt. What is shown on the screen must be translated to one of these formats if this is not the native format for the activity. Some Activities (Write, Browse, etc) have engines that already implement printing in some form. Cairo has an API for creating PDFs for any activity that needs to translate their files. Adding libpaper to the build may be justified; Tux Paint requires this for printing support.

Activity Priorities

Printing can be added in parallel but these our the priorities. These activities are some with the most compelling need for printing or they already have some printing capabilities in the underlying software.

  1. Write
  2. Browse

Using a printer

Through the Command line

   lpr -P fooprinter foodoc.ps

(In the above example, the printer name is "fooprinter" and the document being printed is "foodoc.ps".)

Through an Activity

There should be a standard icon with a standard location for printing (activity toolbar?)

Through the Journal

It would be great to have a printing icon in the journal. The entry detail screen would be a great place for this. CUPS does not know how to print all file formats. Printing should be passed off to the activity that created it to handle printing.

GUI Unknowns

  • What happens when a printing button is clicked in terms of options? Choice of printer? paper size? copies?
  • Can a job be canceled? if so where does this GUI appear?


Performance and Space Issues

CUPS includes drivers and or other information for a lot of printers. This creates a large footprint on disk and or in memory. If this is the case then cups should be modified to allow better control of resources that cups uses. CUPS uses 3MB (need confirmation) of space on disk.

Formats could be limited to postscript 2, postscript 3, pdf (versions?), png, jpeg, and UTF-8 text.

Hardware

A low cost, rugged, printer that can use cheap ink would be a great thing.