Until recently, the choice for Linux users was simple - everyone ran the same old lpd lifted mostly verbatim out of BSD's Net-2 code. Even today, most vendors ship this software. But this is beginning to change. SVR4-like systems including Sun's Solaris come with a completely different print spooling package, centered around lpsched. And there are signs that some Linux vendors will shift to providing LPRng, a far less ancient print spooling implementation that is freely available. LPRng is far easier to administer for large installations (read: more than one printer, any serial printers, or any peculiar non-lpd network printers) and has a less frightfully haphazard codebase than does stock lpd. It can even honestly claim to be secure - there are no SUID binaries, and it supports authentication via PGP or Kerberos.
For the moment, even in light of the new options, lpd is probably fine for most Linux users. While it isn't the snazziest system, it works fine once set up, and it is well understood and extensively documented in third-party Unix books.
If you'd like more information on LPRng, check out the LPRng Web Page. Future versions of this HOWTO will include information on using both LPRng and regular lpd.