Just a quick comment in favor of NetBSD (my favorite flavor):

That ultra-portability that VAXGeek described has some wonderful technical side-effects. It has led to a very clean and well thought-out design, and some very clean code. Due to the decisions made by the design team, there is very little in the src/arch branch of the NetBSD source tree, where all the platform-dependant code is. This makes it very consistent across platforms and remarkably stable, even on newer ports.

NetBSD strikes me as being more anal about code cleanliness, which is a good thing. For instance, NetBSD requires that all code in the main source tree compile with the -Wall and -Werror flags set. This turns on all compile-time warnings, and makes all warnings fatal errors. It cuts down on the most common classes of errors, which result from poor variable scoping, poor variable typing, and many stupid typos that result in syntactically valid but semantically ridiculous code.

NetBSD renamed the ports tree the package tree, usually located in /usr/pkgtree. It works precisely the same, as it came from the same root code, and generally contains the same things as the OpenBSD version.

NetBSD is fully binary compatible with Linux.