Just stumbled over this thread and thought I'd write what would be the most important and compelling reasons for me to use an totally ideal (i know many of the points are utopic) mobile operating system (some points are unfortunately also hardware related) ...
- ... is one i can deploy myself on my own hardware, one which does not use any closed source blobs (not for device drivers, not for baseband module, etc.) so that i can update the operating system for the next decades on my own and which can be build easily without much dependencies to install and without many assumptions about the system one is building on (ideally only with the expectation to have any standard compliant C compiler installed - and for example one of the (g)make tools)
- One that supports something like secureboot (with one own's key) starting starting from the (real) ROM that launches the bootloader so that i can be assured that the OS that i flashed has not been tampered with
- It's an OS with a clear designed API which also features separation and clear loose coupling between applications (where applications can invoke actions of other applications by their type and not by specifying which application to use - like it's possible with android's intents)
- It's an OS for which I can write my own apps on my usual development plattform (i.e. not a specific linux distribution but also on windows and other unices) by looking up how everything works in good structured documentation
- It's an operating systeme where i can control permissions on a fine grained basis (network access to specific remote adresses and ports / bindings to specific local ports and to specific scope (local and/or remote), file access to specific directories / files, etc.)
- An operating system without any preinstalled applications that i cannot remove
- An operating system that does deliver some basic apps (like telephony, sms, contacts database; maybe a webdav server and/or client for file exchange) that i could replace myself but which also expose a standardized interface to invoke for third party applications on their behalve (for example to allow another application to prepare a SMS and show me inside the SMS application where i can give my consent for transmission or - in case i've given the permissions - allows the third party application to transmit / receive any time without any user interaction).
- Preinstalled applications that allow me to synchronize my data (contacts, etc.) to my own services which do not bring any cloud connection with them as they are preinstalled (of course such things should be available via third party tools optionally)
- An operating system that does not contain any DRM components and does not deliver any applications that support DRM in any way.
- An operating system that does not couple to a specific app store
- An operating system that does not kill my applications in a random way if memory pressure get's high (i.e. no overcommit) but which allows to allocate fixed amount of memory to some critical applications and memory pressure callbacks for other applications
- Development: An operating system that is bundled with a framework that allows for easy screen size independent development of applications; and a framework that allows easy (+- lightweight) IPC so that applications can be coupled via registerable actions so that they can be modularized and used by external applications in an easy way. And a framework that provides APIs that are stable on the really long term which are only extended but not modified after they've reached a stable state.
- A system that i can update simply (or that supports auto updating without breaking anything that's written according to the api specs) which also updates some important libraries (like openssl, etc.), etc. independent of the applications and which does not require recompile of applications that use these libraries
- A system where i can automate - by my own scripts or applications - nearly every aspect (given fine grained permissions) - for example having an easy way to write an application that enables / disables wireless LAN on estimated position determined via cellid, writing a sheduler that switches between silent/vibrating mode and an enabled bell, etc.
- A feature like BSDs user mode architecture and API "emulation" would be nice (like implementing own binary image loaders in case a signature matches, having the ability to register own syscalls, etc.)
- A system that has real multi user support and supports user switching without terminating another users processes (in case of being used on tablets)