Printing and the XO

Peter Krenesky peter at
Wed Jan 2 16:43:39 EST 2008

Hi all,

While not a primary concern of the project, printing is something that 
teachers are asking for.  OSL & HP are exploring how all the pieces will 
fit together.  Much of this was discussed in a recent call with Walter 
Bender, Jim Gettys, Jim Rowson (HP), North Krimsly (OSL), Carlos Jensen 
(OSU Engineering), and myself.  I'm bringing this to the mail list so 
other people can give input.

There were a lot of details discussed so in an effort to be concise this 
will be more of an outline.  There are many pieces to this problem, this 
description is in no way considered complete.  I'm just getting the 
conversation going.

==== Overview ====

* 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

==== Configuration - XO ====
The number of printers, the models, and their locations will be 
unknown.  It may be 1 printer per school, or many depending on the 
country or region.

Adding or selecting a printer needs to be simple.   Autoconfiguration is 
the best case scenario but some manual configuration is still needed.  A 
GUI is required for all of this. 

The presence service may be a way to discover printers and configuration 
information.  IE. the advertisement includes the configuration to be 
added to /etc/cups/printers.conf  A printer would really only be 
configured, once, at the server.

Some unanswered questions are:
    * What does this GUI look like. 
    * Where is it located within sugar.   Within the configure activity?

==== Configuration/Moderation - Server ====
Some form of 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 keys.  The printer configuration 
tool in the current version of Ubuntu has this feature already.

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

==== Activities ====
The first activities that this is a priority for are write and browse 
but development can be in parallel.  These activities are some with the 
most compelling need for printing.  They also are low hanging fruit 
since both mozilla and abiword already have printing capabilities.

Files sent to cups must be postscript or PDF.  What is shown on the 
screen must be translated to one of these formats.   Cairo has an API 
for creating PDFs.

==== Performance Issues ====
We are under the impression that 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.

==== Hardware ====
We did not touch on the questions involving printer hardware very much.  
We were focusing on the software side of things.  The consensus from the 
earlier OSL/HP meetings was that a low cost, rugged, printer that can 
use cheap ink would be a great thing.  Hardware is not something the OSL 
has expertise in creating but perhaps HP labs or OLPC could handle it.

==== Testing CUPS ====
I verified that cups was installable and works on the XO over a 
traditional wireless network with the following steps  (1-3 require root)

1) yum install cups.i386
2) configure your printer in /etc/cups/printers.conf
3) /etc/init.d/cups restart
4) lpr -P fooprinter

- Peter

Peter Krenesky
Open Source Lab
Oregon State University

More information about the Devel mailing list