<login with Facebook>
<create account>
<top items>
<latest items>
<about this site>
 
(83)
Thinking about using Facebook Connect on your site? Great! Step one: Abandon your will to live.

I kid! You'll get monthly conjugal visits with your will to live. And by "will to live", I'm including faith in humanity, sense of self worth, satisfaction at a job well done, etc.


First, everyone, please give me a moment alone with Facebook Connect:

----
Facebook Connect, I know you're reading this, and we need to talk. It'll only take a second. It's just you and me here, ok? Just us boys. Tell me what's going on. You don't complete your documentation, your code is full of serious bugs, you don't pay attention to your bugzilla; I know you well enough to recognize when something is not right. So get it off your chest, out in the open. Is it drugs? Are you doing drugs? Just tell me if it's drugs. Look, if you're doing drugs, you can tell me. Blow me off if you want, but I was your age once. I know what it's like to want to rebel, and I know all about peer pressure. Yeah, you've got a lot on your plate, but you're reaching maturity, and it's time to take on more responsibility.

If you're just gonna ignore me, you know what? I'm gonna tell the whole world about your screwups, ya screwup. Hold on, that didn't sound good. I didn't mean for it to come out like that, and I'm sorry. But you're out there soaking up this popularity ("Why Facebook Connect Matters & Why It Will Win"? gimme a break), and all I'm left with are snarky, unhelpful responses to developer questions. Like, say, this one:

  Third-party developer: "What the F!? ... (legit question) ... wow [Facebook] you are a piece"
  Sarcastic Facebook employee: "Why, thanks! We try, we really try, to be a piece."

Well, think about it. I see a lot of potential in you, but it's time to straighten up and fly right.
----

Ok, that was a little silly.

By the way, that is an actual, word-for-word quote from a Facebook employee. Here's a link. (Alternate link.) When I read that exchange, my first thought was: Heh, that dude just provoked Facebook. My second thought was: Crap, I want Facebook to be the adult here. Now it's punishing all of us third-party developers just to spite this one guy? Yeah, he's a troll, but answer his question for our benefit. My third thought was: Oh snap, that guy was totally right. I just encountered a similar bug with a related method. I filed a bug in bugzilla, but nobody comments on those bugs or on my remarks on the wiki. Facebook takes quality lightly, and these incidents reflect a broader pattern. Maybe Facebook actually is a piece.

To be fair, a while back, I asked a question on the dev wiki and that same rogue Facebook employee gave me a really helpful answer. But that was December, and this is February, and maybe things have deteriorated; maybe Facebook actually has adopted more of a "be a piece" strategy. Anyway, continuing with the airing of grievances:

Developing against Facebook Connect is frustrating. The other day, I found that one of the methods in the javascript library is broken almost to the point of being unusable (FB.Connect.ifUserConnected(), if you're interested). That in itself is unacceptable for a service not conspicuously in an alpha or at least beta phase, but there have been problems with this feature dating back to December (for example, as discussed in this thread). My unequivocal statement that it is broken is a product of a bunch of time I resent having spent duplicating, isolating, and then debugging the bug, and the cause of the problem seems to be a simple lack of careful coding by Facebook. I've learned that that's typical Facebook. I remember like it was yesterday the first time I read about and tried Facebook Connect. I was on TechCrunch and I clicked a "Connect with Facebook" button. I don't recall the actual sequence of events, but it wouldn't let me log in, and I wrote it off to kinks that were maybe still being worked out. Now I'm here to tell you that those weren't "kinks". They're bugs. Nasty, nondeterministic bugs that shouldn't exist and that, at the current rate, won't get fixed for years. If you ever find yourself pointing a finger at a problem on a third-party website that uses Facebook Connect, seriously consider pointing your other three fingers at Facebook. Slow page loads? Probably Facebook's fault. (Here's an interesting experiment: try comparing the load time for a random Facebook page to that for a random Google page.) Logout button doesn't work? Yeah, that happens sometimes with Facebook Connect. A site shows you as logged in through Facebook even though you actually went to facebook.com and clicked the Logout button? Another known Facebook Connect bug. ETA for a fix, you ask? Please, my doctor says I'm not supposed to laugh for three days following my Facebook-induced heart attack.

But what's really gotten me so stirred up is this: Facebook has a rep for attracting good talent, and their products are really, really popular, and yet, from my perspective, whether it's missing, disorganized, or just broken, Facebook's work (not just Facebook Connect) is consummately subpar. Facebook has everyone's attention, and they always seem so close to doing something really great, but then the execution is flawed. Seriously, how can you employ hundreds of developers but have so many of the documentation pages for your major interfaces basically be stubs? Actually, I know the answer to that question. The answer is in this 2007 article about an interview with Mark Zuckerberg in which he describes plans to more than double the Facebook staff in one year. Everybody knows that rapidly adding developers is a recipe for disaster for a project, and that's probably what we're seeing play out. But this post is supposed to be saying "Facebook Connect Sucks", not "Facebook Fails at Personnel Allocation", so let's get back to brass tacks. The other, "Facebook Connect Sucks" tacks, I mean.

So what can Facebook do to fix Facebook Connect?

Wait, are you serious? I mean, are you asking that as a joke, or did you completely miss all the stuff I just said? Ok, whatever, I'll take the bait:

  1. They should pay attention to and look into bug reports. Yeah, a bunch of them are going to be stupid, but some of them will reveal really ugly and important skeletons.
  2. Stop exposing parts of the interface that don't have documentation and are only used internally. Polish it or don't tell us about it.
  3. Proactively look for and respond to comments on the wiki talk pages and in the forums.
  4. Require developers to write docs on their features, and have dedicated docs people review them. Developers alone cannot write good explanatory docs because it doesn't occur to them which knowledge they're assuming from the reader.
  5. Do more--and more realistic--testing. The javascript library does a lot of asynchronous communication with Facebook servers, and maybe some of the bugs I've seen were missed when tested against mock Facebook servers that respond synchronously and immediately, although that's being pretty generous.

For extra credit, it would be excellent if websites could select (probably through a parameter passed to FB.init) to use uncompacted, commented versions of the Facebook javascript library files. That would make Firebug debugging much easier.

Despite my tough love, while Facebook Connect is still far from a mature product, it is a big step forward from OpenID, which was positively baffling for users and inconsistently implemented by identity providers. I'm nervous about a Facebook Connect monoculture, but also relieved to use the word "was" when referring to OpenID.

UPDATE: There's been a small flurry of activity today on my bugs and on the wiki. Squeaky wheel gets the oil, I suppose.

UPDATE 2: Wow. Judging from these comments at ycombinator, I'm not alone in my Facebook frustration.

I posted earlier about how Mush Pot links accounts with Facebook.
Travis    a year ago     tags:facebook web development facebook connect
<reply>    <no likey>   
(4)
I'm in FBC hell. Any progress in finding simple instructions for implementation?
nashville    10 months ago     tags:facebook connect
<reply>    <no likey>   
(1)
I haven't looked for months, but the tutorial in the docs is the best I've seen.
Travis    9 months ago     tags:facebook connect
<reply>    <no likey>   
(0)
How about integrating activities?
Javier Albarracin    11 months ago     tags:activities
<reply>    <no likey>