Are you based out of India and need an idea for a technology start-up? Try thinking of two of the biggest technology buzzwords of the day and mash ’em up together. Social + Cloud!
Back in the ol’ days when system programming and desktop applications were hot, people were trying to create applications that could run on more than one OS. There was a sprouting of libraries, proprietary and open source, that promised abstraction from the operating system internals. Right now, if you think of one thing where the a lot of modern applications run, the answer would be — a social network. Facebook is obviously the dominant player here but by 2015, it will have at least one formidable competitor. Developers wouldn’t want their app to be stuck on one of these.
That’s where developing to a Social Network Abstraction Library (SNAiL?) would help. Especially if you’re a vendor of multiple applications. The problem is that by itself, SNAiL is only good for vendors of multiple applications. It doesn’t do a whole lot for individual application developers. Now, creating a social network app also means that it’s a multi-user, network-based application. That’s where the “Cloud” part of the equation comes. If SNAiL is available as a service like Google App Engine, wherein provisioning, elasticity and monitoring are no longer the developer’s headache, we have a win. Should there be a choice of cloud provider? For an application developer, one cloud is as good as another from a functional point of view. The main issues are with the provisioning and monitoring of those clouds, availability SLAs and pricing. If the choice is given as a SLA-pricing trade-off without naming names, it’s possible to sell options for multiple cloud providers. Cloud abstraction and Social Network abstraction together might make it a lot more appealing for smaller development houses.
One of the reasons why I mentioned Operating Systems and OS abstraction libraries is also to look from the successes and failures from that era. If you’re looking to build a multi-OS application these days, you’d surely evaluate Java, even if you give up on it later. Why is Java so ubiquitous as a choice for platform independence? Mainly because it went all-in when it came to providing an OS independent solution. It wasn’t just a set of APIs that abstracted other APIs. It was a new language, a new virtual OS (I don’t see much “machine” in JVM. Looks more like an OS layer to me), a complete set of development libraries that were uniformly available across OSes, and even a new way of packaging, distribution and deployment of apps.
Similarly, our Social-Cloud App mashup needs to go all-in for simplifying and standardising the whole development and distribution process for the applications its meant to run. That’s where I’m unable to answer one question: should it provide the ability to create apps for the browser and for the leading mobile/tablet OSes?