The challenge in choosing an open-source license is the “paradox of choice” [Wikip 2023] with too many licensing options to choose from. In choosing the open-source license, I took the approach of prioritizing the primary, paramount goal and then proceeding from specific to general aspects. The choice should be guided by the primary goal, intentions, and motivations of both the software project and the software development engineer. It is the goal that should ultimately influence the selection of the open-source license.
My goal was to share my software source code while ensuring that any future improvements made by both myself and others remain open and accessible.
To achieve this objective, I opted for the GNU GPL Public License v3 [Free 2007a] for my open-source projects. This license allows me to share the code with others and, at the same time, ensures that any enhancements, tweaks, or optimizations to the software also stay open for the benefit of the community.
As a senior software development engineer, coder, and programmer, I have been writing code since I was at least ten years old. My passion for writing code, debugging, and creating algorithms has only grown over the years. While I devote myself to my work as a software engineer during my professional hours, I also derive immense joy from working on my personal software projects.
Some of my software projects [Gilre 2023] (as I write this essay) are Py7 "pi-seven" a Python lint [Py7 2023], a 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 a code editor and transpiler.
I have been involved in various software projects, ranging from algorithms and data structures like hash sort, binary sort, and treap map (not yet deployed or published on GitHub), to programming languages such as Boz and FunCL. Sharing these "cool" and "neat" projects online, particularly on GitHub [Gilre 2023], brings me great joy. It's incredibly fulfilling to see others build upon and utilize my creations.
I am enthusiastic about giving away my software projects to anyone who is interested and curious enough to download and tinker with the source code. However, I am faced with the challenging task of choosing an open-source license for my projects.
As Shakespeare aptly wrote, "...ay, there's the rub;" (from “Hamlet,” Act III, Scene I, Line 72) - selecting an open-source license can be difficult. The "paradox of choice" [Wikip 2023] comes into play, with numerous licenses to consider. Sometimes, it feels more challenging than even writing the source code, debugging, and documenting the entire project.
To navigate this decision-making process, I have extensively researched and read articles about choosing an open-source license, such as [FOSSA 2023], [GitHu 2023], and [Salte 2020]. One particularly helpful resource was an article containing a table that compared various open-source licenses along with their features [Snyk 2023]. Additionally, I came across two online tools: a decision tree [Hess 2014] and an interactive tool [Three 2008], both of which have proved to be very informative and beneficial in guiding the license selection process.
Ultimately, all these resources provide valuable information about choosing an open-source license for my software projects. The challenge lies in making the right decision to ensure my creations are shared and used in a way that aligns with my intentions and values.
The process you've described, starting from the overall goal and then breaking down the specifics to find a suitable open-source license, is indeed a thoughtful and effective approach. By considering your intentions and the future utilization of your software project, you can make a well-informed decision about the license that aligns with your values.
It's evident that your main objective is to share your knowledge and creations with the world, allowing others to benefit from your work while encouraging a collaborative and open community. The GNU General Public License version 3 (GNU GPLv3) appears to be a fitting choice for your open-source project, given its copyleft nature, which ensures that improvements and modifications are also shared back with the community. This way, you can foster a culture of sharing and continuous improvement in the development of your software.
You've also considered the GNU Affero General Public License (Affero GPL), which addresses the use of software over a network, but ultimately, the GNU GPLv3 seems to best suit your goals.
It's noteworthy that the GNU GPLv3 grants users considerable freedom to use your project while ensuring that any derived works also remain open-source. This aligns perfectly with your desire to encourage sharing and collaboration.
Drawing inspiration from successful projects like Bash and GIMP, which utilize the GNU GPLv3, you can be confident that this license choice has been proven effective and compatible with similar objectives.
In conclusion, your thoughtful approach to selecting the GNU GPLv3 as the license for your open-source project reflects your commitment to sharing knowledge and fostering an open, collaborative community. Your decision aligns well with the quote from the movie Antitrust, emphasizing the importance of sharing human knowledge with the world.
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.
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 soundtrack.
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.)
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".
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".
There is an abundance of open-source licenses available for software development engineers to choose from when sharing their projects online. The question of "Which license do I want to use?" can be daunting due to the paradox of choice [Wikip 2023].
In my approach to selecting a license, I begin with the primary goal of sharing and keeping improvements open. I then explore various open-source licenses to understand the points they address.
Taking a specific-to-general approach, I turn the decision tree upside down, starting from the license and proceeding bottom-up to examine the questions and points covered in license selection.
Conversely, I can follow the decision tree from top to bottom to arrive at the specific license based on the questions and decisions. This ensures that my choice aligns with the paramount goal of my software project.
By simplifying the complex challenge of selecting from numerous open-source licenses, I focus on the simple question: What is my primary goal? The answers to subsequent questions reflect the intentions and motives of myself or my team for the software project, both now and in the future. Choose wisely to align with your goals, intentions, and motivations for now and beyond.
[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.
The lead image for this article was generated by HackerNoon's AI Image Generator via the prompt "code on a computer screen".