---
title: "The Ultimate GPL Survival Guide"
description: "A comprehensive guide on GPL compliance for professionals in consumer electronics, IoT, and automotive industries, featuring useful flowcharts and checklists."
canonical_url: "https://fossa.com/blog/the-ultimate-gpl-survival-guide/"
markdown_url: "https://fossa.com/blog/the-ultimate-gpl-survival-guide.md"
content_type: "blog"
language: "en"
date_published: "2017-07-07"
date_modified: "2017-07-07"
author: "Kevin Wang"
organization: "FOSSA"
---

# The Ultimate GPL Survival Guide

> A comprehensive guide on GPL compliance for professionals in consumer electronics, IoT, and automotive industries, featuring useful flowcharts and checklists.

_This post was written by Shane Coughlan and originally published on the FOSSA Medium Publication._

If you work in consumer electronics, drones, IoT, or automotive devices based on generic Linux or Android codebases, chances are you have encountered a variant of the [GPL License](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) and had to comply with the applicable terms.

For the most part, compliance engineering is centered around the GPL Version 2 (GPL hereafter), a [copyleft license](https://fossa.com/blog/all-about-copyleft-licenses.md) that is triggered when distributing code. Software such as the Linux kernel or commonly-used versions of GNU userland tools fall under this license. To comply with the GPL, you must engineer your process with a good approach, toolbox, and policies. Sometimes this means scanning source code and automating compliance work with tools like [FOSSA](https://www.fossa.com/). Sometimes it means scanning binary code to confirm its content. In practice, a lot of work is centered around distributed code — especially firmware downloads and physical products sent to market.

Armijn Hemel and I released a [book](https://www.linuxfoundation.org/news-media/research/practical-gpl-compliance) that covers many of the practical details in April. Since then we have been releasing components to the [OpenChain Project](https://www.openchainproject.org/) as tools for everyone to use, study, share, and improve. In this blog post, I'm taking some of the best content and presenting to you the "The Ultimate GPL Survival Guide."

## Rocking copyleft requirements

One of the areas where people have the most difficulty understanding how the GPL's copyleft requirements translate to practical, real-world action items.

Open Source professionals like Arnoud Engelfriet have been sharing suggestions for various flowcharts for years — below we will explore some of the most helpful charts to deal with common cases when interacting with GPL code.

### Creating a governance process

**Flowchart #0** is a great example of what we need to assist our work as compliance engineers to keep code clean. It is short, clear, and applicable to physically distributed devices. It pre-assumes relatively light and responsive infrastructure to support it:

1. An "approved" list of Open Source licenses.
2. A "rejected" list of Open Source licenses.
3. A contact in the legal department to deal with any edge cases.

  ![Flowchart #0: General Approval Flowchart. With thanks to Royal Philips Electronics](https://fossa.com/1-xihjzYKsqn8pByQ9GUxavg.png)
  <p className="mt-2 text-center text-sm">
    Flowchart #0: General Approval Flowchart. With thanks to Royal Philips Electronics
  </p>

### Handling obligations around distributing code

The bulk of the work you do with the GPL ends up popping up around when/how you distribute code. Different mediums of patching, updating, and shipping software fundamentally affect what the GPL requires you to do:

  ![Flowchart #1: How Do I Distribute?](https://fossa.com/1-p-vZmAsaDnHI_Flt0mGkjQ.png)
  <p className="mt-2 text-center text-sm">Flowchart #1: How Do I Distribute?</p>

###Flowchart #2: Device or offline distribution**

  ![Flowchart #2: Offline Distribution](https://fossa.com/1-g0QKYTTOXlaIq3Djt2cs4Q.png)
  <p className="mt-2 text-center text-sm">Flowchart #2: Offline Distribution</p>

###Flowchart #3: Updating firmware**

  ![Flowchart #3 Firmware Updates](https://fossa.com/1-RmTFDaKmkKUkBNYr7QLX9A.png)
  <p className="mt-2 text-center text-sm">Flowchart #3: Firmware Updates</p>

###Flowchart #4: Over-the-air updates**

  ![Flowchart #4: Over-the-air updates](https://fossa.com/1-QL34h1noyou2uRRVbR4A7g.png)
  <p className="mt-2 text-center text-sm">Flowchart #4: Over The Air</p>

Naturally, not all code is [GPL v2](https://fossa.com/blog/open-source-software-licenses-101-gpl-v2.md). Sometimes you are dealing with Library or Lessor GPL (LGPL) code. Sometimes you are dealing with Modified BSD or [Apache 2.0](https://fossa.com/blog/open-source-licenses-101-apache-license-2-0.md) Licensed code. Simple, clear flowcharts can be created for these use-cases too. If you are using a weak copyleft license like the [LGPL License](https://fossa.com/blog/open-source-software-licenses-101-lgpl-license.md), you can use this example in **Flowchart #5** that covers LGPL distribution:

  ![Flowchart #5 that covers LGPL distribution](https://fossa.com/1-tt_kFoEmn2-f4rQ3HeYsbQ.png)
  <p className="mt-2 text-center text-sm">Flowchart #5: LGPL Code</p>

## Adding compliance "checklists" to your process

Apart from individual tasks when you distribute, staying on top of compliance involves integrating ongoing processes at your organization.

When used properly, checklists can be a useful way to manage GPL compliance as well as communicate a process inside your company. The key is to start simple to avoid too much upfront process and review. Good compliance processes are ultimately a balance of work and risk.

Use the template below as a way to start, and then add/customize as your organization grows in complexity:

  ![General Compliance Checklist](https://fossa.com/1-hTFIiRRUjQdBOHrCw9PGHA.jpeg)
  <p className="mt-2 text-center text-sm">General Compliance Checklist</p>

When it comes to more custom or complicated use cases, you might elect to add more specific checklists to address specific compliance goals. For example, when running builds of your product, the GPL requires you to distribute the "complete and corresponding" source code if incorporated in certain ways. Below you can find another checklist for this use case:

  ![Checklist for rebuilding project X](https://fossa.com/1-iuh8UO0NzsBzW7OubnzkAA.jpeg)
  <p className="mt-2 text-center text-sm">Checklist for Rebuilding Product X</p>

Plenty of options exist for more comprehensive checklists. A great place to start is the Open Compliance Program [Self-Assessment Compliance Checklist](https://compliance.linuxfoundation.org/compliance-related-templates/). This is a more detailed list running through the whole process and may be required for a larger organization. This checklist, like the material above, is free of charge and freely available so you can explore what is best to meet your requirements.

## Learn More

[Practical GPL Compliance](https://www.linuxfoundation.org/resources/publications/practical-gpl-compliance) is a book written by Armijn Hemel and myself that was released at the end of April 2017. It is the culmination of ten years of working together in the Open Source compliance field. We started in European NGOs like GPL-violations.org and FSFE. As time went by our activities became more global and we started to address a more business-orientated audience. Our book bridges some of the knowledge obtained from and useful for both sectors.

OpenChain is the industry standard for open source compliance in the supply chain. The OpenChain Project builds trust in open source by making open source license compliance simpler and more consistent. The [OpenChain Specification](https://fossa.com/blog/takeaways-iso-iec-dis-5230-openchain-specification.md) defines a core set of requirements every quality compliance program must satisfy. The [OpenChain Curriculum](https://www.openchainproject.org/curriculum) provides the educational foundation for open source processes and solutions, whilst meeting a key requirement of the OpenChain Specification. [OpenChain Conformance](https://www.openchainproject.org/conformance) allows organizations to display their adherence to these requirements. The result is that open source license compliance becomes more predictable, understandable, and efficient for participants of the software supply chain: [https://www.openchainproject.org/](https://www.openchainproject.org/)

## Footnote — Flowcharts and Checklists

Want other formats?

Get the checklists in [DOCX](https://wiki.linuxfoundation.org/_media/openchain/practicalgplcompliance-checklists.docx), [ODT](https://www.openchainproject.org/wp-content/uploads/sites/15/2017/06/PracticalGPLCompliance-Checklists.odt) or [PDF](https://www.openchainproject.org/wp-content/uploads/sites/15/2017/06/PracticalGPLCompliance-Checklists.pdf) format.

Get AI, PDF, PNG, PSD, and SVG formats of the Flowcharts at:

<br />
[https://wiki.linuxfoundation.org/_media/openchain/practical-gpl-compliance-flowcharts.zip](https://wiki.linuxfoundation.org/_media/openchain/practical-gpl-compliance-flowcharts.zip)

## Related resources

- [Does TikTok Live Studio Violate GPL v2?](https://fossa.com/blog/does-tiktok-live-studio-violate-the-gpl-v2.md): Exploring the license compliance concerns surrounding TikTok Live Studio's use of GPL v2-licensed OBS Studio.
- [Stockfish vs. ChessBase and What it Means for GPL v3](https://fossa.com/blog/stockfish-vs-chessbase-gpl-v3.md): An exploration of the Stockfish lawsuit against ChessBase, testing the GPL v3 license regarding derivative works and license termination.
- [Open Source Software Licenses 101: GPL v2](https://fossa.com/blog/open-source-software-licenses-101-gpl-v2.md): An informative guide on the GNU General Public License Version 2.0, highlighting its terms, conditions, and how it contrasts with other open source licenses.

## Source

Canonical page: https://fossa.com/blog/the-ultimate-gpl-survival-guide/
