How Google Uses Linux

This is a really interesting article about, well, how Google uses the Linux kernel, and how they adapt it to their highly-demanding (and specific) needs. From the article:

Mike started the talk by giving the developers a good laugh: it seems that Google manages its kernel code with Perforce. He apologized for that. There is a single tree that all developers commit to. About every 17 months, Google rebases its work to a current mainline release; what follows is a long struggle to make everything work again. Once that’s done, internal “feature” releases happen about every six months.

This way of doing things is far from ideal; it means that Google lags far behind the mainline and has a hard time talking with the kernel development community about its problems.

There are about 30 engineers working on Google’s kernel. Currently they tend to check their changes into the tree, then forget about them for the next 18 months. This leads to some real maintenance issues; developers often have little idea of what’s actually in Google’s tree until it breaks.

This sort of amazes me, as I initially would have figured that Google had a well-organized system for tracking their changes against the mainline kernel, but then again, given how quickly the mainline changes today, that might just not be possible. With the fairly radical level of development in the kernel today, it’s actually pretty impressive that they go back to the mainline every 17 months, especially given some of the associated user-land changes.

It’d be really interesting to see how Yahoo’s changes to FreeBSD—their operating system of choice since their inception—rate in comparison to Google’s changes to Linux.

Notes