Operating systems - Criteria
Choosing an operating system can be a daunting task. Some might enjoy switching from one to the next while others want to make the correct choice and stick to it. Many criteria have to be considered before settling, some criterion might be more important for some than others with the end decision coming down to personal requirement and preferences.
Free and Open Source
Free and Open Source software is a requirement for trust and quality.
Hardware Compatibility
Hardware compatibility ensure the viability of an operating system on a specific device. Usual checks include graphics, input, audio, sensors, WiFi, Bluetooth. If not working out of the box, manual intervention might be required to install firmware and drivers.
Security & Privacy & Anonymity
Operating systems making claims about security, privacy and anonymity should have a proven track record at achieving them and act in a timely manner when issues arise. It should provide up-to-date kernel and software and make use of the latest proven technologies instead of getting stuck on outdated or promoting unverified ones.
The OS should protect against known and unknown vulnerabilities through several methods:
- attack surface reduction removes unnecessary code and disables optional features by default
- exploits mitigation rendering the abuse of vulnerabilities impractical or impossible, separating the various system components limiting the extent of potential damage also know as sandboxing
- anti-persistence and detection ensuring the authenticity and integrity of the operating system on each reboot
- and patches fixing programs with bugs and vulnerabilities
Usability
Usage should be seamless, easy to install, maintain, update, upgrade. The interface should be intuitive and accessible. The software repositories should have all the necessary tools. Troubleshooting should be straightforward with good help resources (official documentation and forums).
Customizability
Customization depending on different uses cases should be provided through intelligible user interfaces.
Extensibility
Customization are great for modifying existing functionalities but extensibility enables the additions of new ones.
Personal Preferences
Personal preferences while purely subjective and not measurable by any metrics may come into play.