"Were you aware of the open-source software program at Facebook?"
That was the question James Pearce, former head of Facebook's open source program, asked engineers when studying why they joined the company. According to Pearce's presentation at O'Reilly's Open Source Convention, not only were two-thirds of Facebook's engineers aware of the open-source program before they joined the company, but half of the engineers said it “positively contributed to their decision to work for” Facebook.
Facebook isn't alone in this arena. Open sourcing code, regardless of company size, is one of the best ways to recruit top engineers. We analyzed the 30 most-applied-to U.S. tech companies of all time on AngelList and found that over half of them host open-source projects:
There is an art, however, to leveraging open-source projects as recruiting collateral—you'll need to do more than post a repo to GitHub and hope for the best. To get recruiting benefits out of open sourcing your code, you'll need to approach each project with a marketer's mindset.
1. Write Code Any Engineer Can Read
The point of open sourcing software is to allow outside engineers to see it and, potentially, contribute to it. For that to happen, your code has to be written so it's simple for outside engineers to understand. This means:
- Refactoring your code to be as simple as possible
- Following style conventions for names, whitespace, etc.
- Replacing private information with environment variables
- Commenting your code to contextualize snippets within your broader codebase.
The project's structure is modular, and the code is thoroughly commented and simple to read:
When open sourcing code, approach every file as if the person reading it hasn't seen the rest of your codebase—because they almost certainly haven't. In the above example, even though it reflects a simple export, Atlassian's team uses comments to explain what each function does, selects property names that accurately reflect their values, and stays consistent in styling.
As a result, the repository has more than 10,000 stars on GitHub and commits from dozens of contributors. The lesson is simple: The easier it is for outside engineers to understand your code, the more likely they are to contribute.
2. Write Documentation That Sells
Your documentation is your sales copy. It's what will convince engineers, at first glance, that your project is worth contributing to. It needs to:
- Articulate your project's value proposition
- Explain any considerations or processes you expect from contributors
- List technical specs, dependencies, and licenses
- Provide easy-to-access reference material for special use cases
Spotify's Annoy (Approximate Nearest Neighbors Oh Yeah) project, a library that “searches for points in space that are close to a given query point,” does this extremely well. Its README file includes how to install the library, the background behind the project, code examples, licenses, dependencies, and a deep dive into the underlying software logic.
It also includes a benchmark of Annoy's speed versus other nearest-neighbor libraries:
With just a single page of documentation, engineers have the information they need to decide if Annoy is a project where they want to contribute.
In 2018, more than 82,000 repositories are published to GitHub every day. Getting your repo to stand out among the millions of others will require effort and strategy, but it's not altogether different than launching a product. To boost awareness, consider promoting a new repository on:
- High-traffic distribution nodes: Hacker News, Reddit, Tech Ladder
- Relevant communities: Product Hunt, Gitter, Dev.to (Note: AngelList acquired ProductHunt in 2016)
- Channels where you already have a following: email, social media, and more
You can also get creative with other marketing tactics. For example, the team at Hack4Impact, a nonprofit that builds software for other nonprofits, taught engineering workshops at local universities that required students to use their new library, sparking early forks and stars.
For companies that may be recruiting from a smaller niche of engineers, promoting a repo is even more important. Wallaroo Labs, a startup that helps customers launch large-scale data operations, has a codebase written in a fairly obscure language called Pony. When the company open sourced all of its code between 2017 and 2018, it leaned heavily on promotion, writing blog posts, giving interviews, and presenting at conferences about the decision to build its codebase in Pony.
Sean Allen, VP of engineering at Wallaroo, said the results have been strong: “A decent chunk of the people who've interviewed with us are folks who want to work in Pony and [are interested] because our codebase is the largest openly available Pony codebase.”
Think of your repository as a product, and the engineers you'd like to contribute to it as your market.
Why Top Engineers Want Open Source
“It's a necessity, if you want to hire the best people, to work in the open,” said Artsy CTO Daniel Doubrovkine. The reason for this, he explained, is that “personal engineering brands have become really, really important for individual contributors. Engineers today are less interested in parking their skills in a place and not being able to showcase them. They want to work in the open because it creates some visibility to them.”
To serve this, Doubrovkine decided his engineering teams would work open source “by default”—meaning unless an engineer can explain a business reason for not publicly publishing a piece of code, it is published in a public repository. As a result, most of Artsy's engineering materials are freely accessible (you can even see its engineering onboarding documents here. “The best companies align business needs with the desires of individual contributors to create their personal brand,” he said.
The fact that Artsy's engineers are required to share their code publicly, with their name on it, is used as a selling point in Doubrovkine's recruiting pitch, and it makes sense for more than just his company.
“Smart people like to hang out with other smart people," wrote Tom Preston-Werner, cofounder of GitHub. "Smart developers like to hang out with smart code. When you open source useful code, you attract talent.”