Why Facebook Is Not Serious About Photos – The Development Platform

In part 1 I talked about the end user experience on Facebook and why I don’t believe they are doing a very good job and offering a great photo experience to users.  In this post I want to focus on Facebook as a development platform for people like me to build apps leveraging the data within Facebook.

Ah, where to start.  How about I start with the Facebook f8 developers conference I went to in April.  In the words of Mark Zuckerberg, the APIs Facebook makes available to developers are the same APIs used to power Facebook.  He says this with such enthusiasm and conviction that if these APIs are good enough for Facebook, they are good enough for me to build my app.  The problem is, I am not trying to build Facebook, I am trying to build something using the data within Facebook.  Any developer knows that to build a product of the scale that Facebook is at requires serious tradeoffs and optimizations.  Over the past 6 months I’ve become intimately familiar with the Facebook APIs.  It is clear that they are there to meet the needs of the Facebook product, with little olive branches here and there to demonstrate they aren’t completely ignoring the needs of developers.

Rich API

To be fair to Facebook, they are trying a little bit harder to make developers live’s easier.  The APIs are now versioned and will last for two years. Well, almost.  The 2 year guarantee only applies to core properties.  When looking at the documentation, very few properties are core.  Even if 99% of the properties were core, there could be one property that is critical to my app, and Facebook could remove it, change it, or do something else to the property that could make it impossible for my app to function the way intended, it could kill my business.

For the past 2 years or so, Facebook has had two different APIs for accessing data, FQL and the newer Graph API.  At the f8 conference, Facebook announced they would be deprecating the FQL API in 2 years.  In my opinion, the FQL is the richer of the two APIs.  I have my gripes about FQL, but it certainly provided a richer way to query information.  So Facebook is removing capabilities from the developer and shifting more of the heavy lifting from Facebook to the developer.  It is rare that a modern development platform makes a wholesale cut in functionality resulting in a net reduction in capabilities of the platform.  Sure, APIs come and go, tweaks here and there, but this is big.  This is the exact opposite of a WOW feature that opens the door to a whole new world of possibilities of what I could build.

What is perhaps most frustrating is that with what few fields I can filter on, depending on what the value I use for the filter, I might not get results, even if I know there are matching results.  I believe this has to do with the Facebook internal 5000 row limit.  I can’t tell you how many forum posts I’ve seen on Facebook app developers getting tripped up on the internal behavior garbage Facebook makes its developers deal with.  Yes, they explain what is going on and how to deal with it for some situations, but is it really even necessary to expose this dirty internal laundry to your development community?  And for the scenarios that have no pattern for reliably getting results, it makes any filtering with the API completely worthless.

At f8, Facebook did announce some new ways of querying data.  However they were very narrowly focused.  Being able to make queries with more filter conditions and get consistent results would be a huge improvement.

Rich Data

Let me go back to the scenario I mentioned in my previous post about finding photos from my anniversary and look at it from the developers point of view.  In Sepia, I have been going through different scenarios such as friends’ birthdays, mother’s day, father’s day, anniversaries, etc to try and automatically find relevant/interesting photos from Facebook.  Since Sepia is an application I am developing, I am not restricted by the user interface provided by Facebook.  I am primarily constrained by the quality of the data within Facebook and the APIs offered by Facebook to access that data.  Remember what I said about Facebook nuking all metadata from photos when I upload them?  Well, there goes a ton of interesting information I could have used to build new ways of enjoying your photos.  My friends who uploaded photos days or weeks after the wedding were not easily found with a search on our anniversary date.  So with what little data I have left to work with, it may not even be an accurate representation of reality that allows me to find relevant photos from our wedding.

Unlike the Facebook app and web site, I can use the Graph to search for photos by a date range, or if me or someone else is tagged in the photo.  Beyond that, I can’t do much more. I can’t search by location, description, comments, or more complex queries including multiple dates or date ranges, or multiple people tagged.  A location search for example requires me to download all photos that could potentially be relevant, and then implement my own filtering to narrow down the results.  This isn’t rocket science, but it is more work for me, doesn’t scale very well, and is something relatively basic that one might want to do with photos.  A company serious about building a developer platform to work with photos should have this.

Data Beyond Photos

One of the reasons I started building Sepia on Facebook rather than another platform with photos such as Flickr or Google+ is because of the rich data set available beyond the data primarily associated with photos.  This additional data would allow me to provide much more context and meaning to the photos of my life.  For example I wanted to be able to send a couple a collage of photos from their wedding on their anniversary.  Unfortunately their anniversary is not exposed to developers.  I know this is more of a bonus feature, but it is the kind of information that can allow developers to completely transform how we relive the moments of our life through photos.

Privacy Settings

