In recent weeks, Facebook has been sending emails imploring me to complete a survey about how they might improve their development platform. I’d been deleting the messages, but after the third request or so, I decided to click through. For those lucky enough to have avoided it, the Facebook Platform is a set of tools and services that allows developers to build software that lives atop or connects to Facebook. I’ve already got a good measure of existential dread built around Facebook as a platform, but the ongoing badgering burst my bile bubble.
The first survey question asked “Why would you or would you not recommend developing on the Facebook Platform?” I breathed deep and unloaded:
The Facebook Platform is a shape-shifting, chimeric shadow of suffering and despair, a cruel joke perpetrated upon honest men and women at the brutish whim of bloodthirsty sociopaths sick with bilious greed and absent mercy or decency. Developing for the Facebook Platform is picking out the wallpaper for one’s own death row holding cell, the cleaver for one’s own blood sacrifice.
Like the catcall of “whore” or “crook,” the Facebook Platform passes judgement before you even signed up for it. The Facebook Platform is the relief promised under the pressure of thumbscrews. If you were innocent, why did you start using the Facebook Platform in the first place?
Developing for the Facebook Platform is punishing oneself for the corporeal scars of abuse. Maybe it’s me, maybe it’s me, Facebook devs whisper quietly, alone, every Tuesday, before heaving the deep, lumbering sighs of resignation beyond sorrow.
Now, I know I have a reputation for poetic barbarism, but when I posted a screenshot of this response to Twitter and Facebook, the response was fairly overwhelming. Literary license notwithstanding, this turns out to be an accurate depiction of how many of us have felt while working with Facebook’s tools.
Facebook got in touch with me and asked for more detail. “Why does the Facebook Platform suck?” a platform team rep asked me. “Why do you dislike it so much?” I thought I’d respond here, to everyone, and not just in private. (I should probably note that a quite amicable back-and-forth has ensued between me and Facebook; deep criticism is weirdly generous, in the sense that it provides sustained and earnest attention that most matters don’t enjoy.)
The short truth is this: Facebook doesn’t care if developers can use the platform easily or at all. In fact, it doesn’t seem to concern itself with any of the factors that might be at play in developers’ professional or personal circumstances. The Facebook Platform is a selfish, self-made altar to Facebook, at which developers are expected to kneel and cower, rather than a generous contribution to the success of developers that also happens to benefit Facebook by its aggregate effects.
This is one of those areas in which it’s actually possible to learn something from Microsoft circa the 1990s. How did Microsoft develop a massively adopted ecosystem of developer products for its home and enterprise operating systems? By creating a suite of development tools, programs, and documentation that helped developers do their jobs, to accomplish their goals. Documentation that is complete and accurate. Examples with clarity and utility. Slow revs of subsystems and tools that take into account the fact that the rest of us cannot and should not have to think about a development platform as a full-time job, because we’re trying to use that platform to produce results that exceed it.
Take this story, one of many posted by or sent to me by friends, colleagues, and strangers who saw my “feedback” to Facebook:
Just last month they documented errors on their ads api (the thing that makes them money) so we no longer have to handle things based on text like “unknown error” but instead we get something like “unknown error 135617” which in their documentation says is “something incorrect in ad targeting” but then you find out it’s because they suddenly require a number 6 to be sent in as a string “6”.
This is the sort of infuriating defect the platform exhibits constantly. And it does so every week in new ways. Bugs go on for long durations without remedy. The documentation is shamefully outdated, incomplete, and unclear. Facebook deprecates or retires features—or even entire frameworks—on short notice as a result of a collective failure to bother with basic software architecture for external development. Facebook knows it can always just rebuild things; why can’t everyone else? Facebook promises something it doesn’t deliver. Or worse, it doesn’t even promise what it doesn’t deliver. Then, like the abuser who blames his victim, the company sends tone-deaf surveys asking “how can we improve,” as if its worst offenses weren’t obvious. This is the behavior of sociopaths.
Facebook is hardly alone in this offense. On the one hand, every idiotic startup out there now boasts an ill-conceived REST API that mostly serves to give its tech-addled founders the false sense that their pointless product is really a platform. “Here’s a thing,” young white dude founder blogs before taking an afternoon appointment at the Tesla dealer, “YMMV.”
On the other hand, large, older companies have fallen into the same rut of developer indifference as Facebook: Microsoft SharePoint is a common target of total scorn, and earlier this year the big payment gateway company Verifone pulled their entire REST payments API on two week’s notice. Apple pushes new iOS releases that force users to upgrade hardware prematurely while breaking software written relatively recently. Still, Microsoft platform code I wrote over ten years ago is still running a part of one of my businesses, while I’ve had to replace entire subsystems of Facebook platform code multiple times in the past year just to keep basic functionality running.
Facebook is special in this regard, because its outward claims toward “connecting people” are so poetically at odds with its actual business of extracting value and attention from them at all costs. Facebook is like a kindergarten run by child molesters. The idea that the tools it would make to facilitate the creation of connected software are so brazenly, purposefully antisocial might count as irony if anyone still remembered what “irony” actually means.
Facebook’s systems are cobbled together in a way that helps Facebook accomplish its goals. Those include rapid changes proffering near-real-time results, thus producing familiar but slightly altered ongoing attention on the part of its users, of which its developers are a subset. But there’s another aspect of rapid, reckless change that few discuss: it helps create a sense of confusion and desperation that forces developers to devote more and more attention to the Facebook Platform. What better way to increase collective commitment to Facebook apps than to quietly extort incremental time out of its creators, time that might otherwise be committed to competing products or—gasp—to their own businesses or personal lives?
Perhaps not coincidentally, this is the same ante-game compulsion loop that drives so much online behavior today. Using Facebook as a primary example, The Atlantic‘s Alexis Madrigal recently compared it to the logic of casino slot machines. In this respect, the Facebook Platform is just a microcosm of the overall Facebook ecosystem: a place where attention is converted into company store scrip, redeemable only for future demands for greater attention.
Some of the folks passing around my submission are getting a laugh out of it. But even as I wrote hyperbolically for effect, I also actually meant what I said. The feeling of using the Facebook Platform is that of total, unmitigated despair. Despair because there’s no way to know what it might do next, yet once one has committed to it, one must do its bidding. I suspect that every Facebook developer has a case of Stockholm Syndrome, some more severe than others. Does it seem silly to despair over a software platform? Maybe, but most prisoners are not chained to cots in cells, but to computers in cubicles. Despair is no less real and no less desperate just because it is ordinary.
In a “rant” at the 2011 Game Developers Conference about my now-infamous Facebook game Cow Clicker, I suggested the name “Shit Crayons” for systems whose limitations reach beyond the challenge of material resistance and into the realm of cruelty. The Facebook Platform is a shit crayon. The fact that some rise above the despair of the product to make it work, to make it sing even, this is not because of anything Facebook has done, but a testament to the unceasing, even unhinged resilience of the human spirit. One does not develop with the Facebook Platform, but in spite of it.
Software development has changed a lot in the last twenty years, to be sure. The rapidness of web distribution has made older development practices seem quaint and antiquated. But something that’s not antiquated, or shouldn’t be, is providing a service that does what it claims, that provides more value than it takes back, and that earnestly cares about the way it gets used, not just about the fact that its use can be sufficiently assured so as to obviate concern for its quality.
It’s well documented that Facebook allows its developers unusual permission to push experimental updates live, and that the company has internal propaganda posters with mottos like “What would you do if you weren’t afraid?” I wonder, what would be different if the posters read, “What would you do if you cared about the result?” Then again, that’s not exactly fair, since it’s clear that Facebook’s leaders and employees care a great deal about the output of their work insofar as that output pleases and benefits them until their equity vests. So perhaps a different compass bearing: “What would you do if you cared about someone other than yourselves?”
That’s what building a set of tools made for others ought to be all about. Self-effacement. Facilitating the goals and successes of others by means of an apparatus or implement, rather than making every touch and strike of that tool return some favor or back-pat to its creator. The problem is, corporations today (and tech companies in particular) are too selfish to care. Software platforms aren’t made for making things anymore. They are made for pledging fealty to a technology king.
Comments
madopal
A-fucking-men.
While I have been lucky enough to never have the misfortune of working on Facebook’s API, I’ve seen the same practice everywhere: Android, iOS, et al. Fuck it ship it taken to it’s cruel, logical extreme.
phaxda
Good points.
“Those include rapid changes alter near-real-time results…”
that alter?
Justin Helms
I follow you on twitter and have several times seen you refer to the sociopathy of Silicon Valley. Do you think Silicon Valley’s sociopathy is greater or distinct from that of corporate capitalism in general?
You point out that Microsoft was, along this one dimension, better behaved in the nineties. Is that because they use to be nice, or because they hadn’t yet realized the business benefits of entangling developers in their platform?
If I’m reading you correctly, you’re suggesting in a few different ways here that the problem is the corporations we have (corporations TODAY), their cultures (and posters) and their choices. I don’t know if you’re half-joking or fully joking about the posters, but I’m worried that if we treat this problem at the level of corporate culture and particular behavior, then we’re just gonna get corporations that are better at PR.
Seems to me the whole point of capitalism is to give assholes something constructive to do. But then we see all these fun toys that corporations and their sociopathic leaders help put in our hands, and think hey, maybe these corporations aren’t so bad, and if they aren’t so bad, maybe being an asshole isn’t so bad… maybe greed is good!
To extend your analogy, it be like if you gave a child molester a job in a factory making pencils that were sold to an elementary school, and thought wow, this guy is really contributing positively to the education of children, we oughta let him teach too. Hell, put him in charge of the whole school system.
Corporate capitalism selects for sociopathy, for extreme self-interest, the way some ecological niches select for more efficient killing machines. And sometimes that works out, sometimes that can be channeled toward constructive ends. But if we think corporations can be different (as opposed to being forced to act different), then I worry we will drift ever more toward a society where both the economy and the government are controlled by corporations.
jonathan peterson
The only thing more painful than my experience with Facebook “appl” development, QA and deployment is ongoing maintenance.
I think your quote gets to the root of the matter –
“The Atlantic’s Alexis Madrigal recently compared it to the logic of casino slot machines.”
Facebook ITSELF is a horrible grind game with bits of egoboo as the payoff for enduring ever increasing volumes of spam from companies and pseudo acquaintances.
Ian Bogost
Justin, I don’t have time today to respond in the way your questions deserve, but my short answer is that, specifically, to some extent today’s very-short-term market goals underlie the particular brand of perversion that tech companies in particular embrace.
Chris
I think it is just begging for a third party wrapper library.
Facebook
|
Facebook API
|
libOwMyFaceAPI
|
My Application
That way when a change happens whoever cares enough to maintain/fix libOwMyFaceAPI will do a world of good to well, the world.
Bags not maintaining the wrapper!
Zbigniew Åukasiak
Facebook: Programmers just come and try to build something according to our documentation
Facebook: They “trust us”
Facebook: Dumb fucks
Frank Z
This is superb. I agree with pretty much all of it!
Ian Bogost
@Chris
…until the creators of the wrapper library abandon it 😉
Steven
Take a look at this bug which has been active all day today and not a fix in sight. And this is quite an important use case – oauth dialog for Facebook. Can’t oauth because of some weirrd 404 https://developers.facebook.com/bugs/568328393206082?browse=external_tasks_search_results_51fb4e202c77d2890029859
Eric Lyons
You should have developed software with Microsoft tools in the ’80s. Then you might realize why they were marginally “better” in the ’90s. Sometimes humiliy is begotten from actual humiliation.
Facebook is not, and can never be a ‘platform’ because it rests upon the premise that its “users” (who are distinct from its customers) are fools with too much time on their hands. And if they don’t seem to have enough time on their hands, then their real customers – the advertisers – will find new ways to suck it from them.
Microsoft used to sell “productivity”, and people paid. Facebook sells literally the opposite.
Nikhil Mathew
I can’t agree more..
The WinAPI call based application that I developed back in 1996 with Visual Basic 5.0 on Windows’95, runs with zero modification on everything till Windows 8 !(I lost the source code in an HDD crash, but still got the exe binary)
I develop iOS/Android apps for a living and social media integration is part of almost all apps so APIs and have handled SDKs from all major social networks.
They just cant keep it in one standard way ! I have seen little girls who would say in a toy store “oh oh I want a teddy” and in few seconds “oh my I want a unicorn” and while in the process of finding a unicorn, she would say ,”I want my teddy riding the unicorn”!!!!!
Residuum
@Justin Helms:
Microsoft in the 1990s and Facebook today are different:
MS have known that an operating system needs one thing for success: A lot of applications running on the platform, so that people are forced to use it in order to use the application. That is the reasoning behind the “developers, developers, developers” chant of Steve Ballmer. With a stable API and good documentation, they have achieved that goal, and have marginalized their competitors (OS/2 anyone?).
FB have a different story: Their way to success was never tied to popularity with developers, only popularity to end users, because they do not need applications to succeed.
Jens Rantil
Maybe “Move fast and break things” is not a very healthy way of working with APIs… http://www.geek.com/news/mark-zuckerberg-says-you-need-to-move-fast-and-break-things-922432/
Dean
There is an excellent solution to the your dilemma. You do not have to use Facebook or its API. That’s the great thing about capitalism and the free market. You have a choice. Also, because you are not motivated by money, you can make your own, perfect platform, motivated by the plight of the proletariat and it will be noble and superior in every way. You can give away the games you makes because who needs money in such a utopia… Give me a break. Shut up and make a better API that cares about backward compatibility. Give the aloof moral superiority a rest.
Death Metal Nightmare
DEAN, YOURE SUCH A NAUGHTY BOY! PLEASE TELL US MORE THINGS DUMB OLD WHITE DADS SAY CONCERNING POLITICAL ECONOMY AND “CHOICES IN CAPITALISM”
– sincerely, Dean’s self-internet robot
Dean
Criticize Facebook. It sucks. However, arguing that it sucks because the developers are privileged white dudes motivated by making money is not a valid argument. The author even points to an example of a good api from Microsoft. Do you really believe the developers at Microsoft back in the 90s weren’t motivated by making money? The Facebook API sucks for so many reasons. Zuckerburg originally wrote Facebook in PHP, he was not a computer scientist, their motto is “move fast and break things”. It’s an experiment and they made some mistakes. To imply its flaws are rooted in capitalism is wrong. I realize profit and money are popular punching bags. It feels good to think you are morally superior and have other people think you are a good person. However, the hate and bile being spewed at anyone trying to make a buck is irrational. No one is holding a gun to anyone’s head telling them they have to use Facebook. Go out and make something better.
Sean
Fun example of Facebook being a shit crayon, I was developing an app that took in profile data on users, that’s all it did. And this was run on the backend, so I used a third party library to manage my calls and help get my access_token. All my code was working and I started working on permissions and what data I needed when suddenly, invalid token error. Not sure what was going on I found out that the access_token Shitbook, I mean Facebook, was sending me was wrong, visibly wrong. Facecrayon, I mean Facebook, had changed the format of the access_token they were sending me and could not read it when I sent it back. Since I had not changed that part of my code, I assumed that it was a problem on their end, and submitted a bug about it. Within 12 hours, it was declared not a bug, and a helpful Facebook admin referenced me to a page that did not apply to my situation. Thanks Shitcrayon.
Paul Morriss
When I first started using the Facebook API I couldn’t believe how badly documented it was. The one group of people who benefits from this is those who write Facebook apps for other people. They can develop their own internal documentation from what they discover. However those purchasing the apps off them will need to pay a maintenance fee so that the developers can afford to keep update the app.
Kevin Stevens
You know, I couldn’t help myself:
http://memegenerator.co/instance/40254179
KJ
Zuckerburg was a Comp Sci major at Howard, so he’s got plenty of street cred. And a Computer Scientist is somebody with a Phd on a research grant doing proofs of algorithmic bounds, 99% of Google or Facebook employees dont fit that def.
Terry A. Davis
My operating system is God’s Temple, like Solomon’s. It must be perfect for 1000 years. I don’t have any users, yet. It’s in God’s hands. God has to undo secureboot and get pc speaker working again, maybe kill people in the CIA. God says… C:\TAD\Text\2CITIES.TXT
s swung, and there Madame Defarge let him go–as a cat might have done to a mouse–and silently and composedly looked at him while they made ready, and while he besought her: the women passionately screeching at him all the time, and the men sternly calling out to have him killed with grass in his mouth. Once, he went aloft, and the rope broke, and they caught him shrieking; twice, he went aloft, and the rope broke, and they caught him shrieking; then, the rope was merciful, and held him, and his
Jake/Snake
“Developers, developers, devel….” –Steve BALLEDmer… LOL!!!!!!
Dean
No, KJ, Zuckerburg was a Psychology major at Harvard.
Ian Bogost
Terry A. Davis’s comment got stuck in the spam filter. I am sure y’all will thank me for making sure it got through.
Paul Stewart
I like what you have done with these opportunities that have presented them self to you. First time reader of your stuff, here. The voice, its tone, is not so alien to me.
To the irony I would directly add, the notion of the facebook itself is ironic in that while it appears to collectively illustrate loose connections and familiarize one enough to quaintly greet others on social occasions it is more a tool to divide and conquer. At base, facebook is a target acquisition system presented as the class, family, or corporate album.
The problem with objectification is subjectification, the endless, tedious, classification. Everything looks fine and colorful as an impressionist painter; the marine: sees the brick, your eye’s ability to see; finding a crushing blow, then just moves on. Value of red?
Jefferson wanted to crush corporations in the 1770s but kept his slaves. The U.S.A actually used an atomic bomb, and has always loved a good reservation, camp, or prison. The profiteers ignore infrastructure that doesn’t suit the goal of extracting wealth. We are the the inmates running the asylum, have been from the start, we even advertise on Liberty.
So, why spend your poetic barbarism on facebook? Just write that great american novel, finally, would you? You know the one about Level 6 clearance… ;}
Anonymous
Windows is not immune. When I was developing games in Windows in the mid-late 90s, the rate of change of Direct X was pretty uncomfortable, too. DirectSound, DirectInput, Direct3D – all changed so often that we elected to use libraries to isolate ourselves as much as possible. The hardware vendors had equally as unpleasant a time trying to keep up 3D driver support.
http://en.wikipedia.org/wiki/DirectX#Releases
Andrew
Brilliantly written. I laughed a lot even though points you made or more of a reason to cry. Facebook is indeed extremely selfish and anti-consumer platform. I have yet to see another popular product that would be so focused on maxing out profit and so little interested in being nice to it’s users. The amount of options or the actual complete lack of them pretty much sums it all.
CdrJameson
Reminds me of Apple…
Joe Fox
The fundamental flaw with the facebook api is the lack of versioning. As a developer I can tolerate facebook’s rampaging implementation and deprecation of features… provided it doesn’t affect my legacy code.
Other sprawling systems like eBay and PayPal at least have the sense to support x number of api revisions, giving you ample time for maintenance should it ever become necessary. Instead it’s just: “Oh it’s broken! What do you mean ‘didn’t I see the migration button?’!”
Don Reba
Not that I care all that much, but what’s with all the hate for sociopaths? In this day and age, it reads not unlike: “honest men and women at the brutish whim of bloodthirsty Jews…”
Mark
But the question is, Mr. Bogost, how did Dean’s comments get THROUGH the spam filter?
Pete
The only fundamentally stable API I’m aware of is time(). The rest of them are pretty much worthless. These developers have no idea how to make an interface.
Chris
Hi,
Excellent post.
I am not a developer, but if someone were to build a platform that did care, that did provide developers with proper documentation, fast updates to the platform, great tools, security, etc. etc., what would you recommend in terms of type of platform, coding, etc.? Any insight would be appreciated.
Thanks,
Chris