Prix is a replacement for the previous jaked and jakec portions of the previous Columbia printing system. The printing system's purpose is cost recovery and limiting resource waste. It allows print jobs to be authenticated prior to printing and accounting to occur after printing.

Most of Prix's goals are based on problems encountered in the jake system. The jake system is unstable and does not always produce the correct output especially with newer Windows 2000/XP/Me clients. Additionally, adding printers to the system is a task with many steps prone to error.

To improve stability, Prix reduces the number of failure points. Clients will print directly to a Prix box. Jobs on the Prix box will then be printed -- via lpr in the case of Unix based systems -- to the printer. In the jake system, jobs would be printed to one server as a liaison for Windows and Macintosh systems and the Unix servers. Then, the jobs would be sent to another server holding the queues for a real printer. Additionally, jakec would be run on one server with the display being exported to the jake box. Failure of any of these servers would result directly in the inability to print.

The jake system also modifies postscript output prior to sending the job to a printer. Prix will only query a document for relevant information and will not make modifications to the postscript. This moves the burden of generating valid postscript from Prix to the driver manufacturer.

Prix aims to be simple to set up by administrators as well as users. Prix will be no more difficult to set up than another lpr printer. Additionally, the windows systems will be better equipped to deal with Windows users allowing automatic driver downloading. For the administrator, Prix aims to reduce the number of steps required to set up a printer while improving the level of security. The prix box will be connected directly to a group of printers. This eliminates the need of configuration files to specify what hosts are allowed to print directly to the printer and bypass the authentication system.

In addition to improving upon the jake system, there are other goals for Prix.

Prix should be easier to maintain. Code should be well documented. Code should also leverage existing code as well as adhere to existing apis.

Prix should be extensible. It should be able to go beyond its current foreseeable implementation.

Prix should be configurable. It should be able to used in other environments with very few modifications. The Prix package provides pseudo-queue services as well as supporting code for modification and display of the queue.

Prix is currently implemented on top of a Linux box running LPRng and rmid with supporting networking and kerberos5 installed. Also required are Jini libraries. LPRng provides the lpr support allowing lpr clients to print to the machine via lpd, jobs to be printed to supported printers via lpr, and status and accounting to be queried via lpq. Rmid allows remote method invocation simplifying the programming model and reducing development time required to support remote clients. Kerberos 5 is required for authentication of user information. Jini allows print services to be published and discovered and also provides mechanisms for resource management to allow for zero downtime.