
Facebook Wins “Worst API” in Developer Survey - Andrex
http://techcrunch.com/2011/08/11/facebook-wins-worst-api-in-developer-survey/
======
MattKelly
Hey everyone, I'm a partner engineer at Facebook. I posted a response on
TechCrunch, where I originally read about this study. Here's a link to my
reply: [http://techcrunch.com/2011/08/11/facebook-wins-worst-api-
in-...](http://techcrunch.com/2011/08/11/facebook-wins-worst-api-in-developer-
survey/?fb_comment_id=fbc_10150279454842731_18152549_10150279639152731)

In short, we're working hard and making strides, but we have a lot of work to
do. We love hearing feedback—keep giving it to us. It keeps us hungry to make
things better.

~~~
iqster
Thanks for taking notice Matt.

Let me start by giving some kudos. I had a chance to use a GUI tool that lets
a developer test FB API calls. I'm not sure if this is officially released yet
but it was a fantastic tool and a step in the right direction! (fyi: I got the
link from a presenter at a hackathon ... forget the details).

Like some of the other folks here, I have burned many many hours trying to get
the FB API to behave nicely. I think the core issue is documentation coupled
with the velocity with which things change. I understand that the mantra for
the company is "Move fast, break stuff" but I don't think it is right for you
to cause developers pain. While you folks might have a lot of dev resources,
not everyone does. A lot of times, I can see the API changes being done for
good ... i.e. rename paramters or move'em around. The problem is that if you
don't flag the change and/or documented this, you've pretty much guaranteed
developer pain.

I understand when you move fast, you don't have time to document. People
naturally turn to blog posts. This adds to the pain because half the stuff
works while the other doesn't. My experience using the API at a recent
hackathon was piece together fragments from different blogs and hope for the
best.

So if there is one line of feedback you take from this .... if you change your
API, _think_ about it from the external developers standpoint.

------
klochner
The biggest problem I've found with the facebook api is their sloppiness in
documentation - they often have multiple conflicting versions of api
documentation online, with no structured versioning in place.

Several times I've seen functionality removed with nothing in the
documentation indicating what had changed.

~~~
jobu
The number one issue is documentation. (sparse and often incorrect).

The number two issue is they change the API and don't announce the changes
until people start posting questions asking why something is failing.

Number three is random failures with no error. (Did they change the API again
or is it just a random recurring event?)

~~~
wpietri
Entrepreneurs! Take my money!

Let me publicly say something I've said privately: I will pay up to $1000/year
for a subscription to a service that 1) documents the facebook APIs, 2)
monitors examples and common usages and lets me know when they stop working,
and 3) provides a weather report for the Facebook API servers letting me know
when they're slow or sick.

Heck, I might pay more. We waste far too much developer time dealing with the
problems Jobu so rightly points out.

~~~
micmcg
Agreed. Every advertising agency that works with Facebook would happily pay a
subscription fee like that for the number of head hours it would save them.

------
thestranger
As the article mentions, a lot of the rankings seem to be influenced by the
popularity of the service. Twitter and Facebook are going to have more
complaints simply due to the fact that more people use them.

Twitter in particular has a very good API, I have never used Digg's,
LinkedIn's, or Paypal's, but I doubt very much they are better documented and
easier to use than Twitter's. (I have had some problems with Facebook's API,
so perhaps it is deserving of its title.)

A better way to run this survey would be to only allow people who have
actually used all the API's to vote. It would be difficult in my opinion to
vote for an API as the worst with no basis of comparison.

~~~
georgemcbay
Twitter's API has historically been very good. I think at least part of the
issue with Twitter and developer satisfaction is that they have spent the last
year doing just about everything they could to push developers off of making
full featured Twitter apps using that API short of outright banning them from
doing it.

