“OMG, I’m a server!”: widgets and the exciting future of mobiles

I’ve been doing my fair share of traveling lately. I went to the W3C TPAC in Boston, which was great, and I just got back from vacation in Tropical North Queensland (Port Douglas) a few days ago. I went whitewater rafting, and snorkeling in the (sadly dyingGreat Barrier Reef, got to swim with a turtle, and some sharks.

While I was in Boston for the TPAC, I bought myself an IPod touch and a Nokia N95. The first thing I did when I got my iPod was to jail break it. I have to say, the iPod touch is simply awesome… however, I wont go into a rant because I don’t want to expose myself too much as an Apple fanboy:) The first thing that struck me as I was navigating the list of apps to install on the jail broken iPhone was the availability of the Apache Web Server and PHP. When I saw that, I instantly thought “OMG! this changes everything: I am a server!”. Sure enough, I installed them and they worked. I got my friends from Australia to log onto my IPod – very cool! It was only a few weeks later that I heard that Nokia was also going to release a phone with Apache, PHP, and MySQL (APM) which I’m keen to try out on my N95. I think this is a significant development while we wait for the standardization and eventual implementation of HTML5 (which will provide similar functionality).

Putting aside all security and privacy concerns for a minute, I think the idea of everyone now being a web server is a very exciting and disruptive innovation. Imagine a widgets ecosystem that intertwines phones and desktops and integrate ideas from social networking and the unique aspects of the mobile in a single container (widgets).

I don’t know what Nokia is going to do with their APM phones (and I am sure that Apple Iphone/IPod and Google Android will both feature web servers really soon), but here is a simple future scenario: I buy a new phone with the APM capability. When I connect the phone to the internet, people can access the phone via its IP address (which kinda sucks, but fixable… more on this later). Pre-installed with the phone is a widget engine, which allows the user to either manually install widgets or use pre-installed widgets. The widget engine provides an admin interface, accessible only via, say, “http://widgetengine/” or something, which allows me to add/customize/remove widgets. Widgets in this contexts are little PHP apps, packaged to conform with the widgets 1.0 spec. Lets says the default widget that ships with the phone is a Nokia-build one that shows some info about the phone, and generates a photo gallery of the pictures stored on the device.  Although impressive, is not really of much use to me because everyone I care about is on Facebook ( or some OpenSocial network).

Given that the phone has a widget engine that runs on top of the server, a developer could create a Facebook widget that gathers all the phone numbers and details from my facebook friends list and packages them into a widgets. When the widget is installed, all those phone numbers and details get stored into the MySQL database. I can then ask the widget to either SMS or simply message, via Facebook, all the preferred contacts to let them know that my phone server is up. Better still, the widget, via PHP, can monitor the phone to see when it is assigned an IP address, and automatically connect to Facebook to let my contacts know that I am online. From there, my contacts can check out, for example, photos that I have just taken on my phone or other things the widget may allow viewers to do.

The things that I would want to share as a user (my profile: things that define me publicly as an individual and associate me as part of a group) and some simple app ideas:

  • My location (exact (gps) or derived (eg. brisbane) or abstract (eg. the office))
    • Apps: Where am I now? Where I’ve been (recently, travelling, etc)? What exercise path did I take (and times, calories burnt)?
  • My pictures (sortable, in sets, searchable)
    • Apps: my picture gallery; my picture gallery and with pictures taken from similar location (eg. mix locally stored pictures with flickr)
  • My music (what I’ve got on my device, what I am listening to right now)
    • App: my music and music people around me are listening to?
  • My details (maybe my social wants and needs. link to my blog online)
    • App: a dating widget? Syndication of my blog combined with my locally stored pictures?

The effect of these apps is very interesting because it means that I can bypass services such as flickr, or I can integrate both flickr and my phone. I can also merge the means of communication with my contacts, via SMS or the web.

These applications require additional infrastructure to connect me to other users:

  • Global peer-to-peer infrastructure: when my phone connects to the internet, I want my contacts to know about it!
  • Local peer-to-peer infrastructure: when my phone connects to the internet in this place, let those near me know: eg, for playing location-based games, or other multiplayer games; or, for example, for letting people know at this place that I’ve arrived.

This also requires a place where phone widgets are distributed by developers and scrutinized by the community for security and quality.

The future looks pretty nice if AMP enabled phones and services take off…. and if the security and privacy issues are handled with care.