History
Since Solaris has its roots in SVR4, it's print subsystem came from AT&T System V. It has been embellished, hacked, and morphed by lots of folks over time. Following is a description of some of the changes made.
Changes, Addition, Deletions Over Time - More or Less in Order
- Re-architecture
In the Solaris 2.6 timeframe the print system was re-architected, moving it from a monolithic model to a true client/server split. This change allowed for the removal of lpNet, a specialized daemon which handled network communication. lpNet had the distinction of adding complexity, expending significant resources for inactive clients, and inconsistant results with queuing and querying.
The 2.6 client and all clients forward, do not require lpsched, the infamous spooler, to be running on the client. All requests are gathered up by the command, folded into the appropriate structure, and sent over the wire to the print server. - Use of Nameservice
The client finds the print server with the use of the nameservice. NIS/NISPLUS/LDAP maps are created by the administrator on the nameservice server. The huge advantage of this is that all the clients are zero administration clients. If a new workstation is put on the network, and the user types "lp -d {printer} {file}" it just works. Easy. The client commands are also capable of printing to queues on remote systems that are not configured in the name service. This has been useful for printing outside of your system's administrative realm. (between buildings, campuses, to/from home, ...) - Printers put in nsswitch.conf
A few releases later, the nameservice support was expanded and the print system was put into the nsswitch.conf. Thus, users could direct their systems to the source of printers in the order preferred. Places to define the printers are user, files, {nameservice}, where user is the $HOME/.printers file, and files is /etc/printers.conf. - Administration GUI developed
Somewhere in here it was determined that lpadmin is not the most user friendly command; an enormous understatement. Out of the idea to improve printing administration arose the printmgr(1M), a Java based GUI. It has been a boon for customers and had the pleasant side effect of keeping some of the more cranky Solaris engineers happy.
Solaris 10 additions
- IPP Protocol
The IPP protocol is now supported on the server. This allows for easy interoperability with both CUPS and MS clients. - Support for low end printers
GhostScript, foomatic, PPD files, a2ps and friends were wrapped into the system providing support for low-end printers requiring external RIPS. - PAPI library
The PAPI library was delivered, allowing applications to interface with the print system with the latest open printing API. The previous API, for those not knowing, was the print commands themselves. Not elegant. - Print system under smf(5)
The printsystem has been put under smf(5). To start/stop lpsched and the listeners, the smf command svcadm(1M) may be used as can /usr/lib/lpsched and /usr/lib/lpshut. The latter two were rewritten to utilize the smf framework whilst retaining the interface which with users are familiar.