Facebook’s platform sucks

I’ve been hearing a lot about the new Facebook application platform lately, so I decided to finally check it out over Thanksgiving weekend. I thought it might be fun to port one of the schmedley schmidgets (widgets) into a Facebook “application”. Turns out, it was definitely not fun. In fact, it was a weekend filled with frustration.

I decided to go with something really simple, so the schmidget I chose was the “sticky note”. I was inspired by J-Squared Media‘s Sticky Note application. Don’t get me wrong – I wasn’t trying to build a better mousetrap – I actually admire this company and their product. I learned about them through TechStars this past summer and have been following their progress, and am amazed at their success in monetizing a Facebook application/widget. So my journey here was really a proof-of-concept – can a schmedley schmidget be ported to Facebook?

After I immersed myself in Facebook’s developer documentation I set about downloading the example applications, reading FAQs, looking at other examples contributed by other developers, etc., etc. I then made my stand-alone widget. Basically my widget does two things – 1. lets the user change the color of the “sticky” and “save” that preference, and – 2. lets the user change the text on the “sticky” and “save” that as well. The saving is done by generating a very simple cookie with the text and color preferences in it, so that when a user visits the page w/ the sticky note again, it populates those preferences. The great part of this approach is that no server-side coding is needed and we have a very simple strictly client-side app. I ran the stand-alone widget in my local environment and everything went according to plan. I then uploaded it to my development server, and all worked fine there as well. Now, let’s go put this sucker on Facebook…

Strike One – Turns out that if you want your application to be able to be loaded on to a user’s profile page, you MUST construct your application using Facebook’s own proprietary markup language – FBML. And, if you want it to “do” anything, you’ll also have to convert all of your JavaScript to Facebook’s proprietary format as well – FBJS. I quickly decided that I didn’t feel like doing that, and opted to go with the alternative that they offer – run my app “as is” within their environment, but NOT on a user’s profile page. This method involves your app being displayed in an iframe on its own completely separate “canvas” page. So now, I’ve probably just cut my app’s potential exposure to Facebook’s gigantic user-base by more than half.

Strike Two – I get my sticky all loaded up in an iframe on the “canvas” page and you can probably guess what happens next. I can get the app to read from my stored cookie just fine, but I can’t get it to STORE any settings when i change the color or text at all. As you all know, any item presented in an iframe that is coming from a different URL is considered “3rd party” and is usually restricted from creating/writing cookies by most browsers. And asking users to ease up on their security preferences is NOT an option. I tried all sorts of ways to accomplish writing to that cookie and just couldn’t do it. I tried passing a value to a PHP script on my server that would write the cookie. I tried loading a “web bug” image with a URL containing a query string to that PHP file on my server. Absolutely nothing worked. It seems that Facebook’s “platform” blocks all of your app’s communication w/ the outside world once loaded in the page. It did READ from the cookie just fine. So now I’ve got a Facebook application that doesn’t “do” anything.

Strike Three – It seems to me that the main (and only) interaction between the user and the app is when it is being initially created/configured. And once those settings have been determined – that’s it. You’ve got a static finished product. The other sticky note I mentioned earlier is a perfect example. When you go to add it to your profile, you start on a configuration page (which is a flash application), where you choose the text that goes on your sticky note and the color. The application then generates an image of your sticky note that resides on your profile page. You can’t change it – all you can do is delete it and create another one. I find it hard to call something an “application” if you can’t interact with it.

I’m sure there are SOME cool things you can do if you want to take the time to learn Facebook’s proprietary languages and really spend some time digging into their API to access their large chunks of data. But if you can’t “mash up” that data with other data from the outside world (or use the outside world’s data exclusively) and execute changes to the way that data is presented to the user dynamically – then what good is it?

I want to live in a world where we can use widgets anywhere we want, created with open-source languages (XHTML, XML, CSS, JavaScript) and making progress towards an evolving standard. This way – EVERYBODY wins. For those of you that agree with me, I’ll see you over at Google’s OpenSocial.


* some interesting stats and related links…
     •  of the 5,000 apps on Facebook, 87% of the usage goes to the top 84
     •  of those 84, only 45 applications have more than 100,000 active users
Good News, Bad News about Facebook Application Market: Long Tail Rules
another insightful article about Facebook applications…
The Children’s Hour: Facebook Apps Are for Toddlers (There, We Said It)


One thought on “Facebook’s platform sucks

  1. Couldn’t agree more, and well said.

    It’s a shame the platform and API suffer so much from: proprietary lock-down, yet another mark-up language(s), confusing documentation full of references to deprecated functionality, over-sparse wiki pages that offer not much more than ‘clues’ as to what path to follow and demo’s that make references to the wrong api’s. These past couple of days I have been attempting to learn how to develop fbml apps for a fan page, and thus far it has been quite a soul destroying experience.

    It would be nice if they could spend some of their purported billions to publish some professional, extensive documentation.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>