16 Nov, 2007

Building Platforms vs Building Applications - (Part 1 of 3)

Posted by bhavin.t

Platforms are in these days and everyone who has a half-decent half-popular Internet application is providing APIs and plugin frameworks to make the application extensible. I have been wanting to pen down my thoughts on the advantages of building a platform as opposed to a monolithic application, and the thought process required for the same, since a while now. Some spare time on a weekend, and this article grew to over 6000 words. So I decided to divide it into a multi-part post to make it an easier read.

Index

This first part will cover the advantages of building a platform as compared to an application. Check the index above for links to the rest of this article.

What is a Platform?

Firstly, lets cover, briefly - what exactly is a Platform vis-a-vis an Application. Marc Andressons blog post does a good job of introducing platforms, and categorizing the types of platforms that exist today. In a nutshell however, any application, which provides ways to -

  1. Customize the experience of the application
  2. Extend the functionality of the application
  3. Pull data out of the application
  4. Interact with the application through a programming interface… is a Platform

Advantages of creating a platform

A while ago I had written an article (within my internal company blog) on how in the Web 2.0 era, extensibility and collaborativeness are essential for the success of an application. People wonder about the run-away success of popular Web 2.0 brands such as digg, flickr, facebook, youtube etc and how they achieved such momentum within such a short span of time. One of the fundamental reasons was that all these applications were collaborative by nature ie they made it natural for a user to “want to” - scratch that - “need to” invite other users in order to reap greater benefits from the application. Extensibility in some sense provides overlapping as well as distinct advantages to collaborativeness.

So lets take a look why one should build platforms vis-a-vis stand-alone applications.

Well … to start with - everyone is doing it. And yea, the geek in you wants to :). However building a platform has many commercial advantages apart from just being able to brag about it at the next BarCamp. Here is a braindump of some of them, in no particular order -

Better Functionality
This is by far the most obvious benefit. By building an extensible application you enable others to extend the functionality of your application in ways you didnt think of, or didnt have resources for. This results in more features, developed at a faster pace. There are thousands of applications that currently extend facebooks functionality. I doubt Mark Zuckerberg and his team could have even thought of those many features, both extensive and creative, let alone build them.

Free resources
There is such a thing as free labor. Extensible applications can leverage the time and resources of hundreds and thousands of curious minds, evangelists, organizations, or just geeky users, creating a large free workforce pool. The commercial value of such development can sometimes even outweigh the capital investment by the original company. For instance, the countless plugins built by the community for SalesForce, Atlassian, Facebook etc represent millions of dollars of free development for the benefit of the community as well as the company.

Viral effect / Increased adoption / Greater Momentum
There is no denying the logic that the more people that are invested in an application, the greater the momentum behind it. Microsoft became the behemoth that it is today, primarily because it built a platform and engaged thousands of companies worldwide to create applications for it, thus automatically tying their success to its own success. The more people that are building / customizing your platform, the more people will depend on its adoption, the more people will talk about it, the more people will publicise it, and the more people will propel its growth.

Greater stickitivity from the developer community
You generally feel closer to something you have built yourself. Extensible applications create a sticky following, of individuals who have invested time and effort behind the platform. They will generally not migrate over to competition very easily for the fear of having to start from scratch.

Greater stickitivity from the user community
With a larger number of features ongoingly introduced on your platform, end-users who begin using these extensions / plug-ins also increase their investment in your application, and thus their stickivity. For instance, anyone who begins using various facebook extensions (funwall, slideshare et al), as a user, has invested time in learning it, using it, and has accumulated personal information within it. So a competitor application offering similar functionality would not be sufficient incentive for a user to move their loyalty, given their investment into the incumbant.

Feeling of Ownership and Contribution
A Platform gives users / developers the ability to make a difference, to your application - strengthening their bond / feeling of ownership towards the Platform. You always generate a closer bond towards something you have customized. Remember the good ol’ samurai / nintendo video-gaming days when you spent hours designing and playing custom tracks for excite-bike?

Additionally, everyone likes being acknowledged and recognised by their peer group. Platforms provide opportunities to the ever-growing population of geeks and techies, and even the regular users, to contribute, and hence opens a window for conversation and recognition.

This sums up a basic list of advantages of creating a Platform as opposed to building a closed application.

Click on any of the links below to read further on how one can go about building a platform -

PART II - How to go about building a Platform - Techniques and Concepts »
PART III - Principles to keep in mind when designing a Platform »

Like it? Share it: del.icio.us Digg Reddit Facebook Technorati Google StumbleUpon Yahoo

Category : TechTalk


No comments yet.


Leave a comment

(required)

(required)


Note: Enter the text displayed in the image above for your comment to be posted.