A couple of weeks ago I came back from a great trip to visit my very talented and hip team at the Microsoft Israel Development Center in Tel Aviv. Excitement was running high as we geared up for the launch of on{X}, which I can now talk about, as it went live today. Here’s the “trailer”:
Eran, the team lead, already wrote a nice and detailed blog post for the website talking about on{X}’s capabilities, so probably I should just stick with the link. I can’t resist reiterating some of his points, though, and giving a bit of my own color.
Sometime in the middle of the last decade, it became clear to everyone that mobile phones aren’t appliances or pieces of single-function consumer electronics, but rather are little personal computers— small enough to keep in your pocket, and with just enough battery to stay on the whole day. I think that because of a kind of metaphor hysteresis, the implications of this still haven’t fully sunk in; we still call this device a “phone”, which is the same name we give to the fixed-function radio handsets some of us still have docked in a cradle on the kitchen counter… which are in turn nothing but “cordless” versions of their midcentury forebears, which in turn consisted of nothing but a speaker, a microphone, some wire, and some kind of dialing apparatus encased in a Bakelite shell. Even that silly word we use in America, “wireless”, sounds like more or less a synonym for “cordless”.
So we now agree that it’s not really a phone, but rather a telephony-capable pocket computer. To call it a “phone” is an unnatural act of metonymy akin to calling a toolchest a screwdriver. Think of how funny it sounds to say “my phone comes with a phone app preinstalled”.
One oddity about this pocket computer idea is that unlike the bigger computers those of us who like to hack have grown up enjoying, smartphones still inherit much of the fixed-function thinking that pervades consumer electronics. Deep in the phone’s OS is a kind of dispatching or command-and-control system, a switchboard, that takes all of those wonderful sensors and capabilities and organizes them into rigidly predefined appliance-like behaviors: when the always-on radio detects an incoming phone call, launch the phone app. When there’s an incoming SMS, launch the SMS app. You don’t need to know that there’s an app for that, because the phone itself does.
What if you could open up that switchboard on your own device and rewire it to do whatever you want? With all of those sensors and capabilities, and all the power of the Internet, one should be able to do a lot more than perform fixed phone-like functions and run apps.
This is especially interesting when it involves the automation of actions based on events on the phone or in the world, which one could call “push” or “reactive” behaviors. (This is to distinguish them from “pull” behaviors, which are characterized by beginning with an explicit user action with intent— for these cases, the app model works well.) We think there’s great untapped potential in push and reactive programming. The sample scenarios and scripts we’ve put on the site begin to explore the possibilities, but we imagine that the developer community will come up with a much, much larger set. That’s why we didn’t restrict on{X} to prescripted rules, but rather made it possible for anyone with JavaScript skills to hack a new behavior. This thinking (and of course our choice of scripting language) is very much inspired by node.js.
The most exciting thing about this project, for me, will be seeing what people do with this wide-open field. Makers, have at it!
In the meantime, we’ll be busily adding capabilities and sharing ideas.
3am update: apparently we’ve just made AppBrain’s top 10 hottest Android apps :)
4 Responses to on{X}