Seems to me that the problem is more an issue of the process and politics of
using the API (and widespread uncertainty as to how long the full API will be
available given Twitter's signaled future plans) rather than
technical/documentation problems with the API itself.

------
terhechte
I'm the developer of Clarity, a Facebook Client for the Mac
(<http://www.clarity-app.com>), and yes, the Facebook API is the worst I've
ever had to use. Words fail me to explain how bad it is.

------
jgilliam
I wonder if there is a way to calculate the total cost of lost developer
productivity due to Facebook bugs, changes, and bad documentation. I swear I
spend way too much of my time dealing with it, and it sounds like everyone
else does too.

~~~
Cushman
Projects that integrate with Facebook API: 10,000?

Average dev hours to integrate with a typical API: 10?

Hours spent dealing with various Facebook API problems for every hour of real
work: 1?

So figure... order of 100,000 dev hours? Adjust according to whatever you
think those orders should be.

------
mootothemax
_A survey of over 100 developers_

Whilst I'm no fan of Facebook development, this survey doesn't seem to be that
fair: one of the graphics it says it received 135 answers in total, 19 of
which named Facebook's API. That's not many answers...

------
dheerosaur
A few days ago, all our Graph API calls used to return errors. The error
wasn't very verbose. It was a JSON object saying "Something was wrong". After
pulling our hairs for some time, we realized that they removed the trailing
slashes from the URLs. They are back with both forms(with and without trailing
slash) now. But, it really wasted a lot of time because the error wasn't clear
and the code needed changes.

------
bryanh
Well, it would be nice if they kept it up more often. In my experience with
Facebook, they have a severe problem with maintaining uptime. Facebook is
synonymous with breakage for me.

<http://api-status.com/6404/50042/Facebook-Graph-API>

------
dasil003
Actually the Facebook API has been pretty impressive functionality-wise, over
the years. At the initial launch in '07 I remember being blown away by how
much you could do with it (FQL, FBML, etc). It was an order of magnitude more
impressive than any web API at the time.

The big problem has always been stability as they have continuously developed
it and deprecated and removed things at a breakneck pace. The documentation
never kept up, and there was a lot of breakage along the way.

I still think this was the right decision for Facebook at the time. They had a
lot of growth to do, and were plowing into new territory. It was more
important to grow quickly and push greenfield developers in the right
direction than to satisfy the long-time developers who were always smaller in
number than the incoming batch.

Now, however, Facebook has hit an inflection point in growth, and I think they
need to adjust their culture to serve developers and existing users better. I
believe Facebook has found the core of what it is, and should now be building
new functionality around that core and stabilizing it in order to maximize
lock-in rather than breaking shit all the time and just asking people to
migrate over the greener pastures. Of course that's just my frustrated
developer perspective, it's probably not in Facebook's let alone Zuckerberg's
DNA.

~~~
ary
Having interfaced with the Facebook API when FQL and FBML were all the rage
I'm left scratching my head at your comment.

> Actually the Facebook API has been pretty impressive functionality-wise,
> over the years.

What's your definition of functionality? To serve a purpose well, or the range
of operations supported? In my experience neither of those things has been
true of the Facebook API (granted I haven't touched it in the last ~2 years).
"How much you can do" has actually been rather limited throughout the life of
the API, and what it did do it didn't do very well. I have not-so-fond
memories of dealing with orphaned state data that left the app I was working
on irreversibly broken for the user.

Saying that the documentation never kept up is being too kind. The
documentation was never in a complete form to begin with. I had to write a
large amount of 'discovery' code just to tease out how much of the API really
worked. The worst part was not being able to trust the code Facebook
themselves shipped to interface with their own APIs. I had to patch the PHP
library they provided just to get it to work at all.

> Now, however, Facebook has hit an inflection point in growth

Again, I'm not exactly sure what you mean, but if you're implying that they're
now so big that they've got to start taking shit seriously I think you're
again being to kind. Smaller startups (including many in the YC crowd) do a
better job with less money and employees, and with _much_ smaller user bases.
Facebook dicks around with their APIs without concern for developers _because
they can_. The growth rate and size of the user base is the problem, not the
reason they need to clean up their act. Besides, Facebook has been huge for a
long, long time now. Their culture clearly doesn't value outside input or
concerns.

> I believe Facebook has found the core of what it is

You sound like a Facebook PR person, but I'll humor you. Let's say they have
found their _core_. It certainly isn't a genuine respect for their users
(consumers or developers). The easiest way to evaluate the company (for me) is
to take away the popularity aspect and look at two things: the valuation and
what they're actually making/producing/creating (insert favorite verb for what
companies "do"). At 50+ billion dollars I see a company that makes a lot of
noise about innovation, but does very little that is different than what it
did when it launched in 2004 (at scale, granted). If that beginning kernel of
"innovation" (which is arguably no different than MySpace with better design)
justifies said valuation then so be it, but many other social networks with
roughly equivalent features have come and gone. It doesn't seem clear what
"core" they were searching for, or what (if anything) they found. Facebook has
the network effect on its side and that's about it.

The hype is almost too much to watch sometimes. The media loves (needs)
attention, and Facebook has a lot of it concentrated on its site. The media
wants a piece, as I can vouch for having worked with a lot of ex-newspaper
types, thus fueling the cycle. The reality is that the loyalty of people's
attention is grossly over-estimated, and so is the value of that Facebook
"does".

I'll paraphrase a thread I saw a while back here on HN. It depresses me that
some of the best minds of my generation are working on how to make more people
look at ads.

Edit: Minor point clarification.

~~~
dasil003
> _What's your definition of functionality? To serve a purpose well, or the
> range of operations supported? In my experience neither of those things has
> been true of the Facebook API (granted I haven't touched it in the last ~2
> years)._

Think back to 2006. Name one site that had sanitized SQL access to their data,
rich tags, sandboxed css and javascript for constructing arbitrary HTML apps
within their site. This was revolutionary stuff, regardless of the sloppiness.

> _Again, I'm not exactly sure what you mean, but if you're implying that
> they're now so big that they've got to start taking shit seriously I think
> you're again being to kind. Smaller startups (including many in the YC
> crowd) do a better job with less money and employees, and with much smaller
> user bases._

What I mean is that they were growing like a weed because they kept pushing
the ball forward rather than to stop and polish what they had. If they had
"done right" by all the developers they may well have stagnated in growth as
other companies pushed the UX of social networking forward, or they may have
supported old APIs that were incompatible with the changes they made that
tightened up the spam problems or increased user engagement. Citing a smaller
startup is exactly in support of my point.

As to inflection point, what I mean is that the hockey stick growth is over
and they are inevitably going to have to plateau, and so now is the time to
get more serious about retention, and that means stability.

> _At 50+ billion dollars I see a company that makes a lot of noise about
> innovation, but does very little that is different than what it did when it
> launched in 2004 (at scale, granted)._

You're entitled to your opinion of course, but they invented the newsfeed! ie.
the backbone of every social site for the last 5 years. Also, as I mentioned
above, the Facebook platform was incredibly innovative. Their SOA and
pipelining of requests is also the first of it's kind. What they do at scale
with a dense social graph seems much much more challenging that what Google
did coming up. Their entire culture itself is innovative, maintaining _daily_
deploys at scale, with a fleet of engineers who are individually responsible
for both front and back-end development of their features. Also remember the
scale and velocity issues are what sunk Friendster and MySpace respectively.

You can piss on all that and say it's just glorified email, but in my mind
that's just hater-ism fueled by who knows what personal chip on your shoulder.
If not, then I'm curious to hear who you think is innovative.

> _It depresses me that some of the best minds of my generation are working on
> how to make more people look at ads._

I don't like Facebook or social games either.

~~~
puredemo
>You're entitled to your opinion of course, but they invented the newsfeed!

Really?

Didn't RSS get popularized in like... 2003?

~~~
tdfx
RSS is a way of consuming news information. The FB News Feed was novel in its
approach of presenting other peoples' social actions as news.

------
clscott
I'm not surprised. After serving as a maintainer of both the main perl client
side api (<http://search.cpan.org/dist/WWW-Facebook-API>) and one production
application I have to say the Facebook platform sucked[1] for its instability,
lack of regression testing, lack of roadmap for new feature or fixes for major
bugs and lack of a testing framework for client apis.

Now, this was 2 and 3 years ago they may have cleaned up the mess since but I
don't think so after poking my head in a time of two over the last few months.

[1] It sucked to worked with but was an undeniable success for them and those
that we able to dedicate the resources to keep up to the constant churn and
downtime

------
enjo
It's a well earned honor. Microsoft Adcenter is a close second, particularly
if you believe their assertion that a REST api actually exists.

------
padobson
Twitter and Google both have excellent APIs. Twitter's API is helped a great
deal by every client built by Twitter is also built on the Twitter API.

Google's APIs, in my experience, have great documentation and an excellent
learning curve. Want to do something simple? Well here's code that does that.
Want to do a medium challenge? Use that code and this documentation to expand
it - often projects can gain sophistication quickly with only tweaks here and
there.

There's no doubt the Facebook API is terrible. You have to read several pages
of text and answer a bunch of obtuse questions just to get your app
registered. Then you have to deal with the oft mentioned documentation
problems. The biggest problem I see is that its so hard to develop for, no one
has built any decent third party libraries - as opposed to Twitter which has a
ton of excellent libraries for interfacing with your favorite language.

I can't help but wonder if all of this is done on purpose. It seems to me that
Facebook doesn't want anyone to be able to make as much money as them
developing on their network, so they make it impossible. If there was a better
API, there might be 10 Zyngas by now.

------
jscheel
A few months after Facebook announced "Operation Developer Love
(<http://developers.facebook.com/blog/post/417/>), I reported a bug I had
found in the API. Their first response was to tell me I didn't know what I was
talking about, and that is was functioning fine. After explaining myself
better, they finally admitted it was a bug... and promptly informed me they
would be marking it as WONTFIX because they didn't feel like addressing it at
the time. Lost two days of work because of that bug, and they don't want to
fix it... that's love for you. Here's the bug report for reference (I may have
gotten just a bit testy, but still, it was pretty frustrating)
<http://bugs.developers.facebook.net/show_bug.cgi?id=16856>

------
cmurdock
I had a brief experience with using Facebook's API last year. It was
absolutely horrible. Documentation in the Wiki of features that no longer
existed. Features that would just break with little or no explanation. Maybe
it's improved since then but I would never try and use it again unless I
absolutely had to.

~~~
kalleboo
What other APIs do you use? Because I find I have far more issues with the
Twitter API (downtime, poor documentation, lacking features, etc)

------
eugenejen
After I saw the pie chart, I am wondering the proportion in the chart
corresponds to usages of APIs.

So in fact, it is not Facebook API is the worst API but it is most widely used
API. And this also shows how much power Facebook has now due to its tremendous
data relevant to an internet users.

------
AntiFreeze
The original post is here: <http://news.ycombinator.com/item?id=2873040>

We weren't trying to bash on Facebook at all (and the survey had nothing to do
with which services people liked/disliked).

Our main point was simply that the developer community really seems poorly
served by the API players. And that rings true, scientific survey or not.

But clearly there were lots of things wrong with our initial survey (poor
questions, limited sample size, etc.), but we'd very much like to run another
survey and address theses issues as well as possible.

So please, chime in and let us know how we can take this up a few notches.

------
yariang
"Meanwhile, complaints about Google cited APIs that had been shut down or were
missing."

So the quality of Google APIs is based, in part, on missing ones? I am not
sure I understand. I can understand that API integration can cost time, and if
Google decides to terminate an API project then that work is basically thrown
away. But that doesn't reflect on the quality of Google's APIs, it reflects on
the flakiness of Google as an API provider.

Also, "voting down" their API quality for not having APIs that the developers
want hardly seems fair either.

P.S. Using API so many times in a comment is probably a _great_ start for a
tongue-twister.

------
corin_
I'm not sure that "they have shut down" should count against Google's APIs...
because the ones that shut down are no longer Google APIs. Sure, count it
against Google's services that not all of them have APIs.

------
ianso
I think the AWS team at Amazon should break open a bottle of champagne and
congratulate themselves for not being anywhere on this list. AWS lives and
dies by its API, and they've done a very good job of it.

------
pan69
Since recently when I'm asked to do Facebook apps I explain to my clients I
need to charge them a Facebook tax. I can easily spend 50% of my time building
a Facebook app on dealing with Facebook API issues.

------
blhack
There have been a few things that facebook has done that have been annoying,
but... _worst_? Is everything else really that much better?

Honestly the only thing I've noticed that has made me mad was that they
started requiring a permission called "group_access" to view what are normally
publicly available groups.

To be honest, I actually _like_ the graph API. I think it's really intuitive,
and it make perfect sense to me.

If I had to say "worst", I'd probably pick grooveshark, or twitter.

------
fnl
OK, so the Facebook API is probably (one of) the most used API nowadays, maybe
even before Google APIs. Assuming out of N developers each has the same chance
of "dislike" for some API, it seems to me this pie-chart just nicely shows
-roughly- how developers are distributed across APIs. In other words, I don't
see how the general distribution of API use [edit]by the surveyed
developers[/edit] [del]in the survey[/del] was accounted for.

------
dfguo
Facebook API is terribly documented and the supporting forum is basically
dead. They tried to encourage people to use the open graph(deprecating FBML)
without a good documentation.

------
jdelsman
This is like free user testing info for building APIs. Companies should take
note, especially ones building APIs right now (like me)

------
brettnak
I wonder if they've ever done any AVR programming. Why do they insist that
each register have a 3 to 4 character name?

------
fredBuddemeyer
can someone from fb respond to this? the biggest problem is communication and
this discussion is a lot like when you look for help w the api - lots of
commiseration without a peep from the people responsible.

------
dualboot
Oh those sweet summer children.

