The sad story of Facebook Platform
pandodaily.com
pandodaily.com
It felt like these apps had found a hack that was taking advantage of the platform, but really this was just the result of the platform being poorly designed itself. The selling point for developers who picked up on it was, "You can make everyone who uses you spam all of their Facebook friends." Unfortunately spam, especially when it's coming from your friends, works like a charm. Facebook eventually had to stop allowing that before it let itself turn into a MySpace filled with little widgets.
Facebook's real problem wasn't just that it wanted to own everything itself, but that it didn't build the platform the right way in the first place.
I remember when they opened it up so you could add 3rd party widgets to your profile, and that was dangerously close to myspace... just about as close as Facebook ever got. And I'm glad they didn't get any closer. The reason facebook took off against myspace was that the user experience was good and it was clean. Ruining that is just not something they could afford.
I think you really nailed it with this particular statement:
> Unfortunately spam, especially when it's coming from your friends, works like a charm.
- Not building in a revenue model into their platform, like Apple did with iOS. This is so stupid.
- Not creating clear and consistent access rules around the social graph and notifications, with the ability to throttle down (but not altogether remove) access for offenders. They could even automate the throttling based on user feedback (in the form of clicks).
- Breaking things constantly. My brief, frustrating experience maintaining a Facebook application consisted of the app breaking every two weeks as Facebook somewhat randomly changed things without warning.
All of these were pretty foreseeable.
Apps aside, the proportion of basic wall pageloads that hang due to, I'm assuming, some javascript complexity approaches 100%.
When did you have this experience? How long ago is it? For now quite some time, Facebook has been open with upcoming "breaking changes", giving Facebook App developers three months in advance to adapt accordingly: https://developers.facebook.com/roadmap/change-policy/
Except that not all posts follow the new ID format. Not all new posts even follow it. It's now a mix of the two.
At one point, they've also chosen a web forum, a wiki lots of devs bought into (but which they later entirely blew away and replaced with Bing searches of their site), and probably a half-dozen attempts at official on-site docs.
When I saw they'd offloaded to StackOverflow, I thought that was an idea that had some promise, but the big question in my mind was how long until it reached the critical mass where it would consist of more out-of-date answers than current ones. And what they'd do when it does.
The answer, of course, is likely move fast and break something, and heaven help the people who had the idea of building something on top of their quicksand.
They seemed to have fixed it now, but for a while the search box would return results from the wiki, which had been removed, leading you on an endless tempting "the answer you want is just around the corner" unhelpful drugery.
It's not documented as a format (very little is) but it's been this way since at least 2011-ish.
If there is a better way to get this information it is also undocumented.
If the API has a usable purpose without providing that info, then I think I'd disagree with you - since you're reverse-engineering the implementation to get more data out.
Reverse engineering is OK, but implicitly carries the risk that stuff will change and break you without warning, in which case you can't really complain, in my opinion.
If the API's purpose can't be fulfilled without that info, then the API was probably broken as designed (you needed to parse the id to get the info, they just didn't document it).
Liking works, but unliking does not in cases where the post_id returned has the profile_id prefixed. So you have to remove the profile_id from the post_id to unlike.
The reason why developers have to reverse engineer is that the Facebook platform doesn't and did never work the way it is documented.
Here's a bugreport for that problem which hasn't been solved since last February! (The top comment here with a workaround for that issue was created by myself: https://developers.facebook.com/bugs/539328566085833?browse=...)
I've suffered from having designed bad/limited APIs before and watching as people dig into bits I didn't want them to dig into, limiting what I can do in the future.
Not sure on the best way to avoid it, but I guess it's a 'nice problem to have' since at least people are using your API.
I've updated the Graph API getting started guide to mention the fact that IDs are opaque and also mentioned it in our comments guide since comments are one of the few places where we have IDs that are made up of other keys.
Thanks for the feedback - it's good to hear about things we can fix.
The "Move Fast and Break Things" attitude is fine when you're releasing a complete product. Look at Twitter or GMail. Google and Twitter change their interfaces pretty much constantly, and outside of a few hours or days of grumbling, pretty much everyone goes back to using the services.
But if you're providing functionality that other people are coding against, it's a cardinal sin to break your API without warning everyone. When making API's, slower and more monolithic releases is often a better approach. It not only gives your teams time to develop and test the features, but it also gives downstream users of your API time to absorb the changes.
It was not completely obvious in 2007 that in-app virtual item transactions were to stay. Facebook itself was playing around with virtual gifts, but convincing users to pull out their credit card on a social network was novel.
It was pretty hard to predict specific monetization pattern - iLike looked into ticket-selling, Visual Bookshelf would do affiliate links to Amazon, Slide's apps would monetize through standard banner ads (and later video ads), Zynga was not even around at the time.
>> Otherwise, what's the point of building the platform?
Facebook displays its own ads on application canvas pages. Therefore higher engagement with apps => higher pageviews => higher earnings.
Seems me and pandodaily have a different definition of "engineer". I'm not an engineer, as I don't have an engineering degree, but I do feel bad for my friends who do, are professionals, and get grouped in with the type of programmers who are just haphazardly winging it to this degree.
"has never been malicious": heh, the argument is that encouraging businesses to rely on a platform that intentionally and knowingly doesn't deliver isn't malicious because the root cause is incompetence or not caring. Not sure about that one.
Hear, hear. That comparison was insulting.
That's like calling a child playing cowboy with a plastic gun a member of the SAS; it really puts down all the hard work and skill of professionals.
There's a bit of internal debate that now that the phrase has been shortened that it's used as an excuse to be sloppy for the sake of "getting shit done" (as they say at Box). Still, given that I used to work at places where mistakes were consistently held against you, I like the idealism here. </dropping knowledge>
> Outside of games, there has been no killer Facebook app.
Given the current policies, I'm not sure what killer app could exist other than maybe dating.
I've done a lot of fiddling and prototyping on the Facebook platform and API (albeit mostly on the business/page side). With every-changing policies and API specs, no startup founder should consider anything more than Facebook "features"–never anything your business model hinges on.
I myself have written a TON of code for Twitter, for example, that is no longer useful due to ever-increasing restrictions on the Twitter API (combined with the network growing more and more. I want my 20k API requests per hour back!). Since these platforms can change their terms and access at any moment, you could easily have a great idea and implementation that they invalidate accidentally (or intentionally). That's just too much risk for me.
The NSA would like to disagree....
They could have also been LinkedIn before LinkedIn really took off. People tried to use FB in that manner but the real value of LN is in the features they offer to businesses (recruiting, sales, etc). Again, they had this enourmous network but didn't think to add value to it.
They could have gone after Craigslist, especially in the realm of real estate where CL wants to make sure any searching is as painful as possible.
I also feel like they dropped the ball in regards to business marketing. Plenty of small businesses can't afford a real website, FB could have been a powerful platform for finding the kinds of small businesses that are buried by other sources. They know where you live, they could know what your network likes, and they could have offered cheap, professional looking pages that get the businesses close to you on board.
Their network has so much hidden potential but they've done nothing to dig it up. Use among my network is declining but not long ago it was the hub of the internet for many of my friends. They had the eyes and mindshare to get a billion people to at least try a new service. Add the power of all those connections and they could have deprecated half of the underpopulated, poorly designed, or poorly managed sites like Yelp.
And the Facebook Platform has provided significant value for non-games, too. Spotify, for instance, is only as popular as it is because of its early integration with Facebook.
Could FB have handled their platform better? Yes absolutely. The constant API changes and failures caused no end of headaches for developers and significantly reduced their platform's value. But, I think the claims in this article are ridiculous.
Where I come from, "significant value" for a businessperson is defined as earnings (profit). I am aware (from other posts to HN) that some developers of some apps on Facebook, and some advertisers on Facebook, think Facebook is a new environment for their businesses that provides new opportunities to profit. But is that the general experience? Is the Facebook ecosystem as a whole a profitable ecosystem that allows third-party companies hosted on that ecosystem to profit, and meanwhile allows Facebook to profit?
As I have written before here on HN, "Facebook will go the way of AOL, still being a factor in the industry years from now, but also serving as an example of a company that could never monetize up to the level of the hype surrounding it. I used to see friends on AOL. I never felt an obligation to help AOL monetize just because of that. Networks are a dime a dozen. Right now, Facebook is a very convenient network, and I like it. I do not predict that Facebook will make a lot of money because of users like me."
1) Just keeping up with documented and undocumented breaking changes is probably a full time job.
2) Expect that some feature of the API breaks every 2 weeks, especially login on their Android SDKs cannot be relied upon.(reliable for me is the industry standard for server uptime usually advertised - 99.99999%) If your application just uses few parts of the API it probably once every 1 or 2 months.
3) Substract 0.5 to 1.0 points from the rating of your app in the Android or iOS app store, depending on how heavy you rely on Facebook, because of the instability of their APIs.
4) Expect to spend at least a day per month writing bug reports. (Or just give up like I did)
5) You will do lots of reverse engineering to work around the bugs which they are constantly creating at a mind blowing rate.
My final conclusion after almost 2 years of working with their APIs (as a good actor) for my app (link: https://play.google.com/store/apps/details?id=com.flipster&h...) is that I will never ever ever build again something that relies that much on Facebook.
If I need a friends list in a future project, I'll just use the users telephone book, like I already did on a VoIP/Messaging app for mobile that I built for the company I work for.
If I need private messaging I'll just set up my own XMPP server.
If I need login, I will sure as hell save myself the headache of using their fucked up (and even when it is working - bad converting) login, and build one myself!
1. The lack of timely bug fixes and the lack of internal Facebook developer contact with external developers. The only consistent employee at Facebook in the IRC channel was Joel Seligstein. I also actually directly heard one of the Platform PMs say that she thought "triage" meant high priority. They did hold events but that was more a social gathering than anything.
2. The ridiculous lack of spam control and enforcement of policies on the large developers. It's easy to see why people started disliking apps looking back at how much time users had to spend sifting through spam notifications!
I can't imagine people were so naive they would think Facebook would let this platform be a "level playing field".
Reality did not agree.
I don't blame people who would think that back in 2007. This was a new way to build and deploy applications. It could very well have worked out great (e.g. Amazon for example, has been largely successful in building an e-commerce platform for third party vendors that also compete with them. Not to mention competitors (e.g. Netflix) using AWS). Having said that, after developers were burned by Facebook, Twitter and Google, I don't think anyone should trust social-cloud platforms enough to base their entire business on them.
https://news.ycombinator.com/item?id=82706
Facebook moving the application "profile boxes" off the main profile page was really the turn-key event where it clicked that things were headed downhill. They did it because people were getting fed up with app spam, but it also demonstrated that they had zero regard for existing Platform apps that had built infrastructure around a given set of assumptions.
At that time, companies like Zynga were still in their infancy and had plenty of success runway to go, but it really marked the inflection point.
As an app dev, I saw the writing on the wall years ago... at the time of that post it looks like I had about 550k users. Ended up selling all my apps six months later at ~1.3m, chalk one up for foresight == hindsight.
The Facebook API did not have some incredible mishandled potential. Instead, it was a very cool and forward-thinking API that had to constantly be modified to fight spam and keep up with Facebook's rapidly evolving product (which is a couple orders of magnitude more engaging now than it was in 2007 I might add).
Sure the Facebook API could have been better managed. Documentation and stability could have been better for sure. Maybe even the features could have been better. But the Facebook API is not a world changer. The Twitter API is more along the lines of a world changer, but they decided they needed to build the most profitable business possible and being plumbing was not in the cards. The Facebook API is a way to bolster the core Facebook product (which is amazing, probably the most engaging product ever created in human history short of addictive substances). This idea that if they just did right by developers it could have been so much more amazing is just a cyberpunk fantasy. The Facebook API could never be more than a reflection of a product.
Looking back on the mashup era, the future is not going to be from the goodwill of corporations to provide amazing APIs. Rather it will be open source, open protocols and open data that allow for true advancement in the state of the art.
To me, the two biggest ones are:
1. As others have said, spammy apps hugely detracted from the experience of using Facebook.
2. I haven't seen this discussed elsewhere, but I think it's huge: Facebook apps were never allowed to serve dynamic content on people's profile pages. This significantly impaired how rich, useful, and "social" these apps could actually be.
For example, I used to work for BillMonk, which was a way of tracking social, informal debt between friends. It should have been a perfect app for Facebook. But it wasn't possible for us to serve content in our widget that would give you up-to-date information about how much you owed a friend (or they owed you). You had to "push" your updates to this content, as I recall, but it wasn't technically feasible for us to push content updates to Facebook every time there was a change to our database.
I think Facebook imposed this limitation very deliberately for a very good reason: if an app could serve dynamic content, it could also monitor how users were using Facebook. Someone could create a "stalker" app to tell you who was visiting your profile. If such a thing existing it would significantly deter people from using Facebook. You'd have to think before every click about the social implications of visiting the next page.
It's an important part of Facebook's model that you can look at whatever you want without looking like a stalker.
I think they finally moved on from that a bit, but the "let's run an app inside a social network" thing was always of very limited value.
I think that my favorite piece of writing by Cory Doctorow is his essay "All Complex Ecosystems Have Parasites" and I thought of it early into this piece. Any ecosystem of any interest will always have parasites within it. When you attempt to indiscriminately remove them all you almost invariably end up with something sterile and far less interesting. When I discover a weed on my lawn, my reaction isn't to burn the lawn and pave it. Sure I wouldn't have any weeds that way, but a concrete sheet is far less interesting (to me at least) than a lush lawn. So I suck it up and deal with the weeds on a case by case basis, because that is the only way to do it without torching the rest of the ecosystem that I want to maintain. It seems like Facebook, when faced with the weed problem, went the concrete sheet route, torching both the parasites and the rest of the actors that actually made up the ecosystem. Sure, it means that there are no more weeds, but it means that there also aren't any of the other organisms that create value in your ecosystem.
Another thing to consider is the energy cost of "putting down roots" so to speak in an ecosystem and evolving with changes. An organism has to spend energy to establish itself within an ecosystem, and it also has to spend energy changing itself to adapt to changes in the environment. Every joule of energy it spends doing this is a joule it doesn't spend enriching the ecosystem it is a part of. Going back to my lawn, I don't change the soil composition every year, and I also don't pull up the grass and set it back down to resod every 6 weeks. Eventually it would die, because I would be forcing it to spend all of its energy adapting to changes I introduce rather than helping the ecosystem thrive. And then I'm back to my barren field problem.
I don't have a good ecosystem analogy for competing against their developers, but I will note that it can be framed in energy terms again. Any other organism, after watchers other repeatedly expend their energy in a particular ecosystem only to be crushed will likely decide against attempting to establish themselves in your ecosystem and instead choose one of several other competing ecosystems, even those that appear initially less attractive, because what is the use if you likely end up failing anyway?
So, my takeaway given only my shallow knowledge of what happened based on this article is that other organizations attempting to establish an ecosystem (and that is really what they want when they say platform) and reap the numerous benefits that an ecosystem can produce should spend some time thinking about how ecosystems become established and thrive in the real world before charging clumsily forward with their own naive attempts.
No platform developer, when faced with weeds would say "let's torch it".
What really happened in my opinion is that they tried a weed killer. However, as in real gardening, it turned out that distinguishing a weed from a non-weed is complex, subtle, and full of value judgments. In some cases, even if a plant has weed-like traits or capabilities, it's not a weed in the eyes of the gardener. It depends how the capabilities are used.
There were also cascading effects (and here is where I really stretch the metaphor). Once a few non-weed members of the ecosystem were killed, the garden suddenly looked a lot less inviting to others.
So I think that the analogy still stands, in that if you want an ecosystem there isn't really any way to mechanize it yet and you have to be prepared to do some of the work by hand. Creating an ecosystem worth having means offering up interesting capabilities. Offering up interesting capabilities means that parasites will appear. You can remove the parasites either by removing the interesting capabilities, or by doing the hard work to single them out. Doing the former can have grave consequences for your ecosystem even if it appears easier/cheaper in the short term.
Doing it properly does involve understanding both what 'weed' means to you and 'desirable plant' then being careful not to poison the latter (and actually encourage it) while you try to deal with the former.
I don't really know the details; this is just reflecting my experience from working on platforms.
As you say, in many cases, it ultimately requires human judgement, which is something that engineers are loathe to rely upon.
Also they can't share the social graph; the monopoly on the data that they have gathered on us is the whole point/worth/wealth of the company.
If facebook or google run into financial problems (this might happen if tax loopholes are closed, and countries decide that even big companies have to pay real corporate taxes) then these companies will be bailed out as they are 'too big to fail'.
Reddit and HN are great for scanning for new bloggers to follow (hence the number of posts in these places pissed about the Google Reader shutdown).
Otherwise it depends on your interests. I'm most likely to check out Anandtech, Ars Technica, Wired, and some ZDNet bloggers.
Actually, the only facebook posts I can stomach are from the Amish--sad, but true.
But honestly, even if I was disappointed about all the fuckups we as developers had to deal with, as a user I am really happy about the fact that there are no attention claiming apps on Facebook, it is actually therefore I still use Facebook, in my free time as a normal user.
Instead, it hasn't done any of this, and their best attempt at monetization is "Would you like to buy your friend a gift on their birthday?"
It was obvious with Zynga how quickly things could go viral, and yes, sometimes things were extremely spammy, but for the most part, you could have a lot of fun apps on Facebook. Now, there are almost no apps left, except core Facebook. The only thing people appear to use it for is to get login information, or for mobile-type contacts information.
I tried making my own Facebook app, and ran into a bunch of issues, including really poor documentation. You couldn't even google for things, because things changed so quickly that you couldn't tell which was the most recent information. It wasn't a pleasant experience at all. It's too bad, because like the article says, there was so much more potential than what it has turned into. And I know people have been saying this for years, but I really am seeing a lot more of my friends simply stop logging into Facebook now, because it's boring. It will be interesting to see if they have what it takes to make bold, innovative moves to make the platform more attractive again.
The problem is that they're selling advertising access to their people. That's all they're selling, via direct ads or graph access and 'sharing'. Impressions. Period. So there's a very natural friction between people who are investing a bunch of dev time and expecting their impressions for free and facebook, who doesn't want you to piss off their users with a bunch of spammy ads without at least paying them for it. So facebook is locking it down, little by little, and all the devs who were used to getting something for nothing are seeing their marketing vector dwindle little by little (unless you pay).
The whole 'review process' I found extra annoying, though. I will tolerate that shit from Apple, but not from facebook.
Impossible (for Facebook). Open platforms are open decentralized social networks like Diaspora. Facebook will always have profiles exploitation interest and it's a failure by default for anyone caring about openness of the Web.
Why not just say Canada?
As a lone developer keeping up with the changes and additions wasn't easy - I literally ran the gamut - from FBML to FBJS to FQL to xd_receiver.htm to the JS SDK to FB Credits to Graph API. Initially I cut them some slack - it was a new platform, and we all make mistakes.
But things never really got better. I couldn't tell you how many times I came across 4, 5, 6 different ways to do the same (seemingly simple) interaction with the platform, only one of which worked, and of course not the officially documented method. Or inaccurate or nonexistent API docs. Or how many times my app would suddenly break without pushing any changes - I became accustomed to just waiting it out until Facebook would release a patch for whatever they broke, and have to tell my users to just wait it out. This would usually occur Tuesday night/Wednesday if I remember correctly.
Solutions to problems would usually lie in an obscure forum post after about 10 minutes of googling, posted by another friendly developer who probably tore his hair out looking for a solution. Ah, the camaraderie. Here's a recent one I just came across (and they're not hard to find) http://stackoverflow.com/questions/16649634/ios-url-scheme-f... Accepted answers that start with "Facebook seems to have..." and end with "change or remove them completely at will" tend to give developers more than a few gray hairs.
It also doesn't help that Facebook tends to treat developers like sheep. At first this didn't bother me - after all, they weren't forcing me to build apps for them, and I was free to leave at any time. In the early days I'd contact developer support (I don't think there's a published number) to report bugs/issues, suggest improvements, or genuinely ask for help with a problem. I never got a single non-automated response. Not once. So I stopped wasting my time and just became more and more bitter with every breaking change.
The 30% credits tax was the inflection point of the downfall. IMHO, that was a "me too" response to Apple's iOS platform (coincidence that they came up with the same fee structure?) and was, for me, the tell-tale sign that they were no longer interested in their developers' well being. Yes, I understand they need to make money. I am all for ringing the cash register. But Apple and Facebook are different platforms. Apple has a highly trafficked worldwide app store. They let me put my app icon on my users' home screens (that's valuable real estate), and I could push out unlimited notifications to my users' devices to keep them engaged and coming back with one click, among other things. Facebook has no such equivalents. I guess you could argue you're paying for the viral distribution, but after they've heavily curtailed their viral channels and people have become more and more immune to app invites, there's really no way to get free distribution anymore from Facebook. You still need to be buying ads, mostly from them.
If they wanted to make money and curtail spam, all they had to do was charge developers by each notification, invite, or newsfeed post they'd send out. Set a fixed price per message, or use a competitive auctioning system like adwords. The crapplications would never be able to afford their own spam.
I've since migrated my apps away from Facebook, either to mobile or on standalone web sites. Needless to say, my life as a developer has gotten a lot easier, and since I have more time to focus on improving my apps rather than keeping up with breaking changes, I'm doing better than I ever have before.