: An Open Book for Developers”>
Adam DAngelo, chief technology officer at Palo Alto, Calif.-based Facebook, is charged with overseeing the development of new applications, maintaining existing ones and ensuring that the overall platform can continue to scale to meet the needs of an ever growing user base for the wildly popular social networking community. DAngelo spoke with eWEEK Senior Editor Darryl K. Taft about the Facebook Platform and importance of developers to the companys strategy.
What did you guys take away from the initial developer event you had, f8?
That was the initial release of our development platform, so, basically, before that outside developers couldnt integrate their applications inside Facebook. So that was the first time they could build applications that integrate with Facebook.
Do you see the enterprise as a target for Facebook? Is targeting the enterprise something youre working on now?
Not really. Its always something that well potentially look at in the future, but were really purely focused on the consumer right now.
But do you see that there could be an intersection with what you guys do and the Enterprise 2.0 stuff a lot of people talk about?
Well, we see this as just a platform and developers can build whatever they want on top of it. And so it could be tools for businesses or it could be applications for consumers. So if youre looking at something like Windows, whether you say enterprise or consumer it doesnt matter—because its just an operating system and there are some enterprise applications that you could run on Windows and there are some consumer applications that you run on Windows.
So we dont see ourselves as excluding enterprise applications.
Well, are you interested in partnering with enterprise players? Are you getting any feelers from those companies?
The thing about our development platform is you dont need to partner with us to develop anything. So all these developers—there are thousands of developers and thousands of applications have been built—they dont have to make a deal with us before they can build their application; its open to anyone.
So there are people whove built some applications that are going in the direction of becoming tools for doing work. And so were very happy to see that.
But we dont need them to make deals with us before they can build on top of Facebook.
Are you doing anything to facilitate offline capability with Facebook?
Not at the moment.
Is that a direction youre headed or something youd want to take a look at?
I cant really comment on future development. But as of right now we dont have anything. But were always looking at other directions we could go. The vast majority of the time that people would want to use Facebook, they have an Internet connection, so its generally easier to just do everything over the Internet.
Right, but youve got efforts like Google Gears in the works and I was wondering if you folks might be looking at some kind of offline capability as well—perhaps even working with Gears.
Yeah, but Google Gears is still in beta and a very small number of users actually have Google Gears installed. And until we can assume that the majority of our users are going to have some specific technology, we cant really make something thats going to depend on it.
So we would consider that in the future if there was a good way to do it. So if Google Gears came out of beta and everyone was using it then wed consider that. But for now theres not really a good way to do offline access.
Do you have any outreach to developers? I mean, do you have a developer program?
Yes. Its not like what you might see in a typical developer program. Developer programs usually involve some kind of deal that you make with the developers, but we dont make deals with developers. We have a developer relations group that were getting started.
Thats what Im talking about. Im interested in what kinds of things they do and what youre trying to promote.
Its basically just trying to get as many developers as possible. We want to make sure that developers understand the platform, that its easy for them to use and that they know about it in the first place. And then theres always the standard thing of keeping communication open with developers so we know what the problems are and we can fix them, and they know what were going to change so that they can react to that.
In your role as CTO, what do you typically do?
There are a lot of things that I do. A few of the big things include being pretty focused on making sure our engineering team develops well and can build things as quickly as possible. Thats one of the things we stress is to be able to develop new features and code as quickly as possible, and thats a big challenge as we grow as an organization.
So you see some of these big organizations when they get to 1,000 engineers, it takes months to get anything done. And thats an interesting thing to see on Facebook Platform. We launched this platform and it was only the small companies that could react quickly and build something. And its taken a long time for larger companies to build something because its just this new way of thinking. And, depending on how you structure your engineering organization, it might be that before you can even consider building this new product you have to form a whole new team and get a new manager and shift around the organization.
So were pretty focused on having an engineering organization that can develop things as quickly as possible so we dont have to make management changes in order to have a new project get started. When engineers come in they can learn what they need to learn as quickly as possible.
Page 2: Facebook: An Open Book for Developers
: An Open Book for Developers”>
How do you facilitate that? Do you have certain tools or processes?
Yes. One thing is we have a weekly release cycle. So every Tuesday night we do a push of the code and we release a whole new version of the site. And thats actually pretty quick. Some companies might go months between releases. And its a challenge to maintain that kind of release cycle when youve got a bigger and bigger team.
So weve built up a lot of tools that help us with that. The other thing about us is everything we do is at pretty big scale. We have 30 million users and were growing at about 3 percent a week, so that means that all the code you develop has to be highly scalable. So one of the reasons why startups and small companies can develop code so quickly is they dont have to worry about scalability problems because they only have a small number of users.
But once you get to be as big as us, every new feature we launch or everything we do has to be able to scale to support our 30 million users. So what weve done is weve built a lot of these generic abstractions—like pieces of infrastructure—that our developers can use to develop their features on top of.
One example of this is a server called Memcached [a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic Web applications], which is an open-source server written by someone else [Danga Interactive], and we took it and we made all these improvements to it—giving it back to the open-source community. But Memcached is just this piece of infrastructure—it just stores data temporarily—and it makes it a lot easier to develop new features. No matter what the feature is it can usually make it easier.
And so we have a lot of these internal abstractions that weve built that make it easy to build new features quickly and not have to worry about the scalability, because the abstraction itself will automatically spread the work over a large number of computers.
Click here to read more about Facebooks Developer Platform.
So are you looking to continue to grow your development team as well?
Yeah, were always looking for good people.
I saw a blog post somewhere that said legacy applications like Lotus Notes might be considered competition for Facebook. Do you see that?
Wed be happy for them to build on top of Facebook Platform. We have a Notes product as well. Lotus Notes is actually a lot different than our Notes product. Our Notes product is more like a blog, so its not actually competing with that.
Were fine with it if developers that build on top of Facebook Platform compete with our own applications.
So somebody could build a photos application and compete with our own photos application. We think its really important to level the playing field, because if developers think that were going to decide that their application is too valuable and not let it compete with ours, then theyre not going to want to develop in the first place. So we think that the real value is just in providing this platform. And were fine with competition.
Are you one of the founders of the company?
I was involved from the beginning. I wasnt working full-time then, but I helped to set up the servers.
Speaking on how quickly the company has grown and the use of Facebook is so widespread, did you always anticipate that this would be?
Not really. I guess it kind of just grew and grew. Its been pretty exciting to be a part of it. Weve been on this growth curve where 3 percent of our users every week are new, and it is incredible to be part of that kind of growth because every week you come in and the numbers are 3 percent higher than the last week. And that uncovers all kinds of scalability problems, and there are all kind of challenges that come up. Weve proven that any system weve built that wasnt built to scale perfectly will eventually hit its limit, and so its a really exciting experience.
This isnt really a fair question. Its like if you have kids, asking which one you like best. But what Facebook apps do you like most?
Well, theres this Scrabble application thats really taken off inside the Facebook office.
Anything else?
In general, the common paradigm is to take some kind of objects in the world and let users associate with those objects. So we have photos and Facebooks all about the connection between users and objects, and the Photos product is about users and photos. So one other example of a good application is iLike, which is a music application. It lets users say what music they like and what concerts theyve been to. And there is a whole class of applications like “places Ive visited” so you can say which cities youve been to, or which countries or which states, and you can see which youre your friends have been to.
So those are pretty good.
Do you have any advice for developers who want to put their stuff on the platform?
I think that some of the early developers got a little too concerned with growth, or with the total number of users their application had. And so youd see these applications where there wasnt really much to the application, but whether you could get all your friends to join the application and have the application take off.
But it seems like the applications that are doing the best and that will do the best in the long run are the deeper applications. These are the applications that have more to their experience than just something simple like something in your profile.
I think iLike is a pretty good example of an application thats pretty deeply integrated into Facebook and not just trying to spread itself.
Another pretty good type of application is the applications where the developers used to have a Web site. The Scrabble application is an example of this. The Scrabble application used to have a Web site and the developers had already built some type of Scrabble game. Then they turned it into a Facebook Platform application, and because it had already been a Web site, they had to have a pretty good product.
So theres a lot of value in taking some of these other Web sites where there was something social going on, but there was a lot of difficulty as you had to type in your friends e-mail addresses. But on the platform its like porting them inside Facebook.