Innersourcing and its benefits
We all understand how much opensource has transformed software development practices. By embracing practices like collaborations, transparency, innovation, accessibility, and imbibing philosophy like if many brains across the world work together quality products emerge at much faster pace.
Innersourcing is a software development approach that leverages the same opensource development principles within a controlled boundary like an organization or a business unit. In other words, it is a methodology by which a company can enable community development of Code, Documentation, and any project collateral within the corporate firewall.
There are great benefits to adopting innersourcing within an organization. These are some of the benefits as observed in companies like Microsoft, Paypal, Comcast, CapitalOne etc.
1. Break-down Silos and Improve Reuse.
2. Encourage collaboration & Improve Transparency.
3. Bring standards & thereby Increase productivity.
4. Reduce Tech Debt and reduced escalation.
5. Foster knowledge within Teams.
6. Greater Empowerment of employees & Retention.
7. Better Culture resulting in overall improvement of teams.
8. Medium for enabling meeting people with same interests.
9. Integrate with the larger ”Why”.
10. Overall increased value of the Organization.
Steps for Innersourcing Adoption
1. Establish the Process and Tools.
2. Define the Key Roles & Responsibility.
3. Identification of Seed Project or Projects.
4. Operate at Scale.
5. Measure & Continuously Improve.
Step 1: Establish Process and Tools
i. Ideally leverage tools and process that has worked in the industry. Github.com has been the platform of choice for Opensource. Build the platform around Github Enterprise.
ii. Create an Innersource Portal that has updates on the different projects, Reusable Assets etc.
iii. Maintain the different Actions in a marketplace that are required for the realizing the developer workflows.
iv. Manage the different environments, Packages required by the different projects.
v. Manage the rule book for adoption with the project – Project Readme’s, Contributor Code of Conduct and Contribution Guidelines.
vi. Create low barrier for entry – easy process for Pull Requests, Commits, Triggers and Actions etc.
vii. Improve Project Level visibility using Project Boards.
viii. Foster Collaboration using Github Discussion Groups or integrate with Teams or Slack.
ix. Provide enough time for contribution and Incentive Contribution.
Sample Github Enterprise Platform
The sample architecture is based on Azure.
- AKS Nodepools provide the different env with the necessary base image configurations
- Any platform level dependencies where provided by the GitHub packages marketplace
- The CI/CD pipeline is built around GitHUB actions.
Step 2: Definition of Roles & Responsibility
The following are some of the standard Roles & Responsibility in Innersourcing programs.
1. Innersource Program Council
i. Responsible for the Process and Tools and defining the Process.
ii. Foster adoption through evangelizing the program.
iii. Improve visibility at the Org level through Innersource Portals.
iv. Measure Success at an Org level.
v. Help building communities.
vi. Central authority for resolution of any conflicts and escalations.
i. Primarily Project Owners responsible for a project.
ii. Define the Project Vision, Scope and Success Criteria.
iii. Define the Project Backlogs, Releases and Milestones.
iv. Manage Issues and requests for Help from the Community of contributors on stories.
v. Manage the Project, Dashboards and Metrics.
3. Trusted Committers
i. Generally the core Developers, Documenters or Testers of the project.
ii. Contributors for some of the Core functionalities.
iii. Reviewer for the guest contributors.
iv. Mentor Contributors.
v. Key decision makes for the Go/No-Go decisions on contributions.
i. Generally guest Developers, Documenters and Testers.
ii. Contributes to the Project.
iii. Consumes code for their native projects.
Step 3: Seed Project Identification
The following are some recommendations for selection of the seed project.
i. Seed Project is a startup Project.
ii. Should create an intrinsic value for the company – should not be an experiment project.
iii. Select an easy modular project that does not require higher level of integration challenges.
iv. Also should be a new initial implementation rather than a maintenance state.
v. Be Diverse and not be constricted to a domain or function.
vi. Should lean around the most common development tools. Ideally organization should embrace FullStack development.
vii. Should have measurable outcomes.
Step 4: Operate
The following are some recommendations for this step.
1. At the Leadership level
i. Measure success and send Reports of the Initiatives.
ii. Ensure low barrier for entry of Process and tools.
iii. Encourage the Employees through trainings on the Processes and tools.
iv. Incentive Employees for the contribution.
v. Plan employee time in such a way that there is enough time for contribution.
2. At the Management Level
i. Until innersourcing is mainstream, select projects that are modular and have clear outcomes.
ii. Be diverse – open up to all the employees and not just to specific groups.
iii. Encourage contribution through Mentorship and don’t abandon any contribution.
iv. Recognize Contribution no matter what the work is.
3. At the Employee Level
i. Innersourcing if anything will improve quality of code as it gets reviewed by a group.
ii. Also enables learning new things and increasing the maturity.
Step 5: Measure and Continuously Improve
The following are some recommendations for this step.
1. Identify Key metrics that measure success
i. Reduced number of escalation.
ii. Increased productivity in the release of features.
iii. Increase in Employee Retention.
iv. Attribute organization success with the Innersource adoption.
2. Continuously Improve
i. Gradually increase the complexity of projects.
ii. Incentivize Employees.
iii. Reduce the timelines.
iv. Constantly measure and course correct.
#Innersourcing #Opensourcing #Github #EnterpriseStorage