InnerSource is the use of open source software development best practices and the establishment of an open source-like culture within organizations. The organization may still develop proprietary software, but internally opens up its development. The term was coined by Tim O'Reilly in 2000.
Open source is recognized to be capable of delivering high quality software. Furthermore, the open collaboration in open source enables collaboration even between competitors (e.g. ARM and Intel working on Linux kernel on merit-based decisions).
Consequently, software developing organizations want to benefit from its outcomes (the software components and tools), but also from the development practices exercised and established in the open source world.
Besides several practices established in foundations such as Apache Software Foundation, Linux Foundation, and Eclipse Foundation, inner source and open source projects require open collaboration, open communication, and a proper quality assurance.
All required development artifacts (e.g. code, documentation, issue tracker, etc.) have to be accessible for all employees of a company leveraging inner source. Central software forges are an essential tool for implementing open collaboration.
Based on the principles of open collaboration (egalitarian, meritocratic, and self-organizing) every contributor who is willing to help an InnerSource project is typically welcome. Contributions to InnerSource projects are typically judged meritocratically based on the value they bring to the project. Meritocracy can also be enabled by open communication as decisions are discussed publicly. Although an organization does not necessarily become completely self-organizing to adopt inner source, inner source allows individuals, organizational units, and project communities a higher degree of self-organization.
InnerSource projects and programs rely on open communication to make all communication openly accessible for all employees. Open communication is communication that is public (within the company), written, archived, and complete. The goal is to allow any individual or party that has stake or interest in an InnerSource project to participate in the communication. As open communication discussions are archived, a detailed documentation of the software is passively gathered that allows one to go back and revisit historic discussions and decisions.
A dedicated code review and the separation of contributors and committers (integrators, developers with write access) assures the quality of an open source project, and, therefore, also for an inner source project.
Among others the following companies are known for adopting InnerSource:
InnerSource can be a promising approach for large organizations that develop software. However, it may not be appropriate in all settings. The following nine factors, grouped in three categories, can be consulted to gauge the extent to which InnerSource may be appropriate.
[W]e've also worked with companies on what we call "inner sourcing" -- that is, helping them to use open source development techniques within the corporation.