The following ordered list defines different classes of hardware according to the freedom they provide to the user. One should reject hardware in a lower class if there is hardware available in a higher class that will do the same job. 1. Hardware whose design is freely licensed (e.g. ORPSoC, lowRISC) 2. Hardware with documentation enabling the user to write firmware 3. Hardware with freely licensed firmware (e.g. ath9k) 4. Hardware with proprietary firmware (e.g. AMD Radeon) 5. Hardware with proprietary firmware and proprietary userspace (e.g. PowerVR) 6. Hardware with proprietary firmware and proprietary drivers (e.g. Highpoint Rocket 1540 SATA controller) 7. Hardware with proprietary firmware, proprietary drivers and proprietary userspace (e.g. Broadcom BCM4751 GPS chip) 8. Hardware that only accepts firmware which is cryptographically signed by entities other than the user (e.g. Nvidia GPUs from Maxwell GM200 onwards)