Developers See A Welcoming Facebook

Updated: July 11, 2007

The latest version of the Facebook Platform, announced on May 24 at the Facebook Developer Conference delivers on both counts. It includes a well specified set of APIs, and access to a ready-made audience looking for applications that take advantage of an existing social network. "The Facebook platform is a set of web services that allow people to consume data as well as build apps for use by the Facebook community on Facebook," said David Fetterman, Lead Software Engineer for the Facebook Platform.

While other social networking sites like MySpace, Bebo and Windows Live Spaces already allow developers to build widgets that provide a limited amount of functionality, Facebook has gone much further in providing access to Facebook's core functionality and social networking features. "The idea is to make it as easy as possible for developers to build anything that we ourselves could create at Facebook."

Although the Facebook Platform draws the line at allowing you to completely eliminate the Facebook look and feel and build your own social networks like Ning, it is a platform in the true sense of the word. In fact, not only can developers extend existing apps such as Facebook's photo album or calendar they can actually replace them outright with something that works differently or better.

For the most part, Facebook has built its platform on well-established and easily understood web standards so developers won't have to reinvent the wheel when writing new applications or porting existing applications to the Facebook platform. In fact, developing for the Facebook Platform so resembles standard web development that developers will be up and running very quickly.

The Facebook platform includes a REST web services API that allows third party applications to programmatically interact with Facebook's systems at a very deep level.

Facebook's database query language, called Facebook Query Language (FQL) is an SQL-like language that will be immediately familiar to anyone who has ever worked with a standard relational database, while its text markup language, called Facebook Markup Language (FBML) is based on HTML.

Facebook has removed support for JavaScript for security reasons but has added new features that provide access to Facebook features, data, and even look and feel. You'll find familiar tags such as blockquote and table along with custom Facebook tags like fb:create-button, fb:friend-selector and fb:if-is-friends-with-viewer that illuminate the fact that Facebook is a social network. In fact, the Facebook platform could turn out to be a great way for developers to add social networking features to existing applications because they are already baked in.
Facebook's crown jewels, its data store, which includes user profile information and data from Facebook's own apps such as photos and calendar are fully accessible to developers. "You get a social network for free instead of having to roll your own," said Fetterman.

Facebook applications differ from MySpace widgets in one other crucial way. Where MySpace has been shutting down third-party widgets that encroach upon functions it would rather own, Fetterman is adamant that he'd be happy even if all of Facebook's applications were replaced.

Developing on Facebook

According to Fetterman, building a Facebook app is just an extension of basic web programming principles that require the display, logic, and data to be maintained separately. For the most part, developers can use the same HTML they have already developed. Since the app runs on the third-party server and not on Facebook proper, you maintain you own user id key identifier and business logic. Porting an app can be as simple as adapting your HTML to FBML by stripping out any JavaScript and adding Facebook-specific tags to support social networking.
Facebook is not alone in going beyond mere web applications by turning its entire system into a programmable platform. Google in particular has been quite aggressive in publishing APIs and providing deep hooks into its underlying infrastructure. However, when compared to other social networking sites like MySpace and its widget play, the degree to which you can integrate your own apps with Facebook is unprecedented. Not only can your apps consume data from Facebook, they can run anywhere on the Facebook canvas. So tightly weaved into the Facebook experience are third-party apps, that it is difficult to tell where Facebook ends and third-party apps begin.
No matter how well-programmed your web 2.0 app is, its no good unless people are using it. Facebook's network effect is of particular interest to developers. Not only does Facebook provide an applications directory where users can browse through and add third-party apps with a click, it also allows applications to spread in a more viral manner. Added apps show up in a news stream on users profiles and it is simple to add it to your own.

In the short time since Facebook introduced the platform, there has been an explosion of third-party applications -- a testament to Fetterman's claims of ease of porting. Developers range from Amazon and Microsoft to smaller companies like Slide, Box.net, and iLike alongside social media sites like Digg, Flickr, and Last.FM. Increasingly, Facebook is beginning to look almost like an alternate web. Also popular are unforseen social apps such as X Me that let you add "actions," such as think, pinch, or punch to your profile. Or, (fluff)Friends, which brings the tamagotchi craze to the web by letting you add a virtual pet to your profile. The Washington Post provides a good example of how social networking can enhance content. Instead of just providing article links (so very web 1.0) it's "Compass" feature polls users' political opinions and shares them with their Facebook friends who are also invited to participate. Results are displayed on a map that is available to your network of friends. Similarly, Flixster lets you add your own movie ratings and reviews to your profile and share them with friends.

Along with this, another important community has emerged--developers willing to share client libraries and code samples.

Some of the smaller developers were unprepared for the hit on their servers when their apps came into contact with the Facebook community. The most popular applications saw as many as 850,000 users on day one. We'd like to see Facebook offer the ability to host apps on Facebook's own servers and Fettermen says they are looking at ways to address this. In the meantime, interested developers may want to investigate third-party hosting solutions such as Amazon's S3.