Viacom is a global company of about 10,000 staff. And we're not Google or Facebook. By that, I mean that our core began in media and not technology. While our culture is rooted in innovation (I remember when MTV wasn't a thing, do you?), we do consider ourselves a content company first and a technology company second. This worked to our advantage in a big way when a few of us met with our head legal counsel to propose releasing our own code into the open source. The primary reasons for us were:
- Generate awareness that Viacom has a talented engineering team.
- Give back to the open source community. If we found the code useful, then someone else might, too.
- Recruit (of course). I know I would have been even more excited to join the company if I knew there was so much interest in open source here. If you're interested, check out the jobs at Viacom Careers.
We knew that managing an open source program was not going to be trivial. To do it right, you need to have people who understand and are committed to the idea, and ready to put time into execution. At a major media company like Viacom, everyone asks about what we can patent. Open source is generally incompatible with patents, although you can open source a project and protect users from lawsuits with the Apache 2.0 license. Know what is and isn't considered intellectual property in your company. What will give someone else a clear competitive advantage? You may want to hold back on that. Then again, if it's software that is to everyone's advantage you might just advance the project faster by opening it to the world. Think of Hadoop, Solr, and other popular open source projects.
Technically speaking, make sure the project to open source is modular enough to stand on its own. We have considered open sourcing very large systems, but have pulled back a bit when realizing that there would be more value in open sourcing a few helpful lines of code or a single library. Then, other developers can take what they need. Maybe one day we'll open source our homegrown content management system. But, in the meantime, useful bits that do one thing well is where we are headed.
We didn't do it alone though. There are some great resources to check out if you're looking to get projects open sourced at your company:
If these projects sound interesting to you, please check them out, fork them, play with them, suggest improvements or improve them yourself, and create a pull request (or don't). We could use help documenting these projects as well as writing more and better tests.
There will be more projects coming as we find the right ones to put out there.
What are your experiences with putting out open source software?