The Personal Platform

Posted by in Cross Platform, Predictions, Web Services

As he departs from the role of Chief Software Architect at Microsoft, Ray Ozzie has published a memo giving his vision of the future of personal computing. Inspired by this and other news related to cross platform development, I’ve written this article to share my own thoughts.

The day will soon come when we mobile app developers won’t be able to think of our domain as smartphones alone. We’ll need to think of phones, tablets, TVs, and yes, even the desktop. We will no longer be able to fix the platform to the device — the platform will need to follow the user wherever he may be. That means multiple screen types, and therefore GUI variants, and multiple locations.

To put it another way, instead of the ‘Mobile’ in ‘Mobile Application Developer’ meaning ‘cell phone’, ‘Mobile’ needs to describe applications that can themselves move across devices and platforms, following their owner. And they need to provide services that are of particular value to those on the move. These ideas are closely related.

So, in practical terms this means we’ll need to do two things:

  1. create flexible interfaces:
    • strictly separate data and presentation
    • use GUI technology that allows us to easily adjust the layout and components to give the user a good and appropriate experience on all screens.
    • use content management systems that let us efficiently pull the right version of the content for the current screen
  2. put the applications and data in the cloud, so that they follow the user everywhere. This doesn’t mean killing off locally installed apps, but does mean that synchronization is an essential component.

The day of ultimate device convergence is coming. The goal is to have devices ubiquitous and invisible. The screen closest to the user should be capable of offering him all his apps and data, immediately and consistently.

So what cross platform technology is there? On phones, JavaME is as good as dead — it just doesn’t make sense anymore. Flash is (just about) banned from the major player. Microsoft is de-prioritizing Silverlight. Adobe AIR is good, and is a contender, but it’s a closed platform.

More and more, I’m convinced that the new web standards are the only hope. The new features in HTML5, CSS3 and Javascript and brilliant, and will bring them closer to standalone apps. It’s also just about the only thing the major players — Apple, Google, and Microsoft — agree on. Each platform does already, or will, offer a way of embedding the new web apps within a local container. But the innards will be based on the web tech.

The new web standards offer all the features we need to create truly cross-platform and flexible apps. All we need now is for the vendors to provide great tools and APIs so we don’t need to delve into HTML, CSS and Javascript directly.

Some of the highlights:

HTML5:

  • canvas element
  • drag-n-drop
  • video and audio elements
  • local storage
  • web workers
  • web sockets
  • inline SVG and MathML

CSS3:

  • animations
  • transformations
  • opacity
  • tables and columns
  • multiple backgrounds

Here are some demos:
http://www.apple.com/html5/
http://html5demos.com/
http://www.hongkiat.com/blog/48-excellent-html5-demos/