This is a page about the process of License Clearing — getting Apache Software Grant Agreements (SGAs) or Individual Contributor License Agreements(ICLAs) for all NuttX contributors. This needs to be done before NuttX can graduate from podling stage.

Here's the process  we're following. Update this if it changes.

Estimation process:

Goal: Work out how much effort it will take to do license clearing process on the entire NuttX codebase, ideally with information on the whole project and by section, so we can prioritize by the highest reward / effort ratio sections.

  1. Get all authors of all files, using the file headers and git log.
  2. Create a table of statistics for each section and each file
    1. Author name and email, by volume of code (lines)
    2. create a CSV for each section and each file
  3. Create a report that can summarize sections, authors, code volume

Notes:

  • First pass can omit code volume
  • Ideally process would be completely automated, one shell or python script

License Clearing Process Overview:

  1. For each section, clear it:
    1. Get all authors of all files.
    2. Do the easy files first:
      1. Find the subset of files that have only NuttX committers as authors. (Use the authors.sh tool.)
      2. Mark the files' licenses using Fossology
      3. Get Individual Contributor License Agreements (ICLAs) from all the committers that don't have them. Update the list of authors with ICLAs.
      4. When all ICLAs for these files have been submitted, clear the files in Fossology.
      5. Update the license headers with the licenseheaders.py tool
      6. Generate a PR for Greg and others to carefully review
    3. Do the harder files next:
      1. Find the subset of files that have authors who are not NuttX committers. (Use the authors.sh tool.)
      2. Mark the files' licenses using Fossology
      3. Get ICLAs from all the authors that don't have them. Update the list of authors with ICLAs.
      4. When all ICLAs for these files have been submitted, clear the files in Fossology.
      5. Update the license headers with the licenseheaders.py tool
      6. Generate a PR for Greg and others to carefully review
    4. Mark this section done.
  2. When all sections are cleared, we are done. Generate a report and submit to Apache.
  3. Celebrate!

Practices:

  • PRs that change licenses and license headers should have no other changes in them
    • No nxstyle changes
    • No code changes

Project Plan

  • We need to make progress each release
  • The plan of attack on which files/sections to do each release should go here!

Resources

  1. NuttX Fossology instance (hosted by Brennan Ashton)
  2. License clearing tools (in this github branch for now)
  3. Tool for mass changing license headers (customized for NuttX) – only use on files that have had their licenses cleared in Fossology
  4. Apache Individual Contributor License Agreement(ICLA)
  5. From Justin Mclean:
    1. Apache 3rd Party License Policy
    2. Apache Licensing Howto
    3. How to Get Your Release Through the Incubator
    4. Navigating the Apache Software Foundation Incubator Process presentation

To Do:

  • authors.sh license clearing tool
    • create docs here for using
  • fossology
    • try to run 1 a and 1b for sched/
    • update this page with new procedure
  • No labels

5 Comments

  1. In 1 b) and c) SGAs should be ICLAs. SGA may be needed for large contributions

  2. It may not be possible to get ICLAs from everyone given the project long history. I would focus on people who have made the largest contributions first.

  3. Justin Will do. For now we'll go section by section, at least for a few sections, just to see if the process works. Then we'll transition to looking for the largest contributors. How does that sound?