It’s been a while since Facebook introduced the concept of “applications” to their API, providing developers a very flexible set of tools to create and add features to Facebook itself. Applications on Facebook are best described as “widgets”, since they offer functionality that’s often provided by widgets on other sites, so why Facebook chose a different name is somewhat peculiar.
I’m not going to debate the merits of these applications, or whether they’re leading Facebook down the road to a MySpace-hell dominated by personalized profiles that are an eyesore (there’s already enough discourse on that subject, both on Facebook and outside of it), but rather I’ll take a look at this from a developer’s point of view. What is the potential for developing an application for Facebook, and at the same time, what are the pitfalls?
Pro: Relatively easy to develop
Facebook’s API is easy to work with, especially if you have experience with PHP. One of the official client libraries is written in PHP, and since it’s intended to be used for web applications, this makes perfect sense. Using it to develop an application should therefore be a relatively pain-free process.
While the documentation isn’t always complete, there’s a nice Wiki that covers additional details, and together, these two should allow you to overcome most problems you may run into during development.
Overall, the abilities offered by the API coupled with its ease of use make development relatively straightforward.
Pro: Access to a large user base
Facebook’s current user base of 30 million is rapidly growing. It’s already doubled since the start of this year, and continues to grow at close to 3% per week. If that rate continues, they’ll double again by the end of this year. But perhaps the most amazing fact here is the dedication of Facebook’s user base. It’s one thing to have millions and millions of users, with only a small percentage that are actually active. This isn’t the case with Facebook, which sees over half of its users log in daily. That’s an astonishing statistic by any measure, and even more so when you consider Facebook large and fast-growing user base.
Thus, developing an application for Facebook gives it access to a large, and more importantly, active user base. This gives it a huge potential to grow virally, that is, from person-to-person. When someone adds your application to their profile or account, it will show up as a News Feed item. This means that anyone who has this user as a friend will see a message in their News Feed about this user adding your application. The idea is that they might get interested, click on your application, and then add it to their profile as well, continuing the viral spread cycle.
They can, of course, also find your application by doing a search – if you’re lucky enough to get your application listed in Facebook’s official application directory – more on that later.
Con: Cost and scalability
I think Marc Andreessen (of Netscape fame) put it best when referring to the popularity of an application on Facebook, namely that success kills
. (The rest of his article, while lengthy, is an excellent read and I suggest you take the time to read it) Marc gives the example of the iLike application, one of the first, which experienced an insane growth in the early stages. During that time, they grew by 300,000 per day, eating up all of their capacity to the point where they had to buy new servers on a daily basis.
While a company such as iLike, with sources of revenue, may be able to shoulder this kind of burden, it’s quite unlikely that a lone developer would. This creates a sort of Catch-22 – you want your application to become popular, so that you could hopefully monetize it. However, in order for that to happen, you need plenty of resources – which require money.
If all you’re looking to create is a neat little application for you and your friends, or if your application doesn’t really create a huge load on your end, you’ll probably be alright. But be aware that the same dedication and large user base of Facebook that can be so excellent for spreading an application, can be the same environment that quickly overruns your capacity to support your creation.
Con: Monetization
While we’re talking about monetization, it’s worthwhile to point out that if this is your main concern, it’s probably best not to pursue Facebook application development. Since support costs can be high for Facebook applications, attempting to derive a successful business model on this will most likely be met with limited success, if any. Some have called for Facebook to start a revenue sharing program, but this is unlikely, considering Facebook’s uncertain financial future – even if the IPO rumours turn out to be true. (Which they likely will be)
A revenue sharing program, however, would be fair, since by creating a successful application you are adding value to Facebook’s site, and directly increasing their revenues by nature of increasing the time a user spends on the site. I would not, however, hold out on this to develop.
This doesn’t mean that application development is limited to those who just want to create something “for fun” or to add something to their portfolio. On the contrary, I believe the best opportunities the Facebook platform affords is to other businesses based on web services. By utilizing Facebook, they can create applications that promote their site, or tie into their own API, thus using Facebook’s large user base as a source for new customers, users, and thus revenue. Indeed, the first applications developed were made by companies with this very intent. Other sites could follow this model.
Other Cons
Some believe that the viral nature of Facebook apps has been overstated, and that they now don’t spread as easily.
Another, more serious aspect, relates to something I alluded to when I commented on Facebook’s introduction of their Marketplace, a classified-listing type service. It seems that in the TOS of the Facebook Platform, they reserve the right to make a similar application to yours, without obligation to you. I don’t know if this is standard legalese in a TOS for API usage, but certainly it can be construed to be something more sinister, and would deny you any right you had to something you’d created. Of course, if Facebook did do something like this, I’m sure there would be an uproar from the community, with Digg fanning the flames, of course.
Privacy, as always
Privacy is also a concern, as it now not only falls on the user to determine what settings to implement, but also whether developers will respect the TOS of the Facebook Platform. The documentation clearly outlines what user (and user’s friend) info can be stored, but there is nothing to stop a developer from storing more of that information, either for the purposes of adding another feature to their application, or for malicious intent. There have already been concerns about this with popular applications.
The issue of privacy here is that when you sign into a Facebook application, it basically has access to all of the friend info that you would – after all, it probably needs this to perform whatever function it does. Though you may have consented to allow this information to be used, your friends may not have explicitly done this, and may not want their information to be used by 3rd party developers.
Though users can opt-out of participation in the Facebook Platform altogether (and thus prevent 3rd party developers having access), I’m guessing that not everyone or even a majority know about this feature. The privacy settings of Facebook have grown almost as much as the site itself, with settings divided amongst sections and sub-sections, creating somewhat of a convoluted mess. The best precaution to all of this, of course, is not posting anything on the Internet that you wouldn’t want to be known in public. This applies not only to Facebook but other sites as well; I only emphasize this for Facebook because of the notoriety its obtained from such incidents.
Great and unique article. Thanks for this.
It helped me a lot in writing an article Writing Facebook Applications in .NET
Writing Facebook Applications in .NET With Facebook.NET