Facebook open sources production code
"Folly" trove full of high performance widgets hits GitHub
Facebook has released Folly, a collection of what it describes as “reusable C++ library artifacts developed and used at Facebook.”
The trove awaits on GitHub and comprises around 50 items.
Jordan DeLong, a Facebook software engineer, explained “Our primary aim with this 'foolishness' is to create a solution that allows us to continue open sourcing parts of our stack without resorting to reinventing some of our internal wheels.” He also talks up the open source love, saying Facebook could not have been built without open source kit.
DeLong describes the code as follows:
The utilities contained in Folly are things we use heavily in production—this is code that runs on thousands of servers doing work on behalf of 900 million users every day. These utilities are loosely connected, but the over-arching theme for all of the components is high performance at scale. Some of them will show a fairly specialized focus, like reducing contention or packing things into small amounts of memory. Others, such as our in-memory JSON manipulation library or our string-formatting library, have a larger scope. But in either case, our motivation was to build components that were faster and more efficient than what we previously used.
DeLong's post announcing the release modestly says Folly is very easy to use, contains “components [that] typically perform significantly faster than counterparts available elsewhere,“ and “... even offer a step forward in terms of programmer convenience.”
On the Github README, however, he's a little more candid, writing that:
“Performance concerns permeate much of Folly, sometimes leading to designs that are more idiosyncratic than they would otherwise be . Good performance at large scale is a unifying theme in all of Folly.”
This won't be the last time Facebook does something like this: DeLong's post says “This initial release is definitely in the spirit of 'release early, release often.' We will continue to update the open source tree as new Folly components are added, so you can expect to see more of this on github in the future.” ®