Identifying and using software licenses

Small Print

Assistance

Choosing the right license is not always easy, which has prompted several projects and has led to the Free Software Foundation [29], GitHub [30], and Wikipedia [31] going to the trouble of offering online guides (Figure 3). They compare the objectives of the various free licenses [32] and describe their use cases [33]. The FSFE also offers its support in verifying license compliance in the form of legal advice from a legal expert [34].

Figure 3: Online guides help you choose the right license for your software project. © GitHub Inc.

These options help you keep track and make it easier to find your way through the legal jungle when it comes to individual projects. In the case of multiple licensing, as shown in the example in Listing 3, or of different licenses for the files and components, GitHub will not work. It cannot handle this kind of case cleanly (i.e., thus far you can only store single-license projects there; see the "Creating a License File on GitHub" box).

Creating a License File on GitHub

GitHub can help you create an open source license for a repository in a number of steps (see also the "Including License Logos" box). First, go to the main page of your repository, select Create new file , and enter LICENSE or LICENSE.md as the file name. Next, click on the Choose a license template button to the right of the file name field. A selection field for the appropriate open source license opens. If the selected license requires additional information, you will be presented a prompt for that purpose. After specifying a commit message such as Add license , a click on Commit new file will complete the process.

If a LICENSE file already exists in the repository, GitHub uses the Licensee Ruby Gem [48] to match it with a short list of open source licenses. If GitHub cannot recognize the license in the repository, it might contain multiple licenses or be too complex. You then need to check whether you can simplify the licensing structure (e.g., by outsourcing the complexity to the README file).

Conversely, GitHub offers to search for repositories with specific licenses or license families. An overview of the keywords used by GitHub relating to licenses can be found in Searching GitHub by license type .

Including License Logos

To make it easier for potential users to recognize the license under which you publish a work, you can add a catchy license shield (badge). The Shields.io [49] project takes this step off your hands and offers both ready-made and individually generated license shields (Figure 4), which you then only need to add to the documentation for your project.

Figure 4: Some examples of the license shields generated by Shields.io. © Shields.io

Conclusions

In this article, I looked at the various software licenses, discussed their use, and pointed out the pitfalls that need to be taken into account. I also introduced you to the methods and tools you can use to identify the license of any software you use. In a follow-up article, I will discuss how to add one or more licenses to your own Python package and document it. I look at procedures and tools that have proven their value in everyday life and show you how to integrate them into your development workflow.

Acknowledgments

The author thanks Veit Schiele, Axel Beckert, and Gerold Rupprecht for their suggestions during the preparation of this article.

Infos

  1. Free Software Foundation: https://www.fsf.org/
  2. OSI approved licenses: https://opensource.org/licenses
  3. Software licenses: https://en.wikipedia.org/wiki/Software_license#Free_and_open-source_software_licenses
  4. European Union Public License: https://joinup.ec.europa.eu/collection/eupl/introduction-eupl-licence
  5. "Matrix of EUPL compatible open source licences": https://joinup.ec.europa.eu/collection/eupl/matrix-eupl-compatible-open-source-licences
  6. Unlicense: https://choosealicense.com/licenses/unlicense/
  7. The Creative Commons license and software: https://creativecommons.org/faq/#can-i-apply-a-creative-commons-license-to-software
  8. Open Knowledge Foundation: https://okfn.org
  9. Open Data Commons: https://opendatacommons.org
  10. Open Source Hardware Association: https://oshwa.org
  11. CC0: https://creativecommons.org/share-your-work/public-domain/cc0/
  12. Välimäki, Mikko. 2005. The Rise of Open Source Licensing: A Challenge to the Use of Intellectual Property in the Software Industry , PhD dissertation, Helsinki University of Technology, Helsinki, Finland, May 2005, pg. 119. Turre Publishing, 2005: https://commons.wikimedia.org/w/index.php?curid=45969489
  13. Liccheck: https://github.com/dhatim/python-license-check
  14. REUSE: https://reuse.software
  15. Python cryptography module: https://github.com/pyca/cryptography
  16. SPDX: https://spdx.dev
  17. License information exchange: https://jupyter-tutorial.readthedocs.io/en/latest/dashboards/index.html
  18. reuse tool: https://github.com/fsfe/reuse-tool
  19. Comparing reuse with other solutions: https://reuse.software/comparison/
  20. ScanCode: https://github.com/nexB/scancode-toolkit
  21. ClearlyDefined:https://clearlydefined.io
  22. FOSSology: https://www.fossology.org
  23. OpenChain: https://www.openchainproject.org
  24. Debian reuse package: https://packages.debian.org/bookworm/reuse
  25. SPDX license list:https://spdx.org/licenses/
  26. "Free Software, Open Source, FOSS, FLOSS – same but different" by Björn Schießle, FSFE, December 8, 2012: https://fsfe.org/freesoftware/comparison.en.html
  27. Server Side Public License: https://en.wikipedia.org/wiki/Server_Side_Public_License
  28. License disputes: https://gpl-violations.org
  29. "How to Choose a License for Your Own Work": https://www.gnu.org/licenses/license-recommendations.html
  30. Choose a License: https://choosealicense.com
  31. "Comparison of free and open-source software licenses": https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licenses
  32. License overview: https://www.gnu.org/licenses
  33. License comparison: https://choosealicense.com/appendix/
  34. Checking for license compliance: https://mastodon.social/@fsfe/110723128814901660
  35. DL-DE->BY-2.0: https://www.govdata.de/dl-de/by-2-0 (in German)
  36. DL-DE->Zero-2.0: https://www.govdata.de/dl-de/zero-2-0 (in German)
  37. Community Data License Agreement: https://cdla.dev
  38. Free Art License: https://artlibre.org/licence/lal/en/
  39. GNU Free Documentation License: https://www.gnu.org/licenses/fdl-1.3.txt
  40. FreeBSD Documentation License: https://www.freebsd.org/copyright/freebsd-doc-license/
  41. Open Publication License: https://opencontent.org/openpub/
  42. SIL Open Font License:https://opensource.org/licenses/OFL-1.1
  43. GNU General Public License 3.0: https://www.gnu.org/licenses/gpl-3.0
  44. License for EC fonts: https://mirrors.ctan.org/fonts/ec/src/copyrite.txt
  45. Arphic Public License: https://spdx.org/licenses/Arphic-1999
  46. IPA Font License: https://spdx.org/licenses/IPA.html
  47. CERN Open Hardware Licence version 2 – Permissive: https://ohwr.org/project/cernohl/-/wikis/Documents/CERN-OHL-version-2
  48. Licensee: https://github.com/licensee/licensee
  49. Shields.io: https://shields.io
  50. Hofmann, Frank, and Axel Beckert. Debian-Paketmanagement-Buch [Debian Package Management Book ]: https://dpmb.org/index.en.html (in German)

The Author

Frank Hofmann mostly works on the road as a developer, trainer, and author. His preferred workplaces are Berlin, Geneva, and Cape Town. He is one of the authors of the Debian Package Management Book [50].

Buy this article as PDF

Download Article PDF now with Express Checkout
Price $2.95
(incl. VAT)

Buy ADMIN Magazine

Related content

comments powered by Disqus
Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs



Support Our Work

ADMIN content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.

Learn More”>
	</a>

<hr>		    
			</div>
		    		</div>

		<div class=