Android apps currently run on 18,796 distinct devices with different hardware capabilities. Those devices connect to multiple data networks with
100-fold variations in speed and latency. Android users are elderly adults and young children, have highly-variable mobility patterns and install
different mixtures of the 1.5 million apps published on the Google Play Store. All of this diversity creates uncertainty for developers, who may
be unsure how to adapt their app to achieve performance, correctness, and usability on any device, at all times, for anyone, anywhere. Our new
maybe, addresses this challenge by allowing programmers to express development-time
uncertainty. A new language construct and online infrastructure allow programmers to indicate where they are uncertain, what legitimate options are available,
and what constitutes success or failure. Post-deployment testing and machine learning are then used to resolve the uncertainty by crafting effective
data-driven adaptation strategies.