domain platform Commons: 4/5

Inner Source Pattern

Also known as: InnerSource, Internal Open Source

Inner Source

3. Key Practices

In large organizations, software development can become siloed, leading to duplicated effort, inconsistent standards, and a lack of collaboration between teams. This can result in lower quality code, slower development cycles, and reduced innovation.

2. Core Principles

This pattern is applicable to organizations that want to improve collaboration and code reuse across different teams and departments. It is particularly useful for companies with a large number of developers working on multiple projects.

4. Implementation

InnerSource is a software development strategy that applies the principles of open source software development to an organization’s internal projects. By adopting an open and collaborative culture, companies can break down silos and encourage knowledge sharing. The core idea is to make all code and documentation visible and accessible to everyone within the organization, allowing developers to contribute to any project, regardless of their team or department.

Key elements of the InnerSource approach include:

  • Visibility: All code, documentation, and discussions are public within the organization.
  • Forking and Pull Requests: Developers can fork any project, make changes, and submit them back to the original project through a pull request.
  • Code Review: All contributions are reviewed by the project’s maintainers to ensure quality and consistency.
  • Continuous Integration and Testing: Automated testing and integration processes are used to maintain code quality.
  • Documentation: Comprehensive documentation is essential for making projects understandable and accessible to everyone.

5. 7 Pillars Assessment

Pillar Score (1-5) Rationale
Purpose 3 Serves a clear technical purpose in system design
Governance 3 Can be governed through standard engineering practices
Culture 3 Supports engineering culture of reliability and quality
Incentives 3 Aligns incentives toward system stability
Knowledge 4 Well-documented pattern with extensive community knowledge
Technology 4 Directly applicable to modern technology stacks
Resilience 4 Contributes to overall system resilience
Overall 3.4 A valuable technical pattern that supports commons infrastructure

Adopting an InnerSource approach can lead to several benefits, including:

  • Improved Code Quality: With more eyes on the code, bugs are found and fixed more quickly. The peer review process also helps to improve the skills of developers.
  • Increased Code Reuse: When code is visible and accessible, developers are more likely to reuse existing components instead of reinventing the wheel.
  • Faster Development Cycles: By leveraging the collective knowledge of the organization, teams can develop software more quickly.
  • Enhanced Collaboration: InnerSource fosters a culture of collaboration and knowledge sharing, which can lead to a more engaged and motivated workforce.
  • Greater Innovation: By breaking down silos, InnerSource can lead to new and innovative ideas that would not have been possible otherwise.

8. References

[1] GitLab. “What is InnerSource?”. https://about.gitlab.com/topics/version-control/what-is-innersource/

1. Overview

[Content to be added]

6. When to Use

This pattern is applicable in distributed systems and platform architectures where the described problem is encountered.

7. Anti-Patterns & Gotchas

Common mistakes include applying this pattern without understanding the specific context and constraints of the system.