Standard for Public Code

Contents

  1. Requirements
  2. How to test
  3. Public policy makers: what you need to do
  4. Managers: what you need to do
  5. Developers and designers: what you need to do
  6. Further reading

Publish with an open license

An open and well known license makes it possible for anyone to see the source code in order to understand how it works, to use it freely and to contribute to the codebase. This enables a vendor ecosystem to emerge around the codebase.

Clearly indicating the license for each file within a codebase facilitates correct reuse and attribution of parts of a codebase.

Requirements

  • All source code and documentation MUST be licensed such that it may be freely reusable, changeable and redistributable.
  • Software source code MUST be licensed under an OSI-approved or FSF Free/Libre license.
  • All source code MUST be published with a license file.
  • Contributors MUST NOT be required to transfer copyright of their contributions to the codebase.
  • All source code files in the codebase SHOULD include a copyright notice and a license header that are machine-readable.
  • Having multiple licenses for different types of source code and documentation is OPTIONAL.

How to test

Public policy makers: what you need to do

  • Develop policy that requires source code to be open source.
  • Develop policy that disincentivizes non-open source code and technology in procurement.

Managers: what you need to do

  • Only work with open source vendors that deliver their source code by publishing it under an open source license.
  • Beware that even though Creative Commons licenses are great for documentation, licenses that stipulate Non-Commercial or No Derivatives are NOT freely reusable, changeable and redistributable and don’t fulfill these requirements.

Developers and designers: what you need to do

  • Add a new license file to every new codebase created.
  • Add a copyright notice and a license header to every new source code file created.
  • When source code is being reused by the codebase, make sure that it has a license that is compatible with the license or licenses of the codebase.

Further reading