Licensing Primer 29 Mar 2020

During a recent coding lab, licensing came up in conversation. As a Flatiron student, we use a lot of starter code provided by Flatiron itself, as well many other tools provided by a variety of companies and communities. One project prompted us to make sure we included a license before submitting, but what license is appropriate?

Licensing

The Creative Commons Family of Licenses

Flatiron includes the following license with all its code provided to students. It is largely based on the Creative Commons family of licenses. Creative Commons provides a versatile and nuanced set of licenses that can be mixed and matched to provide a wide variety of use cases:

  1. CC0: The work is in the public domain, and free to be used, altered, and shared by anyone without attribution.
  2. BY: The original author must be attributed in any future uses of the work.
  3. SA: Any derivative work cannot be licensed in a more restrictive way. SA stand for ‘Share-alike’.
  4. NC: This work may only be used for non-commercial purposes.
  5. ND: The work can only be used verbatim; no remixing or derivative works are permitted.

The Flatiron Educational Content License

The core of Flatiron’s license is the following Creative Common clauses: BY, NC, and SA. If I use or publish any Flatiron School code, I’ll need to properly attribute it as coming from Flatiron. I also cannot use it for any commercial purposes, and furthermore I cannot attempt to license it more restrictively. I am able to share it and alter or build on it, as long as I follow these restrictions.

Why does licensing matter?

I have always been a tinkerer at heart. I bought my first laptop in the early 2000s and immediately loaded Red Hat 9 onto it from cds that came in the back of a Linux manual. It was a pretty painful learning experience. Lack of driver support usually guaranteed you were dumped into a terminal with no wifi connectivity or GUI. Searching for the answer revealed that these problems were in essence licensing problems. The drivers required to use hardware like GPUs or wifi cards (and many other types of hardware and peripherals) were often closed source commercial code distributed as a binary blob. This sparked a debate in the Linux community, and open source community at large. Should binary blobs be included in open source projects? What if the blob is provided with documentation? Fundamentally: does it compromise our principles as developers of free and open source software if we include proprietary binary-only code? Different communities have answered this question with everything from a hard yes to an eventual no. The debate touches on topics such as device security, hardware compatibility, product lifetimes, warranty support and the ability of users to repair and upgrade their own devices. Licensing is a philosophical issue more than a legal one, and I believe it should be exercised with care for the product, but also respect of the user.