I'd love to see Google reset their Android efforts and start again because of Java issues (legal, technical), and fragmentation issues (majority still on Android 2.x), and also as you mention because having one binary API for the UI is painful. My wishlist for a revamped mobile platform:
A simple linux distribution as a base (as with Android), with posix. They could still lock-down app installation for normal users, have an app store, and all the other things that make current mobile platforms attractive to consumers.
Hooks for any popular languages to control the UI via simple glue libraries, all implementing the same API, with the ability to add more easily because the UI API could be really quite simple (and should remain so) if built off the work already done for the web. They could add C, C++, Golang, Java, C#, even ObjC to the mix this way. There's no chance they'll do this for their current API, so they'd need to have a radical rethink of just what a mobile OS should provide.
A web-based stack for the UI based on an improved webkit (a la webOS). Most apps have very simple needs (specify a UI, adjust the UI, listen for UI events) that could easily be dealt with by message passing between the view and app rather than binary interfaces. Webgl and css animations etc could be utilised for performance where required. Crucially this wouldn't tie developers into one complete stack from language to tools to UI - the UI should be separate and not tied intimately to the back-end language as it is currently on iOS and Android.
A base OS that is non-negotiable and non-modifiable by carriers/manufacturers, and upgrades from a central point (a consortium led by Google), that are not phone-specific. Carriers can add apps etc but there's no reason they have to adjust the base OS, and both should negotiate with Google for inclusion of new drivers, not hold up upgrades because they want to sell newer hardware/contracts.
Far stricter permissions for apps with far less access (more like web-apps), and individual prompts on first use of info like phone no, addresses etc. to discourage overuse.
It's a shame that our mobile devices are typically tied to one platform, one language, one UI, when they have so much potential as portable computing devices.
Quite possibly that covers a lot of it, haven't looked at that so will have a look, thanks for the tip. Not keen on using QML (yet another mark up language), but HTML seems to be an option there. Do you know of any hardware that can run this?
I mean, are you not aware of Firefox OS which bootstrap(ed/s) itself on top of Android? Or that Ubuntu for Phones is coming out with phones to support it?
Or of the Nexus program? Or the pseudo-Nexus program with devices with unlocked bootloaders.
OH and webOS still exists, and is open source and runs on some Android devices.
What more do you want, sounds like your needs are being met. Take the android kernel and write a new UI. Then you can run it on one of the what, hundred different devices that CM supports?
>They could add C, C++, Golang, Java, C#, even ObjC to the mix this way.
lol, you think writing and supporting all of the Android APIs for all of those languages is feasible? Or you want some kind of bindings or what exactly?
>Carriers can add apps etc but there's no reason they have to adjust the base OS, and both should negotiate with Google for inclusion of new drivers
and you don't seem to actually know who controls the distribution of the drivers
Thanks for the link to up to date stats, so 'majority' is no longer correct according to those graphs, that was misleading. However the fragmentation picture still isn't pretty, even if improving - more than 30% are still on Android 2.x. This compares really badly with iOS where > 90% are on the latest and < 1% on 2 versions behind, so that's one area I really feel Android is lagging Apple on - mostly because of their more open nature, customisation, and the upgrades not going through google exclusively.
Ubuntu OS looks interesting but has no traction right now, I'll be keeping an eye on that though. I'm afraid WebOS is dead at the moment - choice of which platforms to target is more political than technical unfortunately, which is why it'd be great to see Google pushing a more open system which lets people use any language they want for development. They have enough clout to make that happen and not many do. I'm aware it's very unlikely as I said in the post above - There's no chance they'll do this for their current API, so they'd need to have a radical rethink of just what a mobile OS should provide.
Please don't take this as some sort of attack on Google or Android.
What more do you want, sounds like your needs are being met. Take the android kernel and write a new UI. Then you can run it on one of the what, hundred different devices that CM supports?
That is of course a huge amount of work for one person and likely doomed to failure. To be clear that I'm not blaming Google or demanding that they change, just agreeing with the OP that I'd like to see more options, but pointing out that that requires a fundamental rethink of the entanglement between UI and API. I've written a few iOS apps which use HTML views extensively and make little use of the UI toolkits using urls etc to pass actions and move screen, so I'm well aware this is possible using the current system, but it's currently a pain to try to use another language as your core language for an app.
Yeah, but what's it matter? Those people buy cheap Android phones. There are several options for up to date Android phones that are either Nexus, I mean, many of them if you're a GSM user. And many more if you want to use AOSP or CyanogenMod.
And devs get backporting of most apis via the Play Store so it's not like fragmentation is an issue very often at all.
The hardware is out there. The software is out there. You could port Firefox OS to the SGS4, you would have basically /everything/ on your checklist, and you can buy a 100% unlocked GSM SGS4 from Google and put Firefox OS, or port webOS, or whatever OS you want.
Are you simply lamenting that you can't walk into a store and buy that combo? I guess I don't care when I can follow the steps to do it myself (of course, now I'm starting to download stuff to play around with porting Firefox OS to my SGS4)
>requires a fundamental rethink of the entanglement between UI and API
Heh, I actually know of a platform that allows you to write web apps and from them invoke native code that conforms to their spec. And their vision is to have that platform spread across all device sizes. Do you know who it is? :)
It's more that I'm lamenting that as a mobile app developer for commercial clients I am forced to use the platforms which have traction, which leaves me with the unenviable choice of iOS or Android, both of which have significant warts, and neither of which leave much choice for experimentation in languages for writing apps or UIs.
A simple linux distribution as a base (as with Android), with posix. They could still lock-down app installation for normal users, have an app store, and all the other things that make current mobile platforms attractive to consumers.
Hooks for any popular languages to control the UI via simple glue libraries, all implementing the same API, with the ability to add more easily because the UI API could be really quite simple (and should remain so) if built off the work already done for the web. They could add C, C++, Golang, Java, C#, even ObjC to the mix this way. There's no chance they'll do this for their current API, so they'd need to have a radical rethink of just what a mobile OS should provide.
A web-based stack for the UI based on an improved webkit (a la webOS). Most apps have very simple needs (specify a UI, adjust the UI, listen for UI events) that could easily be dealt with by message passing between the view and app rather than binary interfaces. Webgl and css animations etc could be utilised for performance where required. Crucially this wouldn't tie developers into one complete stack from language to tools to UI - the UI should be separate and not tied intimately to the back-end language as it is currently on iOS and Android.
A base OS that is non-negotiable and non-modifiable by carriers/manufacturers, and upgrades from a central point (a consortium led by Google), that are not phone-specific. Carriers can add apps etc but there's no reason they have to adjust the base OS, and both should negotiate with Google for inclusion of new drivers, not hold up upgrades because they want to sell newer hardware/contracts.
Far stricter permissions for apps with far less access (more like web-apps), and individual prompts on first use of info like phone no, addresses etc. to discourage overuse.
It's a shame that our mobile devices are typically tied to one platform, one language, one UI, when they have so much potential as portable computing devices.