The Changelog: Software Development, Open Source - Tornado, Hip-hop, Three20 (Interview)

Episode Date: May 18, 2010

Adam and Wynn caught up with David Recordon and other Facebook developers to talk about their wide range of open source projects including Tornado, Hip-Hop, and Three20 as well as OpenGraph and OAuth ...2.0.

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to The Change Log, episode 0.2.4. I'm Adam Stachowiak. And I'm Winn Nedland. This is The Change Log. We cover what's fresh and new in open source. If you caught us on iTunes, we're also on the web at thechangelog.com. And hey, look, we're also on GitHub. Yep. Check out some feature repos there from our blog, as well as some training repos from GitHub, as well as our audio podcast. And if you're on Twitter, you can follow
Starting point is 00:00:38 Change Log Show, not the Change Log. And I'm Adam Stack. And I'm Penguin, P-E-N-G-W-Y-N-N. Had fun talking to David Recording and gang over at Open Source, at Facebook, rather, about the Open Source projects. Hey, you might as well call them Open Source with all the projects they've got going on. That's true. Talked about Tornado and Hip Hop and 320, some cool applications that cover a wide range of technologies. Also some new API advancements, OAuth 2 and OpenGraph.
Starting point is 00:01:05 Yeah, a lot of fun stuff going on there. They were really excited too about everything they were doing. Yeah, the passion kind of just oozes out of what they're doing. You can see it. Yeah, yeah. Hey Adam, where can people
Starting point is 00:01:15 catch up with us in person? The Texas JavaScript Conference over at Austin, June 5th. June 5th? June 5th. And you're going to be at LesConf this weekend? Absolutely, yeah. Be over there 5th? June 5th. And you're going to be at Les Conf this weekend? Absolutely, yeah.
Starting point is 00:01:26 Be over there all weekend, enjoying Atlanta. Sunny Atlanta, Georgia. Great episode this week. Should we get to it? Let's do it. All right. We're joined today by several folks at Facebook to talk about open sorcery at Facebook. David, kind of the ringleader there in the conference room, why don't you introduce the folks and each of the projects?
Starting point is 00:01:53 Sure. So I'm David Recorden. Joined Facebook last fall and work on open source and standards here at Facebook. As Wynn said, we have a group of five engineers here that work on a variety of open source projects. We'll go ahead and introduce themselves, talk a little bit about the projects which they work on, and we can dig into them, answer some questions. Hi, this is Hai Ping. I joined Facebook about three years ago. I have been working on this project that's called HipHop Compiler, which is basically transforming PHP into C++, just to try to speed it up. Hi, this is Paul Buhite. I'm one of the former Friend Feeders who joined Facebook last August,
Starting point is 00:02:34 and I'm going to talk about Tornado, which was the real-time web framework that was extracted from Friend Feed and Open Source last fall. I'm Owen Yamauchi. I work on our iPhone application. I've been at Facebook for almost a year now, and I'll be talking about 320, which is our open source framework for iPhone developers. And I'm Scott Mivicker, and I work
Starting point is 00:02:59 on the hip-hop for PHP with Hyping as well. I always love those deep, long introductions there. They're always awesome. This one's like five people deep. I was trying to write all the names down. I thought I'd lost count. I was waiting one more.
Starting point is 00:03:12 I wrote all the names down and kind of got the gist of it. So we got David B. Corden, we got Hyping, we got Paul Buhoy, we got Owen Yamaguchi and Scott McVicker. Is that right? Yeah. Okay. So, I don't know, should we start with Tornado? Sure. Sure. Paul, do you want to start with Tornado a that right? Yeah. Okay. So, I don't know, should we start with Tornado? Sure.
Starting point is 00:03:27 Sure. Paul, do you want to describe Tornado a little bit? Sure. So, Tornado is actually a collection of useful parts, basically, that we extracted from FriendFeed. We took what we thought was probably most reusable, most applicable to things other than FriendFeed, and also things that were
Starting point is 00:03:44 somewhat unique, and package them all up for the world to use. And so it's written in Python. It's actually relatively small. I keep getting this number wrong, but I think it's about 5,000 lines of code. So if nothing else, it's actually just an interesting and enjoyable code base to read through and get familiar with some of the real-time non-blocking concepts that are becoming more important as more web services are trying to do things like IM or real-time updates in the way that friend feed or facebook does and the reason that that can be difficult with a lot of traditional frameworks is that they are based on a blocking model where every request requires a thread or a process on the server and so if you have thousands or tens
Starting point is 00:04:39 of thousands or millions of users connected to your website. That means you have a connection open from every one of those web browsers at all times. So you need a web server that's capable of handling many thousands of connections simultaneously. And so that's really the most core value provided by Tornado. But there's also a number of other features in there like easy authentication modules for Facebook and OpenID and OAuth and Twitter and Google and just a handful of other utilities that we thought were really nice to have, such as command line flags that are very easy to use. So who's using Tornado besides Facebook, do you know? Quora is using it, I believe. That's Adam D'Angelo's startup that's doing the q a service
Starting point is 00:05:26 uh brisley which is jason shellen's um startup they're doing a kind of like a twitter client and more i don't really know the complete vision honestly but they're they've been in the process of switching over um and I've heard of a number of other people using it, but I'm not sure which ones are publicly announced yet. But there's a fairly active community. What is the Quora one you mentioned, the first one? Quora, Adam D'Angelo is one of the other, I don't know if he's officially a Facebook co-founder
Starting point is 00:05:59 or what the status is there, but he was one of Zuck's roommates early on and used to be the CTO of Facebook. And so he has a new startup called Quora, which is a Q&A service. It may still be in private beta. I'm not sure. It's pretty cool though. And what it does, part of the reason they use Tornado is it does some of the same real-time updates. So someone might ask a question and then other people will add answers or edit the question. And because of the real-time functionality, when you're looking at the web page, you'll actually see those updates come in as they occur.
Starting point is 00:06:33 So you don't have to reload the page to see if someone has added a comment. You'll actually see it pop in in real time. How would this correspond to, I guess, some other technologies, maybe in the Ruby space, like Event Machine or Node.js over in the JavaScript space? It's actually a comparable approach. I don't know everything about Event Machine, but I know I think Node.js is based on a similar model where you have, I think they're all based fundamentally on the EPOL system call in Unix, which allows you to basically monitor
Starting point is 00:07:10 a large number of file descriptors in an efficient manner. And so they're all just different wrappers around EPOL at its heart, but done in different languages. So I think Event Machine, and I'm probably getting this wrong, but I think it's kind of a hybrid of C++ and Ruby. We actually tried to keep Tornado as pure of Python as possible. There is a small C++ module for Python 2.5,
Starting point is 00:07:35 but 2.6 actually is completely Python-based. So it looks like with something this fast in the middle tier, your data layer could quite possibly be the bottleneck very quickly. What is normally, I guess, coupled with something like this to provide that sort of speed? Yeah, exactly. So this has actually been a fairly controversial point, I think, in the asynchronous web server community to the extent there is such a thing, which is do you try to make everything asynchronous? How do you handle that?
Starting point is 00:08:07 And the approach that we took was that we found that making everything asynchronous was actually just annoying because it makes your code fairly complex because it's full of callbacks. So we thought that the most important thing was that the external events, web browsers or fetching external URLs need to be asynchronous because those are things beyond your control. But local resources such as a database is actually
Starting point is 00:08:34 okay to block because you need for your database to be fast anyway. And so what we've the approach we took at FriendFeed is essentially just to run a fairly large number of front-end. And that way, we also circumvent the problem with the Python global interpreter lock, which effectively limits Python to only be able to use a single core at a time anyway.
Starting point is 00:08:58 And so what we would do is, you know, on an eight-core machine, we might just run 10 front-ends. And then we would put them all behind Nginx, which is a very fast reverse proxy. Are you guys using this just at FriendFeed, or has it been folded into Facebook properties at all? I don't believe there's any uses at Facebook. Facebook, as I guess the others will talk about, is largely written in PHP, so it's not really something that can be easily adapted for use here. So in the lunchroom, you guys kind of divide up into the Tornado and Hip Hop crowds, and So it's not really something that can be easily adapted for use here.
Starting point is 00:09:30 So in the lunchroom, you guys kind of divide up into the tornado and hip-hop crowds and throw gang symbols and things? Yeah, it's an east side, west side kind of thing. That might be a nice segue. Let's talk about hip-hop for a second. Yeah, sure. This is Hai Ping. So the major problem we're trying to solve is the CPU consumption problem on the web tier the intention is very simple we just want to speed up PHP
Starting point is 00:09:52 that way it can take a lot less CPU which means a lot less number of machines the idea was just to transform the PHP into C++ because syntax wise these two languages are very similar to each other idea was just to transform the PHP into C++ because syntax-wise these two languages are very similar to each
Starting point is 00:10:08 other. And we were just asking the question, why C++ can run faster, but PHP runs a lot slower. After the transformation, a lot of the dynamic symbol lookup can be eliminated. Things are more dynamic in PHP
Starting point is 00:10:23 can just become static in C++. And also we do some type inference. Hopefully the code can be a lot more efficient. So that was the basic idea. And it took us two and a half years, two years, about like one and a half years of development. Initially we had three people, Ian Proctor, Minghui Yao, and I. We spent one half year of coding.
Starting point is 00:10:49 We wrote a lot of code. And then it took us another one year of time, you know, six months of correctness testing and six months of rollout. So adding together, it's like one year of rolling out to all the web servers we have. So right now,
Starting point is 00:11:04 nearly all the web traffic is served by the HipHop Compile program. It's been running well. It's been running with a lot of speed up. I think it's 2x to 3x speed up. So it's been working for us. How long did you say that you were in development on the project part of it? Like a year, year and a half? A year and a half, yes.
Starting point is 00:11:28 We've been writing a code for one year and a half. And then we spent a lot of time just to make sure it really was correctly, meaning it's the same as what PHP does. And so what kind of resources did you have available when you were in development? Was it just two people or was it a small team? Three people.
Starting point is 00:11:48 So Ian Proctor, Minghui Yang, and I, we have three people. And then after one year time, we have another three people join our team. So right now we have more people. We have a total of eight people working on the compiler. We're still working very hard on more optimizations. So do you have to pre-compile your PHP code to take advantage of something like this?
Starting point is 00:12:09 You mean other people? Have other people done similar work before? So if you're going to use HipHop, does your PHP code have to run through some sort of pre-compiler to get this performance boost, or is it still a dynamic language? The compilation only happens during deployment. So during regular
Starting point is 00:12:28 development, people continue to use the interpreter which doesn't require them to compile, so they can still write web pages really, really fast. Only when the code is ready to push, we'll just compile that into a binary and just push that binary. Are there any syntactical
Starting point is 00:12:44 limitations, I guess, between the interpreted PHP code and what you guys can support from the compiled version? Very few. Eval is one of them, which isn't recommended anyway. So to support eval is pretty hard for us because it also takes away some of the optimization we can do. Other than that, there's also two or three minor places we don't
Starting point is 00:13:08 support, but otherwise almost all the features are supported. What would be the use case for someone to consider using this PHP framework? I think it's more useful if you have a large number of machines or you are running a large-scale PHP code base. You really want to save a number of machines in your company, then this might help.
Starting point is 00:13:39 The biggest gain really is just a reduction of the amount of machines needed and faster code, obviously. Yes. A lot of people were confused. Maybe this compiler can help making web pages serving faster, but that turned out to be a bigger equation. When you talk about
Starting point is 00:13:57 web page speed, you also have to count the network time. Not only from the browser to your web servers, but also from your web server to backend servers, to database servers, to memcache servers. You have to count all those network I.O. time. What we are saving is only the CPU time taken by the web servers. So depending on the nature of your web page,
Starting point is 00:14:21 that portion can be big or small. What we are trying to save is really the computation power or the number of machines. How did this project come about? Who had the idea to take off and do this? I had the idea, for sure. But Ian and Minghui, they just loved my idea. And then when we got into implementation, it's everyone's idea,
Starting point is 00:14:52 how exactly to convert different kinds of PHP code into static C++ code. Then it's really just a teamwork. We had to just work out all the details. We had to solve all the problems we had. How far did you get in the process before you started enlisting support from your team and from management?
Starting point is 00:15:07 I think I spent about eight months just by myself just to work out a prototype good enough to show people. It's very promising. It does run faster. That's the time I had the other two
Starting point is 00:15:23 people joining me. Having worked in that corporate type of environment before, I'm just always curious. Sometimes you have to show rather than tell. I'm just curious of how far you had to get in the process before you could actually prove the idea. Well, so you have to realize Facebook is a very decentralized software engineering force. Everyone is very talented. People normally can identify problems by themselves and proposing solutions by themselves.
Starting point is 00:15:55 I don't think our management never will say words to say you're not allowed to work on something especially after communication with other people. Your idea can be appreciated by other people or approved by other people. Um, no, no one said no to me.
Starting point is 00:16:13 So I was able to continue and we were able to even form a three people of a group to continue to work on this, even though we understood that's risky, right? Anytime point we could just say, you know, that doesn't work well and it could fail. So if we zoom out and we look at Facebook as it is now compared to previous to this project,
Starting point is 00:16:33 what's really happened and what's been the gain? Comparing to not having a compiler, then we will require more machines to run the same website. And there are some other benefits. After converting the PHP code into C++, we were able to build C++ libraries that the backend people can also take advantage of. Before the compiler, they were not able to call into PHP codebase
Starting point is 00:16:58 because PHP is not quite reusable by other languages. But after the conversion, we were able to build a small library that people can just take and just call into P3 functions. That's also very beneficial. So basically, we were just building a bridge between our P3 programmers and C++ programmers. That's kind of cool.
Starting point is 00:17:17 That's pretty cool. It's great that you have an environment that fosters innovation like that as well. Thank you. Speaking of innovation, speaking of innovation, I think one of the coolest apps on the iPhone is the Facebook application. Correct me if I'm wrong, but I believe the 320 open source application, the project is kind of the underpinnings of that. Who do we have to speak to 320? This is Owen. I'm currently the developer of Facebook's iPhone app.
Starting point is 00:17:48 And yeah, 320 is originally, it was extracted from Facebook for iPhone by the original developer, Joe Hewitt, whose name you probably know. So it wasn't really developed with a sort of overarching theme. It was just a set of things that he considered useful or potentially useful to other developers. And yeah, 320 powers a lot of what the iPhone app does, including its infrastructure for doing network requests. It does caching on the file system and in memory and network request queuing,
Starting point is 00:18:24 as well as URL routing internal to the app. caching on the file system and in-memory, and network request queuing, as well as URL routing internal to the app. So the app opens different views within itself through this internal URL mapping and routing mechanism that 320 provides. Other stuff that 320 provides is, like, large-scale pre-made native controls, like an interface that mimics the message-composing UI of the iPhone system's Mail.app,
Starting point is 00:18:49 which we use in the Facebook app for composing an inbox message. Other stuff includes... What essentially comes down to a reimplementation of a CSS-like layout engine, which allows you to describe the way a set of views should be laid out or the way an individual view should be drawn. Those are sort of the main benefits that 320 gives us.
Starting point is 00:19:19 How does a project keep up with the ever-involving Apple platform? iPad, iPhone, stuff like that. So 320, one of our main focuses, so I'm not the only person who works on 320, by the way. A former intern of ours named Jeff Verkooyen has also done a lot of great work on it. Adapting 320 to be usable by iPad developers is a pretty high priority for us because,
Starting point is 00:19:48 you know, it contains a lot of useful stuff, but in its current state, it's not really suitable for the iPad because it makes a lot of assumptions about screen size and a couple of other things. Like it's, it would take some effort to make it compatible with, for example, the split view metaphor that the view metaphor that is standard on the iPad. By split, you mean portrait or landscape? No, that part is fine. It's just by split, I mean having one scrollable list on the left and another scrollable list on the right, for example.
Starting point is 00:20:22 Sorry, I've kind of forgotten what your original question was. That's okay. What I wanted to know was, as you guys evolve 320 in this code base, how do you continue to just keep up with this ever-evolving Apple platform that we're dealing with between, we had the iPhone for a while,
Starting point is 00:20:40 we have many applications, lots of different opportunities out there, and now you have this bigger platform called the iPad. How are you evolving 320 to manage both platforms? It's not really clear at this point. Our work on adapting 320 to the iPad is in its very early stages
Starting point is 00:20:58 because there's a lot of code architecture decisions that we need to make, and some of them it's not really clear what the best choice is. So yeah, I don't really have much to say on that front. As far as the evolving Apple platform in the sense of new features that they introduce in the SDK, generally we sort of look at those as they come know, keep up with when they deprecate certain things, which is pretty minor. For something like OS 4.0, which where the SDK is going to have a bunch of new features, it remains to be seen like which ones of those will hook into 320. Some of it depends on if we decide to use those new features in the Facebook for iPhone app. Like that's a major driver of putting new stuff into 320
Starting point is 00:21:49 if our iPhone app requires it and 320 is a good place for it then we do that we certainly applaud you for one of the better Objective-C iPhone open source projects out there are you up to date on kind of the state of open source and Objective-C, especially in the iPhone, and what other good projects are out there that folks should check out?
Starting point is 00:22:11 Well, just to start with, a lot of people have actually made forks of 320 where they put their own modifications on top of it. And some of those are actually pretty good. They implement a lot of new features. And those forks are divergent from our implementation and we're probably not going to reintegrate those into mainline, but it's still, uh, well worth checking out as far as other, um, other frameworks for the iPhone. I don't know of any that are as sort of broad-ranging and comprehensive as 320.
Starting point is 00:22:50 I actually don't know very many at all. The ones that I do know have very specific purposes, like serializing and deserializing JSON, translating between JSON and Objective-C objects, that is, or providing sort of object-oriented interface to SQLite.
Starting point is 00:23:06 Those are the kinds of things we can make use of. But really, as far as the state of open source iPhone libraries in general, I think, you know, there's a lot less there than there could be. 320 is pretty big and in fairly wide use, but I really don't know of that many others, which sort of suggests to me that there isn't really a thriving open source community in iPhone development.
Starting point is 00:23:37 So was that all the projects? I'm looking at my notes here. We've got Scott McVicar left over. I'm not sure. So Scott, you've just got to at least say Facebook for the folks at home. I met the guys at a recent, during, what conference was it during?
Starting point is 00:23:54 At Twitter? Chirp, I guess? Yeah, it was Chirp Conference. Who else has redacted? I should mention Twitter on the Facebook podcast. So it was at a certain unknown social media conference, right? Yeah, and they noticed that my accent's a little on the Facebook podcast. So it was at a certain unknown social media conference, right?
Starting point is 00:24:06 Yeah, and they noticed that my accent's a little on the strange side and I can't actually say the name of the company I work for properly. So it's pronounced Facebook. So Scott was telling me at the meetup that maybe this is a nice segue into just general Facebook, working in slinging code at Facebook questions. Scott was telling me that you guys are all friends with Mark on Facebook. Is that right? With Zuck?
Starting point is 00:24:33 Yes. I think it was like you see him walking around, and he's very involved with the company. He doesn't like he's there. Yeah, I mean, I think Zuck even wrote a patch for one of the features or fixing something that we were going to roll out at F8 a few weeks ago as well. So you're still in the code, huh? Yeah, now and then.
Starting point is 00:24:56 What's good to have the guy at the top of the company still slinging code? Yeah, I mean, I think it really speaks to the engineering culture that we have here in terms of both what Haiping was talking about earlier in terms of being able to go try out an idea, see if it works, work with other engineers or small teams. And really the entire company and products moving forward from an engineering perspective. Our entire design team writes code as well. So generally when we get a mock-up
Starting point is 00:25:25 It's something that you can click on It's not just a Photoshop file that's delivered So I think that really has a huge impact On how we build products and how we build infrastructure A lot of people really care about what they're doing It shows through Thank you So David, your title I guess is Senior Open question, but a statement, too. So, David, your title, I guess, is Senior Open Manager?
Starting point is 00:25:47 I don't know. We made something like that. That's what your Facebook page says, and I guess at the PGA, that means something totally different. Talk a minute about your role and kind of how you heard GATS or sling open source at Facebook? Yeah, I mean, I'm really focused, and my team's focused on making it really easy for anyone at Facebook to use open source, to use standards, to create open source technologies, to release them, and just helping the company make sure that we do a really good job of that.
Starting point is 00:26:19 And not just from an engineering perspective, but making sure that's pulled in from a marketing perspective, or recruiting, or even legal stuff now and then. Open source licenses are a lot of fun to go and understand. But really that fundamental goal, making open source and standards really easy to use at a company, easy to create, easy to release. Going and building developer communities around them. Lots of innovation happening on the platform, too. So you mentioned F8 earlier.
Starting point is 00:26:48 You guys had the OpenGraph and OWASP 2 that came out of the conference, and I've seen a number of wrappers for both emerge practically overnight for just about every language out there. Why don't you tell the folks at home what each of those aims to solve? Well, sure. I mean, so the Graph API is a really simple API that allows developers to go and interact with user data that users have given them access to, being able to go and sort of, it's extremely restful.
Starting point is 00:27:18 A lot of ideas were inspired by the FriendFeed API. And then we use OAuth 2.0 for all of our user authorization to that. So really got involved in helping drive the OAuth 2.0 standard inside of the IETF. It's really simple. If you've played with OAuth 1.0, you had to work with signatures, you had to figure out multiple types of secrets and tokens.
Starting point is 00:27:41 With OAuth 2.0, it has specific flows, whether you're in a web browser, a desktop app, a phone, an Xbox, you get an access token, then you just make API requests over SSL using that access token. So that's been going extremely well. Developers are really loving both the graph API, as well as just how much easier OAuth 2.0 is to work with. And then we also released the open graph protocol, which allows you to add some basic metadata to any web page so that users can go and connect to it inside of a social graph and so that they can like that page and that that page is really represented well with a graph so that we
Starting point is 00:28:19 understand what type of page is it is it a movie that the user's interacting with or is it a website is it an article as well as some the user is interacting with or is it a website? Is it an article? As well as some other information such as title and stuff like that that you want to know. I noticed on the Open Graph protocol page that kind of gives the overview that one of the examples is IMDB.
Starting point is 00:28:37 Have they implemented anything with Open Graph or was that just kind of a use case? Yes, IMDB still has some of the meta tags that we were playing with and prototyping before F8. They're working on going and using the OpenGraph protocol tags themselves. If you check out Rotten Tomatoes, you'll see them there. If you look at CNN, you'll see them there. They're definitely starting to spread around the web. How does OpenGraph compare to other technologies that are kind of similar,
Starting point is 00:29:09 like OEmbed or perhaps microformats? So I think microformats are probably easiest to start with. Microformats really came about by looking at how are people marking up semantic information in the bodies of web pages and trying to create some patterns around that. We're using the RDFA syntax, which is basically a way of saying, like, you put the quotes a little bit different than if you were using microformats.
Starting point is 00:29:35 We tried to reuse the microformats H-card schema when we're talking about contact information, but really just wanted something that was dead simple for developers so that they can literally copy and paste four meta tags, place them into the head of their page and have it work, not have to go and dig into the body of the HTML, not have to worry about namespaces and different schemas to combine things together. And the other thing you asked about was OEmbed.
Starting point is 00:30:01 I guess OEmbed is more, it's an API. So you go and you take something like a YouTube video page, you discover the OEmbed endpoint, and I think you actually make an API request about it, and that returns a JSON object describing some metadata. So I think the Open Graphs protocol really aims to be simpler than that from a developer perspective, not having to stand up another API, not having to go and make an additional HTTP request. Adam and I both make our livings and our day jobs
Starting point is 00:30:30 on the front end. And just my initial take was, with microformats, I got excited when they first came out. But to tell you the truth, just even as someone that makes his living doing front-end code, every time that I wanted to construct one, I'd have to go out and look at an example. It's just complex.
Starting point is 00:30:47 I have the book right there next to you. I got excited when I saw OpenGraph because my initial reaction when I saw the meta tags was, wow, how could we have thought of this sooner? Thank you. I mean, there's really a whole team of people, and I think a lot of this comes from the fact that we were working with a lot of different partners and getting feedback from large publishers on what they were willing and what they weren't willing to go and do.
Starting point is 00:31:13 So one of the things that we discovered is there's a link tag where it's link rel canonical. And the goal of that is that you say this is the canonical URL for a page. So the example is if you have a bunch of query query parameters then a search engine can know ignore the query parameters this is the actual canonicalized url and search engines understand it and so we were thinking of using this tag instead of the og url property but when we went and started talking to some large publishers they were afraid that adding this tag would have potentially negative effects on their search engine optimization. And so really wanted something separate rather than having something that was tied into what they were already doing from an SEO perspective.
Starting point is 00:31:53 It's about that time where we ask everybody what's on their open source radar, more or less. What's out there in the open source world that just got you excited about what you're doing? And we just kind of wanted to go around the room. I guess we can David, if you want to lead this, you can and just kind of go in turn with who wants to go next. But pretty much the question is
Starting point is 00:32:13 what's on your radar in terms of open source and what are you just down to play with? So what's on my radar? I guess for me it's this... We're seeing more and more examples of how you can really use open source to go and scale large websites.
Starting point is 00:32:35 And it's no longer that open source is just the text editor that you use on your computer or your mail client or only your database. But I think open source is really moving beyond that traditional LAMP stack and that you're going and seeing other technologies which are becoming really relevant in building scalable, dynamic websites today that are open source, that are working really well. So I guess sort of that evolution is pretty interesting to me.
Starting point is 00:33:04 And I guess one question you probably gleaned over earlier, which was probably something you kind of hinted on there, but how has GitHub as part of open source impacted how you feel about open source now and where it's going? I mean, we love GitHub. It's an incredible web interface to go and manage a project, to go and browse through source code. And I think one of the most interesting things is how GitHub really went and embraced that idea
Starting point is 00:33:31 of forks. So instead of saying that forks are a bad thing and trying to ignore forks, GitHub really gives you the ability to easily see who else is going and working with your code, even if they haven't directly submitted a patch. And so that really allows us to go and see what are other people doing on a project like Tornado or on a project like 320 in a much more proactive fashion. Very cool. And I
Starting point is 00:33:57 guess, who would be next to answer the radar question? And if you want to answer the GitHub part of it too, you're welcome to. So I'll answer it, but I'm going to cheat. So I'm going to say I think maybe what I'm most excited about in the open source world is a couple of the projects that are
Starting point is 00:34:13 still in the pipeline here at Facebook. I think there's a couple of cool things that'll be out in the coming year. We love scoops. And I mean, I agree with everything about GitHub. I think it's a great example.
Starting point is 00:34:32 I mean, not only is it a really great product, but it's a great example of how you have a space that's been around for a long time, you know, things like SourceForge and everyone kind of, or Google Code, and everyone kind of assumes that, you know, that's as good as it gets and then all of a sudden
Starting point is 00:34:46 someone comes along and does something that's just fundamentally different and once it's there, everyone sees it and you're like, wow, why didn't we do that sooner? So it's just a cool company. I really like the network overview on GitHub where you can see
Starting point is 00:35:04 all the forks and it's got a visualization of the branches and what commits went into the various branches so you can pull things back in. I think that's pretty awesome. Yeah, this is Owen again. And sort of related to that, the thing that's impressed me most
Starting point is 00:35:19 about the open source community that's grown up around our stuff is the quality of the contributions that we get back. We've gotten plenty of pull requests from people who have forked 320 and GitHub. And a lot of those we've actually integrated back in. We have at least 16 separate contributors to mainline right now. Most of them are in the form of just little bug fixes and patches.
Starting point is 00:35:46 But that makes our life so much easier. Like if someone reports a bug to 320, that's one thing. But if someone reports a bug and includes a patch that fixes it, that's even better. And that happens actually fairly often. And that's been one of the best things about open sourcing 320. As GitHub and just having open source project profiles available impacted the hiring process
Starting point is 00:36:09 over there at all? I don't know specifically. That's a good question. And that's all we get. I mean, I can make up an answer if you want me to. No, I was actually, I mean, I was interested in seeing a blog post by Matt Biddulph, who created Doppler and then sold it to Nokia a few months ago,
Starting point is 00:36:33 where he was actually going and analyzing GitHub network statistics for each city, looking at who were some of the most interesting contributors. And he was using that, I believe, from a hiring perspective. So there's definitely something there if you want to play with it. Well, we certainly appreciate your time today. Anything to add before we wrap? I mean, I guess the only other thing is Google Summer of Code. We're actively participating in that this year.
Starting point is 00:37:00 All three of Hip Hop, Tornado, and 320 have students working on it as part of Summer of Code. So that's definitely another thing that's really exciting for us. When does that take place? So Google Summer of Code is, I think it's actually starting within the next few weeks if it hasn't started already. It's entirely distributed. So Google goes and helps projects find college students and gives them an internship over the summer remotely to work on open source.
Starting point is 00:37:31 I just pulled up the page down here now. That's pretty cool. Wow. All right. Thanks, guys. We appreciate it. Yeah, and facebook.com slash open source if you want to learn more about our projects and other stuff that's going on there.
Starting point is 00:37:44 And also g.com. Yeah, also GitHub.com forward slash Facebook as well. It's basically the same thing. But hey, thanks guys for coming on the show. We really appreciate all you had to share with Open Source. We appreciate your wisdom and standing on the shoulder of giants and out there doing what you're doing. It's super awesome. We certainly appreciate it.
Starting point is 00:38:02 Yeah, thank you for having us. Thank you for listening to this edition of The Change Log. Point your browser to tail.thechangelog.com to find out what's going on right now in open source. Also, be sure to head to github.com forward slash explore to catch up on trending and feature repos as well as the latest episodes of the changelog. Outro Music I'm out.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.