Hola, Namaste, Hello! Mobile AppsPreviously there were different Operating Systems, then came different browsers and now we different application development ecosystems, and just looking at the mobile ecosystem, we can see that there is so much difference among the different service providers, OEM manufacturers and merely the smartphone itself. In the mobile space, there is the iOS platform, the Android platform and the recently released and hopefully catching up Windows Phone OS. Take a look at the difference in the foursquare application on the different platforms.
|The Foursquare Mobile application on the iOS platform|
|The Android Platform running the Foursquare application (notice the tabs on the top as compared to the iOS's at the bottom)|
|The Windows Phone Ecosystem presents a completely different application ecosystem.|
What it means
Now each platform promises a different approach to building applications, the iOS has tabs, navigation bars etc. while the windows phone os has panorama and pivot based applications. These are not just different looking but completely different in the way of the functionality as well. Since of course the user only cares about the application experience, the underlying layer of functionality might not be visible to him/her. This is because once you get too acquainted to a system of doing things on your smart phone or mobile device, you just get it. It's about learning a new language, you don't have to figure out the syntax and semantics of the language when you become fluent in it. Thus, any significant deviation from a particular convention of display on a particular device will cause issues with the set of users on that particular device, they would either need to get familiar to the application design or completely settle for another similar cloned app because it just looks good.
What should be done
I think before thinking about what should be done, one needs to realize that there is a problem. We can agree that maintaining multiple application platforms is a pain, while people (Mac users and Windows users) love the Office 13 preview released recently they cannot help blame Microsoft for not updating the Mac application at the same time as the Windows application. And the mobile application ecosystem is exploding as we speak. Android is pushing interface changes regularly while Apple is staying the same with more features and shortcuts being added with each version of iOS. Microsoft is the new player with it's new Metro design philosophy. We can agree that not one of these players is going to completely dominate the market.
In my my opinion there needs to be evolution in the form of an abstraction, which separates the templating engine from the logic code. This would mean that the logic code consisting of core libraries, networks, login support, offline processing, notification management etc. can be shared between the different platforms, while another set of code and libraries do the rendering based on the different type of device platforms they encounter. It can look radically different, but at least since the core libraries are shared, the functionality can be made available to different platforms. It just needs to be written, accessed anywhere. Much akin to Java byte code philosophy. Let's say you come up with a new feature of tagging comments and putting them into a stack organized by good, bad tags etc. So you can abstract out that feature and put it in a core library. That way, a Windows Phone OS developer does not need to worry about that feature having bugs. All he needs to do is make sure the view code calls the library with the appropriate parameters.
Where does this leads to?
Ideally I would like to see a mixture of Adobe Flex and Parse. Flex allows developers to share code between different device platforms and that is something that really cuts the work of developers try to hunt for a bug which might be caused by the platform itself. Parse can do the shared code part very effectively although I am a bit skeptical the limit to which Parse can be stretched. Still the common code part (Network Management, Login Support etc.) is pretty cool and cuts down the boiler plate code a person needs to write for different devices.
Write Once, Access Anywhere. Any takers?