This blog post is co-authored by Intuit Staff Software Engineer, Rocio Montes, and Principal Tech Evangelist, Aliza Carpio.
InnerSource isn’t just a methodology. It’s a way of life.
Just as open source has reshaped and overturned traditional notions of ownership across the global software development community, InnerSource changes the way we work and innovate inside our own organizations.
By allowing other engineers to contribute to a codebase, not just the members of your own team, we can deliver better results for our business and our customers. At the same time, InnerSource can make life simpler and more interesting for our developers. Intuit has made it a goal to open all of our repositories for anyone to contribute. We’re taking a phased approach, starting with key repos with a lot of dependencies—and we’re already more than halfway through!
We’ll be discussing Intuit’s InnerSource journey at GitHub Universe 2020 on December 10 at 1:00 p.m. EST. Here’s why we’re so eager to share our story.
What’s so great about InnerSource?
People often talk about the benefits of InnerSource in terms of what it means to customers and the business. You can deliver high-quality products and features more quickly, solve customer problems more efficiently, create more delightful experiences, and so on.
That’s all true, but it’s also important to understand what InnerSource offers for individual engineers and developers. For example:
- Simpler dependency management. With inner source, there are no wait times. If you need to extend the code by adding a use case, you can just create a pull request and contribute the change. You don’t need to wait for the “owner” to give you access to contribute.
- Streamlined processes. Cross-team collaboration is a lot faster when you’re communicating directly through code instead of scheduling meetings. Automated code review workflows and well-documented repositories save a lot of time too.
- Less duplication. Nobody wants to spend their time cloning a capability in someone else’s codebase, but that can be faster than waiting for them to act on a pull request. With InnerSource, the requirements for contributing are always clear, so you know how to extend or modify the capabilities yourself. At Intuit, teams also create SLAs (service level agreements) for response times to external pull requests so they don’t fall into limbo.
- Opportunities for growth. Contributing to an unfamiliar project can give you a chance to build your skills on a different technology stack. It’s also a way to make a broader impact at your company.
What does it take to get started?
We won’t pretend it’s fast or easy to adopt InnerSource in your organization.
When Intuit started our journey in 2018, we had a lot of work to do to standardize everything from different repository structures and documentation to our code review workflows. But these efforts helped us improve quality across our business. Just as with open source, InnerSource calls for a high level of code hygiene. For other people to be able to contribute effectively, you need to have readable code, great automation, a clear understanding of where contributions are needed, and a strong CI/CD pipeline. Those are important strengths for any development organization.
The first step for an InnerSource initiative is to create a unified set of contribution, quality, and release guidelines. As you incubate InnerSource in your organization, it’s helpful to focus on training a set of model teams on working in an open, collaborative way. Similarly, you can identify a set of foundational capabilities—for example, the services with most integrations and change requests—and prioritize them for contribution. And, to help first-timers get started, you can post a master list of projects actively seeking contributions.
It’s also key to get equal buy-in from team leaders and rank-and-file developers. Our core team is responsible for advocating InnerSource to about 4,000 technologists across 16 global sites, so we need all the allies we can get. In fact, some of our best influencers are just out of college. They’ve come of age in a culture of open source and collaborative models, so InnerSource is natural and intuitive to them. Others may be resistant, with concerns about losing ownership of their code.
That’s why technical leaders must demonstrate respect for new contributions outside of their teams, and model openness to suggestions and extra layers of feedback to which their teams may be unaccustomed. Encouraging people to respond from a place of empathy, rather than criticism or defensiveness, contributes to a strong InnerSource culture. So do systems of rewards and recognition that celebrate best practices and collaborative behavior by valued contributors (while mitigating any tendency of individuals to weigh in on every codebase in sight!)
Adopting InnerSource can take time—as an incremental process, it should—but it can pay off for your organization and developers. We’re excited to continue our journey at Intuit, and to see other companies exploring its potential for building better software faster.
We’ll go deeper into the principles, challenges, and practices of InnerSource in our session at GitHub Universe 2020. We hope you’ll join us!