Building a growing, thriving application can be challenging. Building that application on an innovative Platform that's releasing new features, deprecating old APIs, and occasionally has bugs can occasionally make it even more challenging.
At Facebook, we want every developer, big and small, to have fast access to important information regarding Facebook Platform. Yesterday we released our Developer Roadmap to give you more predictability and better insight into what we're working on over the next two quarters. Today we're releasing Platform Live Status, a tool that will serve as a destination for the latest information about Facebook Platform performance.
Visit the Platform Live Status page or subscribe via RSS to see the current status of Facebook Platform, recent issues, live API response time and error count, developer updates, and the top live bugs.
Niket, a software engineer on the Platform team, wants you to know what's up.
Editor's Note: 10/30/09 3:30 pm - You can also subscribe to updates via email.
At Facebook, we focus on providing our developer community with simple building blocks to speed innovation and create an environment where small teams quickly push new products that can rapidly disrupt industries.
As part of our commitment to enable you to easily build on Facebook Platform, today we are announcing a roadmap which includes a series of changes and improvements that will roll out over the next two quarters.
These updates are designed to simplify communication for users and developers, improve app discovery and engagement, and provide you with more comprehensive tools for building or expanding your business with Facebook.
Through these new APIs and tools, we are giving all developers building with Facebook and those in our largest application category — gaming — new ways to attract and engage users.
Direct and Simplified Communication with Users
- Access to user email addresses. To reduce friction and empower application and Facebook Connect developers to manage their relationship with users, for the first time, we're providing a simple and safe way for users to share their email addresses with you.
- Focusing Facebook communication on the stream and Inbox. This consolidates developer and user communication into the two most powerful channels — stream and Inbox — and provides new features to help users stay engaged with applications. User-to-user communications commonly in the notifications and requests channels will be moved to the Inbox.
Improved Application Discovery and Engagement
- Simplified navigation. To make it easier for users to quickly find and engage with applications, their favorite apps will be featured on their home page with bookmarks and new dashboards. Applications will also be represented on canvas pages with a format that increases brand association with users. In addition, users will be able to better represent applications on their profile following short-term changes that include focusing profile integration on application tabs, as well as removing profile boxes, the info section of boxes, and the Boxes tab.
- Prominent new Dashboards. With default placement on the home page, an all-new Apps Dashboard and Games Dashboard will ensure users can easily find and return to their favorite apps and discover new ones; the Games Dashboard will be a dedicated place for users to interact with games and will provide an additional communication channel, called "News", where you can personalize text updates for users.
- New Counter channel. Re-engaging users is an important part of delivering a high quality experience. We are introducing the Counter, a simple number to the right of your application's home page bookmark. The Counter is your own channel where you can prompt users when they need to perform an action within your application.
New Developer Products and Clear Policies
- Open Graph API. Any page on the Web can have many of the features of a Facebook Page – users can become a Fan of the page, it will show up on that user’s profile and in search results, and that page will be able to publish stories to the stream of its fans.
- Improved Application Insights Page and new Analytics API. We will provide improved tools with more robust data to better adjust and manage applications and Facebook Connect-enabled websites.
- New Facebook Connect Libraries. Our libraries will be smaller, clearer, and faster.
- New developer website, Platform Live Status, and public roadmap. Developers.facebook.com will include a central dashboard to view the health of various integration points, bugs and Platform uptime as well as detail about upcoming changes and improvements to Platform. You will also be able to subscribe to the Developer Blog and Status Feed via email.
- New principles, simplified policies, Verification standards for all. We have streamlined our policies and principles and will be proactively applying them widely across Platform. In addition, we're retiring the formerly optional Application Verification brand, submission process, fees and badge; the program's higher standards will be required and applications will be subject to review at any time.
You can find details and estimated timing for all of these items on our Developer Wiki and view initial screenshots in this photo album.
Where We Go From Here
Our goal is to increase the opportunities to innovate on Facebook Platform and reduce its complexity for both established and new developers.
Application communication in channels like notifications and requests aren't effectively serving their original purpose. There is a significant opportunity to improve the user experience and reduce spam by replacing them with better features and moving most communication to the stream and Inbox. We believe these steps, combined with providing users with a way to share their email address with applications they trust, will simplify the site and create new long term opportunities for developers.
With simplified communication channels and unified integration points, the decision to build an application on Facebook or on a separate website with Facebook Connect becomes only a question of the goals of the developer creating a brand. The underlying technologies are the same regardless of whether your application appears inside Facebook or on an external website.
We're in This Together
We'll keep you posted about the progress of these changes and what they mean to you over the next two quarters. For the first time in this level of detail, we will provide a roadmap to help you anticipate future changes and opportunities. Like all roadmaps, it may shift slightly but we will share insight into what is happening as these details are available.
As part of these initiatives, we are focused on designing Platform in a way that we can run core Facebook applications on the same set of APIs you're building on. If our technologies aren't fast, robust, and simple, we will feel the same pains that you do.
We have a lot of work to do between now and the next f8 conference in the first half of 2010 in San Francisco. Our third f8 will bring us back to our roots - building great technology and spurring innovation. We couldn't be more excited about where we are going together. Facebook is a technology company and we want to provide you with the building blocks to start and change industries.
Ethan is excited to be sharing a view into the future of Facebook Platform.
The Facebook team will share a sneak peek of the Facebook Platform roadmap at a special Facebook Developer Garage Palo Alto today starting at 3:30 PM PDT.
Julia, who manages Developer events worldwide, is hoping you'll tune in to join us this afternoon.
We've released a few updates to our APIs this week that are aimed at enhancing users' experience with your applications and make building on Facebook easier.
Extending the Comments API
Commenting on content users post to their profiles increases engagement with your sites and applications. To aid in application growth and engagement, we've extended the Comments API methods (comments.get, comments.add, and comments.remove) so they all now take an object_id parameter, which you can specify in place of an XID. The comment FQL table now also takes an object_id as an indexable parameter.
Specifying an object_id allows applications to comment on content such as photos, videos, notes, applications, and posted items. For photos and photo albums object_ids, you must query for the new object_id field in the corresponding FQL tables (photo and album) rather than using the PIDs and AIDs we currently provide, since the namespaces overlap.
Filtering the Stream for Groups
Your applications can now get the stream from Facebook groups, and post to the Walls of groups. You can specify a group ID as a source_id to retrieve the group's stream with stream.get and FB.ApiClient.stream_get, and as a target_id to publish onto the group's Wall with stream.publish, Facebook.streamPublish, and FB.Connect.streamPublish.
Changing Your Canvas Page Name Programmatically
You can now set the canvas_name application property using admin.setAppProperties instead of editing the setting in the Developer application.
We hope you start using these features and we welcome your feedback on the Developer Forum.
Pete, the technical writer on the Platform team, likes spreading the news.
Each week, users share more than 2 billion pieces of content on Facebook, and most of that sharing is facilitated by Facebook Share buttons across the Web, on websites like YouTube, Wall Street Journal, and Photobucket. With just a few lines of code, Facebook Share is the simplest Facebook Connect, feature you can add to a website. Today we're making the sharing experience on Facebook and off even richer by launching the next version of Facebook Share, with a live counter, as well as new ways to measure how content is being shared on Facebook.
Enabling Users to Share Content More Easily
Once you've added the Share button to your website, your visitors can share articles and rich media like video, audio, or images with their friends on Facebook. To make this sharing more interactive, we've added new functionality to show a live count of the number of times the current URL has been shared. Check out the new version of Share live now on The Huffington Post and BuzzFeed, as well as RTP from Portugal, Spanish football club Real Madrid, and German news magazine Stern.de.
Anyone can add the Share button to their website with little to no technical experience, and style the button from a variety of options. To get started, visit the Facebook Widgets page, or read our documentation on the Developer Wiki.
Measuring the Effectiveness of Sharing
We're also providing you with the tools to better measure your results on Facebook by opening up the analytics associated with sharing habits on Facebook.
With new Share analytics, you can now access the information associated with each link shared on Facebook, including how often:
- Users share the link on Facebook.
- Users "like" the shared story.
- Users comment on the shared story on Facebook.
- Users click back to your site from the story.
You can do this programmatically by calling the links.getStats API method, or you can run an FQL query on the link_stat table. Here's an example of calling links.getStats directly from your browser, where you can see the information on developers.facebook.com: http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com
By giving you access to this data for all URLs, we hope you'll create tools to help analyze and understand how users interact with your content on Facebook. Techmeme is already using this data for selecting top stories, bit.ly uses it for analyzing URL traffic, and awe.sm does for providing publishers with better analytics.
We’re particularly excited about giving you access to Facebook Share Analytics because it doesn’t require any complex setup or authentication. We look forward to seeing your integrations!
Mark, a product manager on the Platform team, is excited to see how you share (and hopes you'll share this post!)
Editor's Note: 10/26/09 1:15 pm - We'd also love for you to check out LA Times' and Cracked.com's use of Facebook Share.
We're focused on creating the best ways to empower users to share with their friends, as well as providing developers with the tools they need to make applications social and add value to the Facebook experience. As a part of a greater effort to simplify the site, we're making it easier for users to discover the most interesting content by modifying the home page stream to include two views:
- News Feed will focus on popular content, determined by an algorithm based on interest in that story, including the number of times an item is liked or commented on.
- Live Feed will display all recent stories from a large number of a user's friends.
Stories your applications generate can show up in both views. The best way for your stories to appear in the News Feed filter is to create stories that are highly engaging, as high quality, interesting stories are most likely to garner likes and comments by the user's friends.
In addition to making the site cleaner and simpler for users, we're also making our APIs clearer and more straightforward for developers. We built many APIs to enable you to create rich social experiences for your users, and while we create these APIs to match pace with the evolution of the features offered, we often maintain similar, more primitive versions as well. This creates a sea of different methods with overlapping functionality. To make it simpler and easier to develop on Facebook, we're streamlining our APIs, beginning with those that publish older-style, template-based Feed stories.
Going forward, the only way to publish Feed stories into the stream will be via the stream publishing methods (stream.publish, FB.Connect.streamPublish, and Facebook.streamPublish). Posts published using the stream publishing methods contain only structured plain text data, which makes them easier to render on a variety of devices, including mobile phones and gaming consoles. For everyone else, these changes will take place in about 60 days (on December 20th, 2009), to allow time to make the shift.
This means that we will discontinue support for the following:
- Template bundles. You should start using stream attachments with the stream publishing methods instead.
- feed.publishUserAction
- feed.publishTemplatizedAction
- Facebook.showFeedDialog and FB.Connect.showFeedDialog
- Publisher stories that use templates (please transition them to use stream attachments).
- Feed forms that reference the feedStory form and the multiFeedStory form.
- One-line stream stories.
We will still publish stories that call users.setStatus and status.set, but encourage all developers to migrate to the stream publishing methods, as they let you set a user's status easily.
We are also making a few changes to how stream stories are rendered. First, we are shrinking the size of images to be rendered at a maximum of 90 pixels high or 90 pixels wide. Also, stream stories will only display the first image that has been passed to them. Most Facebook stories use a single image, and many use no images at all. If the stream story contains more than one image or a significant amount of text, the first image and a couple lines of text will be displayed initially, and the user will have the option to click a "See More" link to display the rest of the story. We find that the best images in stream stories are directly relevant to the action taken with the application. For example, if the story announces a user's high score in a game, the image should show that exact score. If the story shows content the user has created (for example, photos taken or art created), the image should be that user-generated content. Highly repetitive images that show up over and over aren't nearly as interesting or engaging.
We are also making changes to action links to create a cleaner user experience. Going forward, a stream story can have a maximum of one action link, and 25 characters in the link. Facebook's own action links tend to be even shorter than that ("Comment", "Like", "Share", "Become a Fan" are all ten characters or fewer). We'll also strip out "formatting" characters (for example, leading spaces, pipes, and brackets) to keep in the same simple aesthetic as the rest of Facebook. These changes will take effect within the next couple of weeks.
We're looking forward to making our APIs more straightforward and hope you are too. We welcome your comments in our Developer Forum.
Austin, a product manager on the Platform team, likes to keep it simple.
Editor's Note: 10/27/09 11:30 am - You can still present Feed forms to your users by calling Facebook.streamPublish or FB.Connect.streamPublish.
Flash continues to be one of the most popular languages for building engaging user experiences with Facebook, whether it's an application on Facebook like FarmVille or iLike, or Ben and Jerry's Flash Connect integration. To make it as easy as possible to build in Flash, we joined forces with Adobe last March to create a rich and social version of Adobe's ActionScript library for Facebook Platform.
We are excited to announce that Adobe has updated their library to bring you support for translations and the latest Facebook Platform APIs, like fql.multiQuery, the Comments API, and Inbox API. The new ActionScript 3.0 Client Library for Facebook is fully supported by Facebook and Adobe and makes it easy to build applications that combine the strengths of the Flash Platform and Facebook Platform.
You can get started, download the updated library, and find more information here.
Justin, a software engineer on the Platform team, looks forward to seeing the interesting things you'll build with Flash and Facebook.
Many websites are looking for ways to integrate Facebook Connect, such as commenting using Facebook identity or showing visitors their Facebook friends' recent activity. Companies like DISQUS offer widgets to such websites, providing off-the-shelf Facebook integration with just a few clicks. Today, we're making this even easier for users to easily integrate Facebook on their websites and widgets with the launch of the Create Application API.
Every website that wants to integrate with Facebook needs an API key. The Create Application API allows widget providers to programmatically generate this API key and other necessary settings. For example, a fourth party comment system like DISQUS can now more easily enable bloggers to integrate commenting with Facebook into their blogs.
To find out how it works, read the documentation on the Developer Wiki.
We want to see a strong ecosystem of developers enabling others to make great Facebook integrations. The Create Application API makes it easier for both service providers and websites looking to make their users' experience more social with Facebook.
Vishu, a software engineer, wants you to integrate with Facebook in just two clicks.
Desktop applications can now upload photos using our open source library, which is based on Adobe AIR.
The new version of the library makes it easy to upload photos directly to Facebook using photos.upload.
We created Facebook for Adobe AIR as an open source example on how you can build a desktop application using Facebook Connect for authorization and the Open Stream API for publishing directly to Facebook.
The new version of Facebook for Adobe AIR lets you drag and drop photos directly into the application. Here's a video showing how a user can do this.
You can download the open source library so you can start building your desktop application. You can see an example of the library in use by downloading the application source code.
Let us know what you think. We'll keep an eye on the Developer Forum for your feedback.
Justin, a software engineer on the Platform team, wants to make photo uploading so easy that you can't resist yourself.
At Facebook, we’re always looking for ways to increase users’ awareness and engagement with third party applications while maintaining and improving the user experience. Earlier today, we announced the new Applications on Facebook Page to users. This Page will serve as a one-stop shop for application-related news for users: from product updates, to profiling successful developers, to articles about great applications from a variety of verticals.
The goal of this program is to empower users to learn more about your applications and bridge the gap between users and the developer community. Through educating and inspiring users about what they can expect of quality applications, and the developers behind them, we hope to increase the trust they place in your applications. We hope these efforts will improve discoverability and incite more use and engagement across all applications.
We look forward to providing developers with more opportunities to get involved as the program evolves, and always welcome your feedback in the Developer Forum.
Amy, who is on the Platform marketing team, is off to set a new record in Typing Maniac.
More people create events on Facebook than on any other website, and last year we created the Events API to extend the reach to applications. Today we're announcing a number of changes to the Events product and the Events API to make them easier to create and manage.
First, we're making a few changes to how users create new events so that the process is even quicker and more streamlined.
The biggest changes that will impact Facebook developers are:
- We're merging the host field with the creator field in the event FQL table. We'll no longer require or render the host field.
- The event type and location fields are no longer required by users, so the event_type and location fields may be empty sometimes.
Second, we're launching events.invite, enabling a user to invite any friends to an event for which the user has admin rights, if the user granted your application the create_event extended permission. Just pass an event ID, list of user IDs, and an optional personalized message. (Alternately, an application could create an event and invite its users to it, too.)
Finally, we're removing the requirement that an application must have created an event to be able to set the RSVP for it. Any application can now ask for extended permissions so that its users can RSVP to any event they've been invited to. We're excited to see cool new integrations within desktop applications and event management sites to help users manage their RSVPs all in one place.
Thanks for the feature request
Alex, a software engineering intern from Brown University, would like an invite to your next event. please.
Developer events were in full swing in September, with developers participating in worldwide events from our more intimate fbFund Demo Day, to industry conferences, and community-based Developer Garages.
We kicked off September with Demo Day, which celebrated the end of the latest fbFund round. The 25 fbFund REV companies showcased their work to venture capitalists, press, and industry luminaries with eight minute presentations that summarized their accomplishments from the summer and business plans for the future. As a result of the program, eight of the companies raised additional funds or achieved profitability, and over $20,000 USD was donated to fbFund non-profit companies.
We were also thrilled to join the start-up community at TechCrunch50 this year, where we hosted a Facebook Developer Garage, and VP of Engineering Mike Schroepfer served as one of the judges for companies launching in the News & Media Discovery, and Social Media Streams spaces. JibJab joined us for the Developer Garage, and discussed how they're achieving success with Facebook Connect At the event, we also that we reached 300 million users and are cash flow positive.
Later in the month, Facebook Connect team member Cat Lee joined the international technology community at the Future of Web Apps (FOWA) London, where she collaborated with colleagues to speak about Facebook Connect success factors and launched Translations for Facebook Connect, the Facebook Connect Wizard, and Facebook Connect Playground at a developer workshop. She also gave the FOWA keynote. At the Facebook Developer Garage - FOWA Edition, Facebook software engineer, James Leszczenki, gave a more intimate technical deep dive into the Translations for Facebook Connect tools and local developers shared their technical knowledge on how to optimize Facebook Connect.
In other parts of the globe, Facebook Developer Garages were active from Mexico to Singapore to Cambridge.
In Cambridge, over 100 developers focused on Facebook’s international growth and specifically how developers and users interact in East Asia.
Across the Atlantic in Singapore, over 100 attendees from various countries gathered for a two day Developer Garage to confer on a wide range of topics from social games to building Pages.
In London’s monthly Garage, over 120 developers shared Facebook policy trends and discussed tips on how to be a role model on Facebook Platform.
During Mexico’s first Facebook Developer Garage, over 360 developers delved into tactics to connect people through Facebook. Governor of Nayarit, Lic. Ney González, spoke and discussed how the government had used Facebook to select high ranking government officials and how to leverage Platform tools to benefit public service.
If you'd like to host a Developer Garage in your region, please see our Developer Wiki to learn more about the program or check out the Platform Page to find more Garages near you. We look forward to seeing you at a Facebook event soon!
*Special thanks to our sponsor Intel.
Julia, who manages developer events worldwide, is settling in back in Palo Alto after a great week in London for FOWA!
In order to make a more consistent and secure user experience when connecting accounts, we're changing the behavior of the dialog when a user connects accounts between your site and Facebook when the user is already logged in to Facebook. Previously, the Connect with Facebook dialog appeared in an IFrame "lightbox" within the browser window. After tomorrow's weekly code push, the dialog will pop up in a separate browser window, with an address bar, which matches the user login flow when the user is not logged in to Facebook and tries to connect accounts with your site. This will also make it easier for users to identify that the URL is trustworthy and coming from Facebook.
If the user has blocked browser popups, Facebook displays the following dialog, prompting the user to log in to Facebook. The user will then be directed to facebook.com to log in, and then back to your site after logging in to connect accounts. Users can also whitelist facebook.com for pop-ups.
If you're using the XFBML fb:login-button tag to render the dialog, you won't need to change anything. Depending upon how you initiate the login flow, your users may experience the process differently; however, this is not a breaking change.
If you trigger the login flow using JavaScript, you can only trigger the Connect dialog to pop up by way of a user-initiated event, which lets you circumvent popup blockers. For example, using an onclick handler on a button, input, or a tag (or any tag that prompts a user to take action, like the submit button in an HTML form) will allow the dialog to pop up as expected. For example, you can use an onclick handler like this:
<a onclick="FB.Connect.requireSession();">Connect</a>
Or, you can register the event in JavaScript (using DOM1 events here, or via your JavaScript library of choice):
<a id="do-fb-login">Connect</a>
<script>
document.getElementById('do-fb-login').onclick = function() {
FB.Connect.requireSession();
};
</script>
You should avoid calling the login dialog by requiring a session on page load or any time the user has not performed an explicit action.
We always welcome your feedback. Please share it in the Developer Forum.
naitik, an engineer on the Facebook Platform team, is always thinking of new ways to help you connect.
As part of our ongoing effort to improve communication with our developer community, we offer you the latest monthly roundup of the announcements, new features, and updates to Facebook Platform that occurred during September, 2009.
This past month saw a flurry of activity around Facebook Connect, with many new products released and updates made to existing code.
New Features
- Start translating your Facebook Connect sites and IFrame applications with Translations for Facebook Connect.
- Creating a new Facebook Connect implementation? Get it up and running in minutes with the Facebook Connect Wizard.
- Quickly add standard Facebook Connect features using the Facebook Connect Playground.
- Bring Facebook Connect to any mobile platform with Facebook Connect for Mobile Web.
- Make sure Facebook Connect stays up and running for your site with our suite of automated functional tests.
- Enhance your real-time Web service with Tornado, Facebook's latest
open source project (by way of FriendFeed).
Updates
- We refactored our JavaScript Client Library code. Read the rollout plan for details.
- fb:share-button has a new attribute called type which can have the values "button" (default), "icon", "link", and "link_icon". These values dictate only whether your Facebook Share interface gets rendered as a link and/or a button.
- Verify that you're using comment_list in calls to stream.get instead of posts, which we deprecated.
- Get photo size information from the photo FQL table.
- Query for allowed_restrictions on the standard_user_info FQL table now.
Announcements
- Review the highlights from this year's fbFund REV social incubator.
- Learn how you can build your Web business with Facebook Connect.
Articles/Videos
- Watch this video celebrating the Facebook Developer Garage program.
- Learn more about the technology behind Tornado from Facebook's Bret Taylor.
- Get to know the philosophy behind fbFund REV, narrated by Dave McClure.
Keep an eye on this blog (or subscribe to the RSS feed), the Platform Status Feed (or subscribe to its RSS feed), and the weekly Push Changes articles for announcements, changes, and other important bulletins.
As always, we appreciate your continued feedback in our Developer Forum -- let us know how we can reach and communicate with you even better.
pete, the platform technical writer, can't wait to see what october will bring.
Recent News
Update on Simpler Policies and Enhanced Enforcement
November 24, 2009
Facebook Platform News 11/17/09
November 17, 2009
Evolving OAuth via the Open Web Foundation
November 17, 2009
Start Building with the Microsoft SDK for Facebook Platform
November 9, 2009
Continued Action Against Deceptive Ads
November 5, 2009
Creating a Slimmer JavaScript SDK Together
November 5, 2009
Security and Facebook Platform
November 5, 2009
Keep Your Users Coming Back for More
November 4, 2009
Postcards from October Developer Events
November 3, 2009











