Android; the Not-So-Open Open Platform
If you’ve taken an interest in Googles Android platform before you’ll be familiar with phrases such as “Android is the first truly open and comprehensive platform for mobile devices” from when the Android and Open Handset Alliance initiative was started, and if you’ve attended talks by some of the Evangelists you’ll have been told that you can replace any part of the ‘phones software, but, this morning, it would appear that you won’t be on a level playing field.
It is true that the Android source code is available to everyone, and it is true that you can write apps which provide the functionality of the contacts app, dialler, Marketplace, or whatever, but what hasn’t come to light until now is that you may not be able to get your application to run on an Android device because some functionality will only be provided to applications signed with a code signing certificate which is specific to each platform.
This basically gives Google and the ‘phone manufacturers the ability to lock down functionality and make it only available to their applications. You might see this as a slightly out-there scenario, but there are already applications on the G1 which are using functionality which will Google have no intention of making available to third-party developers giving it an unfair advantage over any competing app.
We’re not talking about marginal functionality which will be rarely used (such as the ability to change the operating system and hardware configuration), we’re looking at things like Googles Marketplace offering seamless upgrades but any third party updating software being prevented from installing new versions of an application (and even if it could it would be forced to put the user through the permission granting system for every single update). In another post it’s mentioned that dialling emergency services isn’t available to third party applications, so if you were thinking of writing a trendy replacement for the in-built dialling application, well, you’ll just need to make sure your users know how to revert to the “approved” one shipped with the phone if they need the police, ambulance, or fire services.
So remember, although Apple may reject third-party apps because they duplicate functionality, if you’re developing for Android you may find that although you can write an app which offers a better dialler, browser, or whatever, you may find it won’t run on a device purely because of the way the platform has been designed.