Articles

What is Open Source Software Compliance Management?

Sep 7, 2020

Leveraging open source software is not only common, but essential, for modern software development operations (DevOps). However, integrating open source software (OSS) into proprietary projects comes with its own set of challenges, particularly concerning legal compliance. Open Source Software Compliance Management addresses these challenges by ensuring organizations understand and adhere to the licensing requirements of the open source components they use. Let’s delve into the key aspects of OSSCM to understand its importance and best practices.

Choosing Open Source Components

The first step in Open Source Software Compliance Managment is selecting appropriate open source components for your project. This involves evaluating factors such as community support, project activity, security, and licensing terms. Opting for widely-used and well-maintained projects often ensures better long-term support and fewer compliance issues. Consider these factors when choosing open source components:

  • Code quality and comprehensive documentation
  • Community support and contributor credibility
  • Security vulnerability history
  • Type of software license

License Identification

Every open source project is governed by a specific license, which dictates how the software can be used, modified, and distributed. Identifying and understanding the licenses of all components used in your project is crucial to ensure compliance. Common licenses include MIT, Apache, GPL, and BSD, each with their own implications.

The license for an open source software project is typically found in a file simply titled “LICENSE”.  Open source licenses comply with the Open Source definition which means they allow software to be freely used, modified, and shared. Most open source software uses an OSI-approved license.

However, making matters more complicated, an individual software project may have direct dependencies as well as transitive dependencies with their own software licenses. A direct dependency is a third-party software package that a developer includes in their codebase to leverage its functionality. Transitive dependencies are those not explicitly included by the developer but rather are required by the direct dependency. In short, it is a dependency of the direct dependency.

Developers are expected to use tools to manage dependencies, scan for dependencies, and generate license reports within their CI/CD (Continuous Integration / Continuous Delivery) pipeline.

License Compatibility and Obligations

Once identified, it’s essential to assess license compatibility between different components in your project. Some licenses are compatible with each other, while others impose restrictions that could conflict. Conducting a legal review ensures that your use of OSS aligns with each license’s terms and avoids legal pitfalls.

License obligations include requirements related to source code distribution, copyright notices, and providing the license notice with your software product.

The software license should be reviewed by a qualified legal professional to ensure the legal implications are clearly understood and the license is compatible with your product and company’s intended use. Potential issues include liability for patent infringement, or the introduction of intellectual property disputes.

Importance of Employee Education

Educating employees on OSS compliance is an important part of Open Source Software Compliance Management to prevent inadvertent violations. Team members should understand the basics of open source licenses, their obligations, and how to appropriately use and contribute to open source projects while complying with legal requirements.

A great place to start is The Linux Foundation and these free online courses:

Creating OSS Policy

Establishing a clear OSS policy within your organization provides guidelines on selecting, evaluating, and managing open source components. This policy should outline procedures for license compliance, approval processes for new OSS usage, and mechanisms for resolving potential compliance issues.

Consider topics such as:

  • Developers using open source software from public repositories
  • Documentation of open source software used across all projects
  • Approval policy of using open source software
  • Determining if/when internal code can/should be released as open source
  • Employees contributing to open source projects

Using Software Composition Analysis (SCA)

Software Composition Analysis tools automate the identification and tracking of OSS components within your codebase. These tools provide visibility into the licenses of used components and help manage dependencies effectively. Consider these issues when choosing an SCA toolset:

  • Can the SCA tooling detect and report undeclared open source?
    Declared open source refers to those packages (aka components or libraries) that are referenced in a package manager such as NPM, NuGet or Pip. However, packages may also be declared in the source code using import declarations. Undeclared open source, however, is not explicitly referenced in any way. Rather, this refers to open source that is pasted directly into the code either in its full form or just a fragment (aka snippet) of the package.
  • Can the SCA tooling detect and report unmanaged open source?
    Managed open source simply refers to the usage of open source dependencies via a software package management system. Unmanaged open source refers to open source embedded into the codebase – not referenced within a package manager.
  • Can the SCA tooling identify vulnerable code snippets?
    A code snippet refers to a fragment of a known open source or third-party software package found within another codebase as opposed to the package existing in its entirety. Some software packages may have a vulnerability or CVE (Common Vulnerabilities and Exposures). A vulnerable code snippet is the precise fragment of code that causes the package to be vulnerable. In some cases, a code snippet of a vulnerable snippet may be found in a codebase. But, it may or may not be the vulnerable code snippet. The ability to identify a vulnerable code snippet allows developers to prioritize their security patching efforts and save valuable time.

Managing SBOMs (Software Bill of Materials)

A Software Bill of Materials (SBOM) is a comprehensive list of all software components used in a project, including their versions and licenses. Maintaining an accurate SBOM is crucial for transparency, risk management, and compliance auditing.

Two popular SBOM formats are SPDX (Software Package Data Exchange) created by The Linux Foundation and CycloneDX created by OWASP.

SBOM management is a function of Software Composition Analysis tools.

What needs to be included in your SBOM and what should be included are two important questions to consider for your organization. Industry regulations, vendor/supplier relationships, and overall risk tolerance are factors to be considered. A great place to start is this free course from The Linux Foundation:

  • Generating a Software Bill of Materials
    Learn to identify the minimum elements for a Software Bill of Materials (SBOM) and how they can be coded up, and get an overview of some of the open source tooling that is available to support the generation and consumption of an SBOM.

For more information on what to include in your SBOM, how to ingest, consolidate and generate SBOMs, and how to automate the creation process, check out Generate Complete SBOMs by FossID.

The OpenChain License Compliance Standard

The OpenChain Project provides a set of industry standards and best practices for OSS compliance management. It focuses on creating trust between organizations through standardized compliance processes, documentation, and training. By adopting OpenChain principles, organizations can streamline their efforts and demonstrate their commitment to compliance and good governance.

Open Source Software Compliance Management is essential for organizations to mitigate legal risks, uphold licensing obligations, and foster a culture of responsible OSS usage. By implementing robust practices such as thorough license identification, employee education, and adherence to standards like OpenChain, businesses can effectively navigate the complexities of OSS while reaping the benefits of collaborative development.

Table of Contents

    Sushi Bytes Podcast

    Talk to a Software Supply Chain Ninja

    Book a discovery call with one of our experts to discuss your business needs and how our tools and services can help.