Essay Why the GNU General Public License v3?
Tags: opensource, programming, howto, github
Published: 2023-07-22 20:44:08

## Choosing an Open Source License for Your Software Project

How I chose an open source license for my own software projects...

**Introduction**

The challenge in choosing an open-source license is the “paradox of choice” [Wikip 2023] with too many options of many licenses to choose from. Yet in choosing the open-source license, I took the approach of having the primary, paramount goal, and then going from specific to general. Let the choice be driven by the primary goal, what the software project and the software development engineer intentions and motivation. The goal drives the choice of open-source license.

My goal was to share my software source code, and a want to keep any improvements by others and myself open, going forward into the future.

I choose and use the GNU GPL Public License v3 [Free 2007a] with my own open-source projects as I want to share the code with others, yet I want any improvements, tweaks, optimizations to also remain open. 

**Background**

I am a senior software development engineer, a coder, a programmer. I have been writing code since I was at least ten-years old. Hence I love to write code, debug code, and create algorithms. As a software engineer, I do my work at work, however I also love to create my own software projects. 

Some of my software projects [Gilre 2023], as I write this essay, are Py7 "pi-seven" a Python lint [Py7 2023], code check utility written in Python which I recently deployed in a repository "a repo" on GitHub. 

A longer-term passion project is ZeptoN [ZeptoN 2023] which is a programming language that transpiles or transcompiles into Java bytecode. Along with ZeptoN is a simple less "feature complex" code editor is the ZeptoN code editor or "ZEPton code ediTOR" or Zeptor. Zeptor is both code editor, and has the ZeptoN transpiler built-in.

Other projects are algorithms or data structures--such as the hash sort, binar sort, or a treap map (as yet not deployed or published on GitHub) and others include programming languages like Boz, and FunCL. Hence I enjoy creating "cool" and "neato" software projects I love to share online or on GitHub [Gilre 2023]. A great joy and thrill of mine is when others build on my software projects and use them.  

Yet, while I give away my own software projects to anyone interested and curious to download, utilize, and tinker with the source code for a project. Still I want to share, now the question is to choose an open-source license. 

As Shakespeare wrote, "...ay, there's the rub;" (from “Hamlet,” Act III, Scene I, Line 72) to choose an open-source license can be difficult, if not challenging. The difficulty is in the "paradox of choice" [Wikip 2023]. With so many open-source licenses to choose from, it can be a greater challenge than writing the source code, debugging, and documenting a software project. 

This article is based on several articles, tools, that help to select an open source software license. In order to consider the problem more completely, I read articles about choosing an open source license: [FOSSA 2023], [GitHu 2023], [Salte 2020]. A good article had a table comparing open source licenses with features of each license [Snyk 2023]. Two online tools are a decision tree [Hess 2014], and then an interactive tool [Three 2008] to choose a license. All of these are very informative, and helpful. Yet they are tools, information about choosing an open source license. 

**Method for Choosing**

The method of choosing, and avoid getting overloaded, overwhelmed by the paradox of choice is very simple. It is the question of "What is the goal in open-sourcing the software project?" Of course, to share with others. 🤪

Yet what is the overall goal, moving forward, with the open-source project. How do you want your open-source project to be utilized going forward? What is the goal going forward into the future? This the question to consider when selecting an open-source license for your software project.

From the movie Antitrust [IMBD 2001] the quote "Human knowledge belongs to the world." Anything I create in software, when not for an employer or under contract is mine, and I want to share that knowledge with the world, hence I choose to use the GNU General Public License version 3 [Free 2007a]. Build and improve on my software, and share it back, give it back. I care about sharing improvements. Two other questions are:

- "How open do you want your project?" My answer is: I want to share, but others should share too.
- "Do you want to enable commercial adoption?" My answer is also: Sure, but other should share by opening their code too.

For my own open-source projects, I want to share my source code, but I more importantly I want to share the improvements in the same context. Thus I want improvements, additions, optimizations, new features to be shared as I share them--those changes are based upon the software project I created. 

Hence I want the software project to remain as open initially. Thus the goal of sharing improvements going forward, requires a copyleft license. 

Ultimately, the best current license is the GNU General Public License version 3. 

This process is the reverse of decision tree, start from goal, and then break down specifics--go from specific and then see if the questions fit the overall goal. In my case GNU GPL v3, although I have considered the GNU Affero General Public License (Affero GPL) [Free 2007b] which covers use of the software over a network.