Many users don’t let apps their friends use access their photos.  Having this setting makes sense, but I am doubtful many people are aware of it and what setting it has.  If your friends do have this set, it is not explicitly noted to the friends of the user who has prevented access to photos.  As a user of an app, I may think the app is broken if I don’t see John’s photos.  Privacy is an inherently complicated problem, and Facebook needs to do more to educate people about the settings available and to help people choose the settings that make the most sense in the context of scenarios in which those settings apply.  This is no different than Facebook’s own strong advice to app developers to ask users for permissions to user’s data in the context of why they need it.  So why isn’t Facebook following the same best practices it encourages others to follow?  I realize this in many cases will require collaboration with app developers, but in the end, it would result in richer apps and a better end user experience.

Facebook App Sharing Settings for Friends

Facebook App Sharing Settings for Friends

With Facebook’s new versioned Graph API, one of the new aspects of it is that I can’t access any friends data from an app unless that friend is also using the app.  This pretty much trumps the privacy issues I just described thus far.  I don’t blame Facebook for this change though. Users need to own and control their data, and this theoretically should allow them to do that more easily.   For developers, our challenge is now even greater to figure out how to get more users on board.  With a significantly reduced set of data to access when I sign up for an app like Sepia, the experience will be much more limited that it otherwise would be if all my friends were using it as well.  I believe Facebook needs to work with developers to find ways of encouraging people to sign up for apps that enhance the Facebook experience.  Without a rich app ecosystem, Facebook will be limited by their own resources and ideas, leaving the door open for competing social networks to attract users away from Facebook.  Microsoft and Apple (iOS more specifically) are only what they are today because of the armies of developers out there who built on the rich developer platforms those companies provided.  Facebook is far from accomplishing a similar feat.


The features Facebook offers for your photos are squarely targeted at sharing new photos for people to see now.  The lack of rich metadata on photos unless added by Facebook users, and the week development APIs doesn’t foster a rich community of photo applications on Facebook.  Yes, simple compelling scenarios can be implemented as Sepia has demonstrated with the This Day in History emails.  Some more interesting scenarios can be implemented with significant development effort, but are limited to the quality of the data within Facebook.  For Facebook to be serious about photos for end users and developers, they need to support the rich metadata people expect from photos and enhance their APIs to make it even easier to build compelling applications with photos on Facebook.



Why Facebook Is Not Serious About Photos – Part 1

When I look at all the different photos services out there, there are 4 main capabilities I want…

  • A great experience for viewing and sharing my new photos with friends and family.  I’m not really into sharing my photos for the world to see.
  • An easy way to find and enjoy photos from the past.
  • A backup of the photos I care about most.  I can get this elsewhere, but then that is another task I have to set up and manage.
  • A rich developer platform.  I am biased here because I am a developer.  However you should care about this even if you aren’t.  You will benefit from the creativity of the worldwide developer community finding new ways for you to enjoy your photos that your chosen photo service hasn’t though of, or perhaps hasn’t done a very good job at.

Sharing New Photos

So how about those new photos on Facebook?  How is it?  In my opinion it is the best at serving the purpose of sharing my photos with friends and family because it is where the highest concentration of those people come together on the internet.  Of course your audience may be on Twitter, Instagram, Flickr, or somewhere else.  What matters is that you put your photos where you audience is going to see them.  Beyond that, all sorts of shortcomings become visible.  The max resolution of photos on Facebook is a paltry 2048×2048.  I mentioned this in my blog post on choosing a photo service.  TVs and monitors are exceeding those dimensions far more often now.

It isn’t too uncommon for me or a friend to want to know which camera they used to take a photo.  On Facebook we have to ask the question because Facebook strips all metadata in the photo when you upload it.  All the nitty gritty details about the camera, lens, settings, etc is perhaps not a huge loss for family and friend photo sharing.  However for the more hard core photo communities of public photo sharing, these are essential pieces of information about a photo you expect to be able to see.

Google+ Photo With Location

Google+ Photo With Location

Personally, I like to share the location of my photos.  It is a richer experience for those viewing the photos and it is also nice for me when I want to look at old photos and perhaps I forgot where the photo was taken.  My phone has the location stored in the photo.  However when you upload the photo to Facebook, in order to make the location visible to everyone on Facebook, I have to set the location explicitly in the Facebook UI.  This is an unnecessary hurdle when eliminating as many clicks and taps as possible is essential to retain users attention.  Google+ on the other hand shows me a little map next to a photo (along with all the other metadata in my photo) and allows me to remove the location altogether, or to share the location for all the photos in the album.  I don’t have to search and select a location from another set of UI.

Facebook has a not too discoverable feature called shared photo albums.  The gist of it is a photo album, that you invite other people to add their photos to.  So for example, we spent a weekend with a few other families and I wanted to easily access all the photos from everyone that weekend.  I created a shared album and invited them to it.  One family added their photos, the other didn’t.  For the photos that were added, great!  The problem is, people are busy, miss things, can’t figure out how to use feature sometimes, etc.  The real opportunity here is not to create another feature where people have to actively manage their photos more.  Facebook knows who was there that weekend because we all either posted photos to Facebook or were tagged in photos posted by others there that weekend AND they all have location information in them.  A great photo experience would be something akin to Google Stories where Facebook sees that everyone is probably at the same event/activity and suggests to us that we have a combined view of all our photos that we can all see with one click.

