Choosing a software license

Objectives

  • Knowing about what derivative work is and whether we can share it.

  • Get familiar with terminology around licensing.

  • We will add a license to our example project.

Why software licenses matter

You find some great code that you want to reuse for your own publication.

  • This is good for the original author - you will cite them. Maybe other people who cite you will cite them.

  • You modify and remix the code.

  • Two years later … ⌛

  • Time to publish: You realize there is no license to the original work 😱

Now we have a problem:

  • 😬 “Best” case: You manage to publish the paper without the software/data. Others cannot build on your software and data.

  • 😱 Worst case: You cannot publish it at all. Journal requires that papers should come with data and software so that they are reproducible.

Taxonomy of software licenses

European Union Public Licence (EUPL): guidelines July 2021

European Commission, Directorate-General for Informatics, Schmitz, P., European Union Public Licence (EUPL): guidelines July 2021, Publications Office, 2021, https://data.europa.eu/doi/10.2799/77160

Comments:

  • Arrows represent compatibility (A -> B: B can reuse A)

  • Proprietary/custom: Derivative work typically not possible (no arrow goes from proprietary to open)

  • Permissive: Derivative work does not have to be shared

  • Copyleft/reciprocal: Derivative work must be made available under the same license terms

  • NC (non-commercial) and ND (non-derivative) exist for data licenses but not really for software licenses

Great resource for comparing software licenses: Joinup Licensing Assistant

Exercise/demo

Exercise

  • Let us choose a license for our example project.

  • We will add a LICENSE to the repository.

Discussion

  • Our example code uses the libraries scikit-image, scikit-learn, numpy, matplotlib, and pywavelets. Do we need to look at their licenses? In other words, is our project derivative work of something else?

More resources