From oil and natural gas to hydrogen fuel cells to electric vehicle charging stations, Shell puts energy where it’s needed. The company currently sells around 230 terawatt-hours of electricity a year to more than 15 million customers worldwide and aims to increase that to 560 terawatt-hours by 2030, bringing power to 100 million people in Africa and Asia currently without electricity.
The energy industry is digitizing rapidly amidst the quest to power the world while reaching net-zero emissions. Software is key to greening the grid, and Shell needs their developers to be able to focus on innovation. If one developer solved a problem, big or small, they wanted all their developers to benefit from that solution instead of wasting resources on it again and again. That led Shell to embrace the innersource ethos, where developers share code, documentation, and other resources internally and allow teams from different parts of the organization to contribute improvements to shared projects.
With innersource developers are also freed from working on issues that other teams have already solved and anyone in the organization can improve on those solutions—to the benefit of the whole company. “If you look at industry standards, the more code developer teams share, the better they are able to collaborate,” says DevOps Transformation Lead Sherin Mirza.
GitHub Enterprise not only provides a central hub for innersource projects, but a unified platform for managing DevSecOps through GitHub Actions and Dependabot. The company uses a wide variety of source code management and CI/CD tools but is progressively migrating projects to GitHub. “We try not to be too opinionated or force people to use particular tools,” Mirza says. “But we’re shifting towards GitHub so that all employees can find code in one place.”
Shell recognized that innovation and collaboration emerge organically from the right combination of culture, process, and technology. They enlisted the assistance of GitHub Professional Services to implement a plan to promote inner source and ensure best practices are in place to aid utilization and growth. Shell was aware of the need to create an ecosystem that recognized the value of inner source every day: they needed a community that allowed contributors to feel respect, belonging, and recognition for their merits. By focusing on cultivating an innersource culture with high-value, low-barrier seed projects and key high-interest communities, they have been able to increase the number of innersourced projects, grow the number and size of subject-matter communities, enable knowledge sharing, and rallied teams around Shell’s greater mission while producing more secure code.
Shell has more than 6,000 repos on GitHub so far. “This is still the beginning,” Mirza says. “GitHub is the perfect platform to help the Shell developer community share their work and adopt software engineering best practices.”
GitHub is the perfect platform to help the Shell developer community share their work and adopt software engineering best practices.
“Most new developers already know GitHub and want to use it, so that helps with recruiting and retention,” says Cloud DevOps Assistant Lead Julio Silveira. “Internally, developers get excited because if they don’t know GitHub already, they want to learn it.”
Mirza’s team maintains a Shell developer portal that acts as a one-stop shop for code, documentation, training, guidelines, and other information. The platform uses GitHub as a backend. Anyone who wants to contribute to documentation or guidelines for a project—such as the custom distribution of React used at Shell—can open a pull request and, once accepted, see their changes appear on the portal instantly. More than 80 developers have already contributed content to the portal. “Without GitHub, we couldn’t even think about achieving this sort of collaboration,” Silveira says.
It’s not just developers collaborating at Shell either. “We have a lot of people who write code as part of their job, but aren’t software engineers,” Silveira says. “For example, we have people who work in data science or DevOps who build innersource projects on GitHub.” DevOps engineers, for example, share many infrastructure-as-code projects. “Almost all of our AWS and Azure templates, Terraform configuration files, and GitHub Actions are available as innersource on GitHub,” Silveira says.
GitHub Actions, in particular, are increasingly important at Shell. Mirza hopes to fully migrate Shell’s CI/CD from Jenkins and CircleCI to Actions. Innersource is driving that shift. Teams are sharing their custom Actions on GitHub itself so other teams can either reuse them or use them as a starting point for creating their own. It makes getting started with Actions simple. “Shareability is a big part of why we’ve been able to drive adoption so quickly,” Mirza says. “Developers are really excited about GitHub Actions and eager to share what they’ve learned. It’s a great application of the Innersource ethos.”
Security scans are one of the most common applications of Actions so far. “GitHub is wonderful from an enterprise compliance perspective,” Mirza says. “Thanks to Dependabot, we were able to act very quickly to mitigate the Log4j vulnerability because we could easily see which repos were affected.” Without an automated tool like Dependabot to surface security issues, teams would have to check their repos manually to see which ones were vulnerable. Plus, Dependabot automatically generates pull requests for vulnerable repos, instantly kicking off the process to fix the issue. Without Dependabot, it could have taken Shell days, weeks, or even months longer to patch vulnerabilities.
Beyond code and documentation, GitHub has become a vital place for technical conversations at Shell. “GitHub really enhanced our communications,” Silveira says. “Before, it was easy for conversations to get lost in emails. Now, with pull requests and issues, conversations happen in the same place developers do their work. It helps keep communications in the right context and makes it easier to find relevant information later.”
“Opening an issue is often far more important than contributing code,” Mirza says. “It’s the first step in improving a product or starting a dialog. It’s the starting point for collaboration.”
GitHub is driving more collaboration at Shell as developers securely share code. Thanks to automations powered by Actions and shared innersource libraries, developers are spending more time on new products and features, keeping Shell ahead of the curve as the energy industry transforms.