I’ve been quiet lately. One of the reasons is that I’ve been working hard on a facebook application, which we “unveiled” on Wednesday. Now it’s live (although still alpha), so I have a bit of time to talk about it.
Why build a facebook app?
We’re a technology company. When someone announces a new platform for application development, we naturally poke around it and try to figure it out. In practice, we do that for every platform we can get our hands on. (Note to Apple: when iPhones work in Canada, we’ll poke around with that too!). For Facebook, it seemed clear that in addition to the groundswell of interest from all kinds of quarters, that just reading the docs wasn’t going to truly teach us what the F8 platform is like. And I’m not just saying that because the docs didn’t match the code! A social platform is different, and requires real users using a real app to teach the developer what works and what doesn’t.
So we decided that we’d build the best facebook app we could in a relatively short amount of time. Not a silly little amount of time, because it’s clear what that leads to — lots and lots of mostly trivial, ugly, and useless apps. I happened to have a great engineer, a great product designer and a super-talented graphic designer on hand, so we tried to raise the bar (and then we got a great marketer to help out as well).
What kind of app to build
Figuring out what app fits in a platform is a messy process, at least in our hands. We wanted something that leveraged the social graph which is central to the platform, but we wanted something that provided real value to users. After a fun process of ideation and triage, we zeroed in on an idea which started off as the “anti-calendar”. While online calendars focus on when you, the user, have stuff that you have to do, the anti-calendar tells your friends when you are available. That core idea evolved into what we call Up4, which aims to tell your friends that you’d be interested in (“up for”, get it?) something, sometime, somewhere. If you have a Facebook account, check out the app. If you don’t, here’s a screenshot:
There’s lots more to say about what apps work in something like Facebook, but the margins on this page are too small.
How was the app-building experience?
Building the app was a fascinating and frustrating exercise.
From a pure technology point of view, the infrastructure “kinda works” (we used Django as the back-end, using the really nice facebook.py module as the bridge). We hit some simple bugs in the facebook module, but as it was open source, we were able to fix it and get the patches committed. We hits bugs in Facebook, and had to resign ourselves to “filing” bugs and then working around them. The biggest beef I have with F8 is that they play fast and loose with standards, meaning that your expectations about HTTP & REST, HTML, CSS and JavaScript have to be checked at the door, since what ends up served to the user’s browser will be a sometimes mysterious transformation of what your server published. It’s clear that Facebook both has to deal with a significant security threat, and that it’s still early in the development of F8.
There was equal fascination and frustration on the product design front. For most of the time we were building the app, using JavaScript outside of iframes was verboten. Iframes are incredibly limiting at well, and naturally making things work in IE also limits what we can do. So while our instinct was to build all kinds of ajaxy goodness, the technical limitations, combined with the general framework of a facebook app forced all kinds of compromises. The very real limits on data sharing and the like also made “obvious” features impossible to implement. I’m sure many of those limitations will fade over time as the Facebook developers figure out how to loosen the restrictions without relaxing security, but for now, it still feels very straight-jackety.
As an application developer, there are a lot of gaps that are both obvious and hard for anyone other than Facebook to fix. For example, testing a social application requires considering what people with different relationships interact with the app. Testing that requires multiple identities. But the terms of service say that you can’t create multiple identities. Luckily, we have a bunch of people on staff with facebook accounts! It’s also quite hard to build a test harness which lets you simulate how your app will behave in facebook without building a facebook clone (which was a bit out of scope!). The list goes on.
The most recent and spectacular challenge we had was when our marketing lead, an avid Facebook user, had built a Facebook group to communicate with a group of people who’d signed up to be our alpha testers. Due to apparent bugs in the group communication mechanisms, he tried to send them each a message to let them know that the app was live and that they should go ahead and start testing it. This promptly triggered a spam filter in facebook, and got his account banned. An appeal with customer service failed miserably (apparently they don’t seem to even review appeals), and it looked for a while like he had lost his personal Facebook account (with all its data) because he was trying to do his job as a Facebook application developer. Not good. Luckily, friendly folks on the #facebook IRC channel, including a Facebook employee, helped to get that resolved. It did drive home the point that we’ve all felt that there’s something problematic about the complete ownership of personal data by Facebook. That control, combined with a hair-trigger banning without warning and a probably overwhelmed appeals process, is scary.
What’s the feedback?
The feedback we got from our friends has been great. Even more special is the early feedback we’re getting from people we don’t know:
… By FAR the best looking application on Facebook. Awesome job!
… I love this app — it’s great b/c it actually has the potential to take facebook connections one step further from virual to real, with people being able to be connected on a whim. …
and it’s great to get this kind of feedback from other facebook developers on IRC and in private messages:
… your app is awesome
… really nicely designed
… yeah a really slick ui
… seriously, your app is the nicest looking app to date
… great to see people taking the time to put quality like that together rather than just rushing out an app
… very very pretty
… check it out, hands down the nicest looking app to market yet
… Looks nice 🙂
… such a nice looking app needs to be out there
This feedback goes straight to Luke, our designer, who, as usual, is able to impress people on a glance of his work. We’ll see how the feedback on usability comes in over the coming weeks, but it’s a good start!
Lessons learned
That part will have to wait. Everyone else has already started on in a little friday afternoon celebration of ActiveState’s tenth anniversary, I’ve had four hours of sleep, and I’m going on vacation next week, with only occasional net access. So be kind to the app, don’t crash the server in my absence except during Norwegian working hours, but do send us feedback via the app’s discussion page.