For a while now I've been mulling over an idea for a new type of social network, one which is actually social in nature and not just name. The key to my idea is harnessing the ad-hoc connectivity of wireless mobile devices to move the network out into the real physical world. It's a curious little idea which, like most curious little ideas, involves a lot unknowns which have to be worked out. The aim is to bring like-minded people together, be they fans of the same sports team, devotees of Opera, potential love interests or employees and their ideal employer. Oh, and once they've found each other it can recommend a restaurant all parties will enjoy (with a small referral fee, no doubt — even I know you need a revenue stream!)
Mind you, everyone seems to be jumping onto the social networking bandwagon at the moment, and just because I find my idea interesting, doesn't mean the great unwashed masses will. If I had more killer business instinct I'd be land-grabbing a chirpy domain name in all its ".com", ".org", ".co.jp" variants, and readying my bank manager to receive the millions as they start rolling in. As it is I'm happier just to get a basic prototype working, to see if it actually works as a concept.
As software increasingly moves on-line the consumer (we are told) benefits from the added flexibility. But the developer has to jump through more hoops just to get a basic prototype up and running. Time was when you compiled your binary and passed it around on a floppy to your friends. Now you have acquire a server, install and configure it, register a domain, pay for bandwidth...
It's a lot of messing just to test out an idea. Fortunately Google have come to the rescue with the launch of their Google App Engine, promising to get rid of the pain so I can concentrate on the code. But what am I giving up in return for this shortcut?
Microsoft patents one and zeros
A friend of mine was totally taken in by Virgle, one of this year's Google April Fools. It didn't help that he wasn't a fan of Richard Branson to begin with (despite the small debt the Pistols owe him) and is becoming increasingly weary of Google's ever expanding reach.
Since the birth of the modern PC prophets of doom have warned of dire consequences should 'X' storm off home, taking their ball with them — where the role of 'X' has been alternately filled by IBM, Intel, Microsoft, and (perhaps briefly) Netscape. That none of these companies ever showed any inkling of such actions did little to curb the paranoia, indeed within the developer community it grew powerful enough to propel Open Source to the position it has today.
Now it's Google's turn in the firing line, I suppose.
If I use proprietary software — without the capability to modify its source code — I am at the mercy of the vendor regarding the future course of that product. However, I am not at their mercy regarding the current version; Windows 95 will run long after being abandoned by Redmond, and (hardware permitting) I can still code in Commodore V2 BASIC a decade after the 'chicken head' breathed its last.
Not so for the brave new world of on-line services! If my web mail provider decides to pull the plug, goes bankrupt, or gets taken over, I'm totally at their mercy — not only can they take their own ball home, they can take all my balls home too! (Erm, yes, perhaps that could have been worded a little better! :)
Write once, run anywhere... well, somewhere... maybe
My 'bright idea' application is fully distributed, needing no web site. When it came to choosing a platform I went with Android rather than JavaME, simply because Android seemed to promise a faster route to getting a prototype up and running.
After a little bit of experimental coding I began to wonder if the app might benefit from an optional web interface, allowing the luxury of a full sized screen and keyboard when editing data. Naturally I don't want to waste time finding and configuring a host, so when Google's own new 'bright idea' arrived at just the right time, it seemed like an ideal solution.
But after just spending a lunch hour with my friend kicking off about how Google where taking over the galaxy (literally!) I began to reflect on the long term consequences of that decision. What if my little side-project actually has some merit (big 'if'!), will I be too firmly dependent on one technology provider? What if Google pull their App Engine service, or sell it off to someone else?
And this prompted a second question: wasn't the internet supposed to save us from this kind of platform dependent hell? Weren't we supposed to have standards for our code (like Java) and our data (like XML) which would allow us to run our stuff wherever we wanted, and with whatever data we wanted? Why, then, are we continually being asked pick between incompatible platforms? It was bad enough when YahooIM, AIM, ICQ and MSN wouldn't talk to each other, but now we have MySpace, FaceBook and Bebo, various photo sharing sites, various music sites (and formats!) And in Java we have Android, JavaME and (soon) JavaFX Mobile in the mobile space alone, Swing vs SWT on the desktop, and I've lost track of how many rival technologies make up the JavaEE space.
As for my curious little idea... well I'm going with Google App Engine anyway. I have to be realistic — it's been hard enough over recent months to find the time to devote to this project, so unless someone wants to pay me full time to develop it (anyone?) I have to recognise there's a good chance it won't get finished, multiplied by a good chance it mightn't catch on anyway. And so, at the risk of disappointing my bank manager, it's probably safe to go with GAE.
So for me the dilemma is averted — but if we could just get back to our dream of a network based on open standards, then it would never have arisen in the first place...!
Hmm, I'm being naive again, aren't I...? :)