Why does elementary develop a whole operating system (OS)—i.e. a complete downloadable and installable disk image—rather than just creating a desktop environment (DE) for users to install on their OS of choice?
elementary develops an OS rather than just a DE for a few reasons.
- elementary OS is advertised as a replacement for Windows and OS X.
- Distributing elementary OS as a whole OS makes it easier to improve all aspects of the user experience (UX).
- elementary is able to focus development on a single codebase.
1. A replacement for Windows and OS X
The primary target market of elementary OS is people who are not already using open source software or Linux-based OSes. It is much easier for elementary to provide a whole OS than to steer potential users to download a completely different OS and then install something on top of it, or to rely on third-party OS distributors to package up and ship (potentially modified) versions of elementary software on top of their OSes.
2. Improving all aspects of the UX
By developing and distributing elementary OS, elementary can improve more than just the "userland" (i.e. non-low-level) aspects of the user experience. For example, in the previous version, Luna, elementary OS included tweaks to the OS that made it preload frequently-used applications, making the OS and application start times faster across the board.
If, in the future, an even more low-level improvement would speed up the OS boot time, improve security, etc., elementary OS is free to make those improvements. elementary sees the user experience as starting as soon as the device powers on, not just once a user has logged in.
3. Focusing on a single codebase
elementary can focus its somewhat limited development power and resources on a single codebase: elementary OS. If elementary software was designed primarily to be used on top of other OSes, it would mean every change to the codebase would need to be tested in a variety of implementations on other OSes. It would also mean elementary would likely need to either choose a third-party OS to cater to as the reference implementation, or develop a standalone OS anyway to use as a test case.