The GNU GPLv3 also lets people do almost anything they want with your project, except distributing closed source versions. Example software projects: Bash and GIMP use the GNU GPLv3.

**GNU GPLv3 Features**

The properties and features of the GNU GPL v3 are: attribution, same context, same license for improvements, or: attribution, view Source, share-alike combinations, and share-alike transformations.

1. Attribution: The original credits must be incorporated verbatim into the artifact produced by the reuse. For example, the composer of a song with this restriction must be listed in the credits of a video if that song is used as its sound track.

2. View Source: The source file/s for the work must remain accessible to the public. For example, a song created with a music editor like Fruityloops must be released in both its final (mp3) and source (.flp) formats. (The Combinations and Transformations rights dictate whether reuse includes the right to modify such source file/s.)

3. Share-alike Combinations: Whatever license terms restrict the original artifact must restrict other works combined with it in the future. For example, if a composer makes her song freely available for noncommercial purposes, then a video incorporating that song must also be available under the same terms. Also called "copyleft".

4. Share-alike Transformations: Whatever license terms restrict the original artifact must restrict reuses as well. For example, if a composer makes her song freely available for noncommercial purposes, then a remix of that song must also be available under the same terms. Also called "copyleft".

**Conclusion**

There are many a variety of open-source licenses for a software development engineer to choose from for their own projects shared online on the Internet. The difficulty is the simple question of “Which license do I want to use?” With so many choices, the simple choice of a license can be daunting--the paradox of choice [Wikip 2023].

The approach I used in choosing a license was to start with my goal, share and keep improvements open. From that I then looked at the various open-source licenses, and found the various points addressed by the license. 

This specific to general approach is turning the decision tree upside down, and proceed bottom up then from the license see the various questions, points addressed in selecting the license top down. 

Afterward, one can follow the decision tree to the specific license by the questions, decisions and see the points in series for that license. This verifies from top down, the bottom up decision from the paramount goal of the software project. 

Thus the complex challenge of so many open-source licenses is simplified, reduced to the simple question of the primary goal, and then some following questions. All reflect the intentions and motives of the creator or team of a software project, not just now but going forward into the future. 

Choose wisely...to fit your goal, intentions and motivations for now and the future.

**References**

- [FOSSA 2023] FOSSA, Inc. “How to Choose the Right Open Source License,” 
https://fossa.com/blog/how-choose-right-open-source-license, 2023, Accessed July 21, 2023.

- [Free 2007a] Free Software Foundation, “GNU General Public License version 3,” https://www.gnu.org/licenses/gpl-3.0.en.html, June 2007, Accessed July 21, 2023.

- [Free 2007b] Free Software Foundation. “GNU Affero General Public License,” https://www.gnu.org/licenses/agpl-3.0.en.html, November 2007, Accessed July 21, 2023.

- [Gilre 2023] Gilreath, William F. “William F. Gilreath GitHub Repository,” https://github.com/wgilreath, July 2023, Accessed July 21, 2023.

- [GitHu 2023] GitHub, Inc. “Choose an open source license,”
https://choosealicense.com, Accessed July 21, 2023.

- [Hess 2014] Hess, Ken, "Decisions, decisions. How do you choose an open source license?"
https://www.zdnet.com/article/decisions-decisions-how-do-you-choose-an-open-source-license, October 29 2014. Accessed July 21, 2023.

- [IMBD 2001] IMDB, Inc. “Antitrust”, https://www.imdb.com/title/tt0218817, January 21, 2001, Accessed July 21 2023.

- [Py7 2023] py7 or π-7 Python Code Check Linting Tool, https://github.com/wgilreath/py7. Accessed July 21, 2023.

- [Salte 2020] Salter, Jim. “Open source licenses: What, which, and why,”
https://arstechnica.com/gadgets/2020/02/how-to-choose-an-open-source-license, Accessed July 21, 2023.

- [Snyk 2023] Snyk Limited, "Open Source Licenses: Types and Comparison," 
https://snyk.io/learn/open-source-licenses, Accessed July 21, 2023.

- [Three 2008] Three.org The Open Art Network, "License Chooser," December 2008,
http://three.org/openart/license_chooser, Accessed July 21, 2023. 

- [Wikip 2023] Wikipedia contributors, “Paradox of Choice,” https://en.wikipedia.org/wiki/The_Paradox_of_Choice, Accessed July 21, 2023.

- [ZeptoN 2023] ZeptoN Programming Language, https://github.com/ZeptoN-Programming-Language, Accessed July 21, 2023.