The whitepaper on this site is very interesting. However, it dismisses binary kernel modules, recommending people avoid them. This isn't always possible when hardware device suppliers don't GPL their bundled driver code. Also, in some cases, vendor supplied binary drivers are better than ones available in the kernel itself. So it isn't always best (and sometimes not even possible) to avoid binary kernel modules.
While it isn't always possible to avoid binary kernel modules, best practice is
to avoid them, if possible. Embedded device vendors often supply the source code of their binary drivers under NDA, requiring that the development team build and ship the code as a binary module to keep the original source code secret. The quality of such source code is very variable. Also, if the end users of your product (your customer) want to add their own software, for example, users of off-the-shelf CPCI/ATCA processor boards, binary modules are a real pain. See another discussion in this forum at http://forums.katalix.com/viewtopic.php?t=5