Friday, December 10, 2010

Why we use and contribute to open source software

This is Kevin McEntee, VP of Systems & ECommerce Engineering here at Netflix. Netflix is a technology company. We develop and apply great software technology to deliver a great streaming video experience. Our budget, measured in dollars, time, people, and energy, is limited and we must therefore focus our technology development efforts on that streaming video software that clearly differentiates Netflix and creates delight for our customers. These limits require that we stand on the shoulders of giants who have solved technology challenges shared in common by all companies that operate at Internet scale. I'm really just articulating the classical build vs. buy trade off that everyone deals with when developing software. So, for the software we 'buy', the question becomes how do you select the software to buy and whom do you buy it from?


One choice is to buy from commercial vendors. To help select among commercial vendors I have been offered documentation, peer referrals, advertising, and dog 'n pony visits from those vendors. I've also been offered Starbucks gift cards, cameras, luxury suite boxes for major league baseball games, and 3 day golf junkets to Arizona. I've always declined this second set of offers. I love both baseball and playing golf but I don't see what they have to do with my decision for how to spend Netflix's money.


We do utilize some commercial software but there is often the alternative choice of utilizing open source software, preferably open source software that implements an open standard. Open source software projects often originate as a labor of love by software developers who are tired of seeing a shared problem solved over and over again in one off solutions, or perhaps they realize that they can offer a more simple and elegant alternative to a commercial product. The great thing about a good open source project that solves a shared challenge is that it develops it's own momentum and it is sustained for a long time by a virtuous cycle of continuous improvement. At Netflix we jumped on for the ride a long time ago and we have benefited enormously from the virtuous cycles of actively evolving open source projects. We benefit from the continuous improvements provided by the community of contributors outside of Netflix. We also benefit by contributing back the changes we make to the projects. By sharing our bug fixes and new features back out into the community, the community then in turn continues to improve upon bug fixes and new features that originated at Netflix and then we complete the cycle by bring those improvements back into Netflix.


Here is an incomplete sampling of the projects we utilize, we have contributed back to most of them: Hudson, Hadoop, Hive, Honu, Apache, Tomcat, Ant, Ivy, Cassandra, HBase, etc, etc.


Netflix is hiring. If this blog resonates for you then I hope you'll visit http://jobs.netflix.com and apply for one of our open positions.


Thanks,

Kevin