Nobody likes a one-sided race: our competitive spirits take a beating at the unfairness of it all. Just when it looked like Facebook was going to single-handedly make a break for the cookie jar and steal all the cookies, competition popped up in the form of the OpenSocial Application Programming Interface (API). It’s important to take a moment to understand what that means to you, the would-be Facebook developer, so that you can feel secure in your decision to write apps for this Platform.
Information about individual people and their relationships to each other
Ability to post and view updates on what people are doing
A simple key-value data store to allow server-free stateful applications
It's still very early days in this battle and it's very hard to predict the outcome. As of the time this book was written, there are over 20 sites with OpenSocial sandboxes or application containers enabled, including Orkut, hi5, Ning, and Plaxo, giving some of their users the ability to try OpenSocial apps in the context of their sites. Anecdotal evidence from leading app developers like Slide, RockYou, and iLike says that porting apps from Facebook Platform to OpenSocial is relatively trivial, and suggests that you can easily start with one and move to the other. Historical precedent suggests that some open platforms have a lot of success (Firefox has stolen a big share of the market away from Internet Explorer), while a number of closed systems have done even better (Apple's complete domination of the MP3 market is based largely on iTunes and iPods being completely closed).
A set in FBML and FBJS for use in Facebook
A possible fourth set adapted for use on mobile devices, such as Apple’s iPhone
Calling Facebook Platform “mature” seems odd given how young it is, but it will always be nine months older than OpenSocial. Since the number of people who can access OpenSocial containers is currently smaller than the number of Facebook users, as of September 2008, and since Facebook’s social graph will make it easier for your application to pick up a larger user base in less time, you should start by building a Facebook version—but make sure to architect your backend services so that they are loosely joined to the frontend and can be used easily by an OpenSocial version later (we’ll cover this in detail in Chapter 4).