Giving an entirely new version of any widely used software program to our entire user base all at once is unnecessarily fraught with peril.
Instead, let's employ a phased update strategy wherein we provide the updated software to an ever-expanding set of random users. This pool of users will be grown as our confidence of that software update grows, fed by realtime information from the crash database and other potential sources.
We should discuss the tradeoffs of doing this just post-release or during development, when we're also trying to land large changes to the operating system.
We should build this at a level that still affords power users the ability to forcibly install all updates. Update-manager is one such option.
It might be worth also discussing the possibility of using feature flags.