fb shared album

Finding Photos

If you are tired of reading, know that in this area, Facebook gets an F-, 0%, complete failure in my opinion.

My anniversary was a couple months ago.  I wanted to go on Facebook and find photos from our wedding weekend posted by me and friends.  There are really 5 main variables at play here in this scenario to help me find the relevant photos.  Album, time, location, people’s photos, people tagged in photos.


Not everyone made an album of their photos from that weekend.  Most are just uploaded to the default Mobile Uploads or some other generic album.  Even if they all did put in an album, there is no way for me to search all my friends photo albums. I would need to go to each of their profile pages.  This is consistent across all aspects of photos, I can’t search for anything, it is all browsing.  Most of the browsing is not at all optimized to be efficient.  Lets say I was religious about creating albums and I uploaded all my photos to Facebook, there would be hundreds of them.  Browsing for a specific album  in their UI would be horrendously slow.


How about I go right to the date of the wedding.  I can use the Timeline for looking for photos by time.  However this requires me to scroll through an entire year’s worth of Facebook posts, not just photos.  There is no way for me to go to a specific date in just a few seconds. And then, at the end of all this I am only in one person’s timeline.  I wanted to see photos from  all my friends who posted photos from the wedding.  This brings me to the next big problem with finding photos or anything on Facebook.  You can’t combine variables when trying to find anything.  Of course this idea is already dead in the water because of the previous point that there are no searching capabilities at all, only browsing.

Ok, so lets say I am determined to browse for photos.  On the date of our wedding, there were not actually many photos posted relating to the wedding.  I found many photos from friends posted days, weeks, or even months past the actual wedding.  OK, I get it, you just want to enjoy the wedding festivities and worry about posting later, the way it should be.   Remember what I said about Facebook nuking all metadata associated with a photo when you upload it? That includes the date and time the photo was actually taken.  So now, rather than our wedding photos showing up as being taken on the date of our wedding, they are scattered across the multi-month timeframe in which people got around to uploading them to Facebook.  I find this very odd for Facebook to do.  They want every last detail of your life down to the minute practically on when it happened, yet when I post photos I have a history of when I added it to Facebook rather than when it the photo was actually taken.

People Tagged in Photos

I know myself and others are tagged in photos, so I could use Facebook’s ability to see photos I’m tagged in, or photos me and a friend are tagged in.  However this alone is insufficient get photos from the 10s of people who were at our wedding and narrow it down to our actual wedding date rather than all the other times I’ve seen these people.


My last hope, location.  We were married in a church we never went to except for our wedding.  Hidden away on your profile page, there is a way for you to view a map of all your posts.   It is very clumsy to use compared with every other modern map out there.  Of course I can’t search it, because why would I want to search to jump right to a location?  And it is only my photos! I can go to a friend’s profile page and view their map, one by one, and it would take forever.  But then the real kicker in all this is what I mentioned earlier.  Facebook doesn’t leverage the location in your photos. You need to add the location in Facebook’s UI on your own.  So chances are people probably don’t even have the location on the photos.

Facebook Places Map

Facebook Places Map

This may seem like an exceptionally complicated scenario, however I don’t believe it is.  All the big events in life happen with other people, somewhere, sometime.  We remember some set of those variables, and naturally want to use them to find photos from our past.  We all have holidays, graduations, weddings, big birthdays, anniversaries, religious events, etc. and want to see photos from them again.

One last example that is completely different.  Lets say I want to see all the photos me and my friends have posted that have a baby or kid in them doing something cute.  In my experience people love to comment on these sorts of photos and I’d bet I’d do pretty well if I could search for all photos that have a comment with ‘cute’ in it.  Just like all the other pieces of data associated with photos, I can’t search comments either :(.


I already touched on this a bit for Facebook in my post on choosing a photo service.  This is really quite simple.  Facebook stores a low quality version of your photo with none of the metadata.  Do not rely on it as your primary backup of photos.  Maybe your 4th or 5th backup is ok, a low quality photo is better than no photo!

Developer Platform

This warrants its own blog post.  Stay tuned.


Facebook is a social network which many of us get a lot of benefit from.  From my point of view though, they are currently focused on getting as much information out of people as possible, so that information can be shown to friends, and encourage them to share even more information.   Facebook is a giant personal information vacuum, showing what it just sucked up.  This only helps me with new photos, and fails at just about every other photo scenario.  After 7 years as a user of Facebook, I am sorely disappointed.  I use Facebook to augment my experience with photos, sharing in particular, but beyond that Facebook has not demonstrated to me that it is serious enough about photos that I should consider it as the primary home for my photos online.