File:  [NetBSD Developer Wiki] / wikisrc / projects / project / lpr.mdwn
Revision 1.5: download - view: text, annotated - select for diffs
Fri Aug 22 05:16:04 2014 UTC (9 years, 3 months ago) by dholland
Branches: MAIN
CVS tags: HEAD
add a few notes on how to proceed on this

[[!template id=project

title="New LPR/LPD for NetBSD"


[David A. Holland](

duration="3 months"

The current lpr/lpd system in NetBSD is ancient, and doesn't support modern printer systems very well. Interested parties would do a from scratch rewrite of a new, modular lpr/lpd system that would support both the old lpd protocol and newer, more modern protocols like IPP, and would be able to handle modern printers easily.

This project is not intrinsically difficult, but will involve a rather large chunk of work to complete.

Note that the goal of this exercise is not to reimplement cups -- cups
already exists and one like it was enough.

Some notes:

It seems that a useful way to do this would be to divide the printing
system in two: a client-side system, which is user-facing and allows
submitting print jobs to arbitrary print servers, and a server-side
system, which implements queues and knows how to talk to actual
printer devices.
In the common case where you don't have a local printer but use
printers that are out on the network somewhere, the server-side system
wouldn't be needed at all.
When you do have a local printer, the client-side system would submit
jobs to the local server-side system using the lpr protocol (or IPP or
something else) over a local socket but otherwise treat it no
differently from any other print server.

The other important thing moving forward: lpr needs to learn about
MIME types and accept an argument to tell it the MIME types of its
input files.
The current family of legacy options lpr accepts for file types are so
old as to be almost completely useless; meanwhile the standard scheme
of guessing file types inside the print system is just a bad design
(MIME types aren't great but they're what we have.)


CVSweb for NetBSD wikisrc <> software: FreeBSD-CVSweb