Following a recent trip to China, I acquired an Android tablet running Release 1.6 (Donut). Total retail price: $90. Unlike an iPad, it is both 'Designed and Made in China.' Running on an ARM platform and containing an 802.11 interface, SD card slot and a touch screen, it is actually a reasonably speedy experience. However, that is where the positive news ends.
The bad news is that the device reboots on average every 15 minutes, does not hold its battery charge for more than half an hour, does not allow application downloads from the standard Android Market Place and contains a rather temperamental touch screen. Clearly, a number of issues are related to the choice of low-end hardware components, which is also reflected in the incredibly low retail price. However, most problems are likely either software or system integration issues for this Android device. This led me to the following question:
"What is Good Android?"
Even at such a low price, end-users will expect a stable device. Given the tablet form factor, users will expect to use the device in mobile scenarios. I would expect that I could download some market place games to keep the kids entertained. If you look at it from a use case perspective, I would expect that many use cases from my Nexus One are replicable. If you look at it from a brand perspective, I would also expect that the user experience from my other Android devices extends to anything that runs the Android stack. Which leads to the next question:
"Who is responsible for ensuring Good Android?"
Well, it is not Google. Android is an open source distribution. The quality of the Android stack on a specific device is the primary responsibility of the manufacturer and/or the operator selling the device. For tablets, there often is no operator distribution at this time, especially for low-end devices in China. In its SDK, Android contains a compatibility test suite (CTS) that tests for API level compliance, but it contains no comprehensive reliability and performance tests (e.g. for power management). So, the question becomes:
"What can you do to create a Good Android software stack?"
The development of a high-quality software stack that is efficiently brought to market focuses on two main points. One, a stable development base that is well documented and supported. Wind River’s Platform for Android is an example. Two, a comprehensive test plan and, ideally, automated test execution harness containing thousands of test cases to ensure the stability of the devices. Wind River’s FAST for Android is one possible solution. I am sure there is more that can be done to ensure consistent quality of Android distributions is maintained – what do you think?