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 and has a less frightfully haphazard codebase than does stock lpd.
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 LPRng - An Enhanced Printer Spooler. Future versions of this HOWTO will include information on using both LPRng and regular lpd.