You also wanted to talk about Thrift, which is your software framework for cross-services development. Could you tell me what the intent of that is and what's happening with that?
Agarwal: Thrift is a lightweight RPC framework that allows really high-performance, intra-datacenter communication. Another aspect of Thrift is [it] allows you to have cross-language communication. So you could be writing some functionality in PHP and by phone, and it seamlessly makes calls out to services that might be running in Java or C++. The key thing I think, or the key motivation behind building out Thrift and not using any of the existing frameworks, for example, something like CORBA or something like a REST services framework, is that Thrift is designed to be extremely high-performance. So when you're looking at providing really a quick user experience, you're thinking of response times, latencies in terms of 100 milliseconds, in terms of 150 milliseconds, and at that latency level, you have to have something that is much more [higher-performing] than anything out there that's in the market right now. So we decided to develop this in-house and then basically release it as open source to the world. A lot of the functionality that allowed us to innovate quickly, we also wanted to expose to everybody else because part of our vision is to provide a platform but also provide the tools that people can use to help scale their services.
What type of services are people building for Facebook using Thrift?
Agarwal: That's a good question, and a lot of our core services like search, you've seen chat, our advertising systems, some of our mobile systems. There are a lot of services that are built on top of Thrift, and they're built in a variety of different languages. We have services running in C++, we have services running in Java, Python, Erlang.
The best part about Thrift is that you can choose to use the tool that you want, the language that you want, the framework that you want to best solve your problem. You're not constrained by a standard three-tier architecture, you're not constrained by only being able to use one application language. We really believe in giving our engineering organization the best tools to solve problems, and Thrift is a key part of that because it allows you to concentrate on creating the product that you want, solving the problem that you're trying to tackle and not have to worry about -- how do I go in between languages? How do I efficiently transmit data between one project and another?
Facebook is generally viewed as a platform for social networking in a nonbusiness sense, but I know that's changing. What exactly does Facebook have to offer enterprises?
Agarwal: Without getting into the actual specifics of that question, I think that the way I think about that is that we strive to provide a platform that can enable many different types of applications. And our focus is really on having a platform that [is] fully feature-complete enough to allow people to build different kinds of things on top of it.
And what type of enterprise capabilities are people building on top of Facebook?
Agarwal: I don't have that data off the top of my head, which is about the enterprise capability that applications are providing, but I'd be happy to put you in touch with somebody from our platform product marketing team, who could maybe provide a more accurate answer to that.