A fixture in the open source community, Pinterest has relied on GitHub from the start.
- San Francisco, CA
- Visual Discovery
- Customers Worldwide
- 300+ Million
The Pinterest team leveraged and iterated on Open Source projects on GitHub, helping them to find the right market fit, while solving new challenges quickly.
By launching their own Open Source projects like Texture on GitHub, Pinterest has been able to actively give back to the Open Source community while saving time by automating their CI/CD pipeline with GitHub Actions.
In 2010, three entrepreneurs came together to change how we discover and save inspiration. Today, more than 300 million people around the world explore over 200 billion ideas each month on Pinterest: an open platform that encourages anyone to contribute and exchange ideas. Behind the eye-catching interface is a team of enthusiastic open source contributors—which is not surprising, given Pinterest’s community-driven ethos.
While Pinterest officially launched its open source program in 2014, “it was always GitHub-focused,” explained Engineering Architect Jon Parise. “GitHub is where we want our open source presence to be, and where we get the most visibility and contributions.”
From the beginning, they leveraged open source projects on GitHub to find the right product market fit, then iterate, expand, and move quickly. As the team grew, they found solutions to new challenges, like meeting traffic demand. “This allowed us to focus on building Pinterest—not rebuilding things that were already built,” Parise said. As time went on, this mindset evolved, and compelled the team to start giving back. “We strongly believe that contributing and participating helps everyone. And as we’ve launched and managed our own open source projects, we’ve seen really positive effects for our team, too.”
One of Pinterest’s most valuable open source projects, which originated at Facebook, is called Texture. (Texture also powers The New York Times iOS app.) An iOS framework for rapid image loading and view rendering, it’s a big part of what makes Pinterest’s scrolling experience so smooth and user-friendly. Pinterest’s open source leadership with Texture has also drawn the interest of new employees. “Because they have an affinity toward this project, they respect our technology and how we manage it—and that leads them into a role working with us.”
CI/CD with GitHub Actions allows Pinterest to build, test, and deploy right from GitHub. “We’ve moved all of Texture over, which was incredibly successful. It’s a really nice interface and the CI speed is so much faster.” They reduced build time from 80 to 10 minutes, and no longer need to babysit the project—allowing them to focus their attention on code contributions. “It’s been positive for everybody involved.”
All of Pinterest’s web styles and React components—everything that makes up the core design library that is the Pinterest website—are developed on a project called Gestalt. It’s Pinterest’s single largest project to be developed in the open on GitHub, with contributions from dozens of employees, including product engineers and designers.
Ktlint—an anti-bikeshedding Kotlin linter—is also built on GitHub. As Ktlint grew in popularity, its original creator asked the broader community for help. Pinterest’s Android Lead saw the message, met the owner, and organized a hand-off. “We were able to give it a new home where it’s receiving a number of resources and we actively maintain it,” Parise explained. “It’s not something we developed originally, but we’re really happy to be supporters and ongoing stewards of it.”
Some projects that started as exploratory have become even more valuable on GitHub. Pinterest employees wrote the first version of a popular memcached library for Python “to scratch an internal itch,” and it’s been open source for over six years. “The majority of contributions are from non-Pinterest people who use it themselves, which is fantastic: Not only do they find value in it, but we also benefit from different perspectives and contributions.”
“GitHub is where the developer community is, and that’s where we want to be.”
To determine what goes on GitHub, Pinterest follows a few best practices: The project cannot rely on internal technology and needs to be documented in such a way that a non-Pinterest employee can understand its value and how to install, use, and run it in a production environment. Parise also shies away from publishing projects that might be abandoned for the company’s internal version. “We won’t open source a project unless we’re committed to the local version being the open source version.” Finally, those who advocate for the project need to be responsive to issues, review poll requests, and keep the project updated. Parise has had the best experience with foundational infrastructure-level projects and shared libraries (as opposed to high-level solutions with greater dependencies and detailed setups).
All of Pinterest’s open source projects fall within Pinterest’s bug bounty program, and they place great value in the security GitHub provides, including vulnerability alerts and automated fixes. Thanks to Dependabot, “we’re also presented with the solution, which is very handy,” Parise said. This triggers Pinterest to fix the issue on GitHub. “It’s a great reminder to audit our internal software for similar vulnerability.” They recently switched to GitHub’s SAML-based authentication, and use single sign-on with their internal security tools. “The advantage isn’t just stronger security in terms of how we manage our GitHub organization, it also keeps our roster updated. It’s saved us an enormous amount of time.”
Parise and his team use GitHub to filter through profiles of possible new hires, and he is particularly drawn to the contribution graphs to determine which candidates are contributors, authors, or both. “If I see someone with a balance of issue triage, software writing, and opening pull requests, I know they’re more plugged into the broader open source community.”
Everything Pinterest contributes to open source is built on GitHub, and a lot is used internally. It’s a tool for collaboration and conversation, development and innovation. But, most importantly, said Parise, “GitHub is where the developer community is, and that’s where we want to be.”
Explore more from GitHub
What will your story be?
Start collaborating with your team on GitHub
Want to use GitHub on your own?
Check out our plans for individuals