Skip to content
Published on

Inner Source and Test Automation

Categorized
Open Source

What is Inner Source?

Most readers already know what open source is. Briefly, it is a methodology whereby communities of developers collaborate to create and share software, documentation and other artifacts, and the open intellectual property created and shared across those communities and the ecosystems in which they participate. You can learn more about the Open Source Definition from the Open Source Initiative (OSI).

Inner Source is the application of the same methods that enable and accelerate collaboration and development, but within a single organization. The Inner Source Commons, an organization that supports education in support of Inner Source, define the practice as follows:

InnerSource takes the lessons learned from developing open source software and applies them to the way companies develop software internally. As developers have become accustomed to working on world class open source software, there is a strong desire to bring those practices back inside the firewall and apply them to software that companies may be reluctant to release. For companies building mostly closed source software, InnerSource can be a great tool to help break down silos, encourage internal collaboration, accelerate new engineer on-boarding, and identify opportunities to contribute software back to the open source world.

Rationale for Launching an Inner Source Program

The above definition contains some powerful concepts: break down silos, encourage collaboration, accelerate on-boarding, and identify contribution opportunities. On a more pragmatic level, Inner Source most often attracts organizations seeking to do either to

  • Prepare for Open Source Participation

  • Emulate Success realized in Open Source, internally

Let's examine each of these motives in turn.

Preparation for Open Source Participation

Today's enterprise organizations and tech companies not only utilize a great deal of open source software, but are indeed dependent upon it. According to the Synopsys 2024 Open Source Security and Risk Analysis Report, "96% [of scanned stacks] contained open source. Seventy-seven percent of all the source code and files scanned originated from open source code".

Despite this ubiquitousness, there are still many organizations that eschew use of open source and participation in open source communities. Reasons for this hesitance include unfamiliarity, perception of risks to security and intellectual property, and others. But the benefits of use and participation are very palpable, and are not lost upon developers, development managers, and corporate management.

As a first step towards full-blown participation in open source, some companies experiment with inner source (as outlined above) to gain experience in code management best practices, transparency, collaborative development, etc. Some organizations simply enjoy these benefits and never venture beyond the corporate firewall. Others use the lessons learned and metrics collected to begin to engage with community projects for technologies that help run their companies, build their products and offer their services.

Emulation of Open Source Success

Other organizations "walk backwards" into inner source. These companies and the developers that work their already have some degree of experience in integrating and deploying open source code, contributing to open source projects and/or interacting with open source communities. Their embrace of inner source usually starts with establishing repositories and forums for sharing code across groups and divisions and progresses to adoption of collaborative development and release practices. Inner source adoption usually occurs incrementally, and may not encompass all working models in an organization (just as not all groups make equal use of open source).

Applying Inner Source to Test Automation

Test automation is traditionally an activity bounded by project, department and technology silos. Some test projects "roll their own" test automation platforms, others use available open source tools and frameworks, while yet others use available budgets to acquire off-the-shelf solutions.

Inner source applies to test automation as it does to other types of software-related activities, fostering collaboration, transparency, and shared ownership of testing tools and frameworks. if well-managed, adopting inner source can reduce costs by consolidating effort and reducing redundancy.

Key Concepts

Collaborative Development - Teams across the organization can contribute to test automation tools, frameworks, and libraries, fostering a culture of collaboration and shared responsibility for quality.

Code Reuse - Inner source encourages reuse of test automation code and assets. Teams can share libraries, scripts, and best practices, reducing duplication and accelerating development.

Improved Quality - With contributions from multiple teams, overall quality of testing tools improves. Diverse perspectives help identify edge cases and improve robustness.

Documentation and Transparency - Inner source emphasizes thorough documentation, enabling teams to understand how to use and contribute to testing tools, leading to better onboarding and more effective use of automation.

Agility and Flexibility - By allowing teams to adapt and extend existing tools, organizations can respond more quickly to changes in technology or project requirements.

Community and Support - An inner source approach breaks down silos and creates a community around test automation. Teams can share knowledge, provide support, and mentor each other, leading to continuous improvement.

Implementation Strategies

Adopting inner source practices, while not "rocket science", requires a clear strategy. Your organization is probably engaging in some or even all of these tactics as a matter of course, but all are essential in establishing a successful inner source program.

Establish Governance - Create guidelines for contribution, code reviews, and quality standards to maintain high-quality automation tools.

Promote Ownership - Encourage teams to take ownership of specific test automation projects, building pride in contributions and promoting accountability.

Version Control - Leverage version control systems (like Git) to manage contributions and track changes, similar to open source projects.

Central Repository - Set up a central repository for test automation assets where teams can contribute and access shared resources.

Regular Meetings - Organize meetings or workshops enable teams to discuss challenges, share successes, and brainstorm improvements in test automation practices.

Benefits of Inner Source in Test Automation

The benefits of adopting inner source practices and of establishing an inner source program are many, attractive, and cost-effective:

  • Efficiency: Teams leverage shared tools and resources, leading to faster test development and execution.

  • Collaboration: Breaking down silos allows for better communication and collaboration across teams, leading to more comprehensive testing strategies.

  • Innovation: Encouraging contributions from diverse teams leads to innovative solutions and improvements in test automation.

  • Alignment: Inner source help align testing practices across teams, ensuring consistency and reducing the risk of discrepancies in testing.

One additional benefit is of course Preparedness: encountering, integrating and deploying open source code is practically inevitable. Engaging in inner source facilitates this eventuality and also can improve practices for organizations already using open source code and interacting with the world of open source software at large.