title="New LPR/LPD for NetBSD"
[David A. Holland](mailto:dholland@NetBSD.org)
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.
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
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
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 <wikimaster@NetBSD.org> software: FreeBSD-CVSweb