As a Linux system administrator, I write a good quantity of code.
Does that shock you? Well, I attempt to be the “lazy” sysadmin, and I do that, partially, by decreasing the variety of repetitive duties I have to do by automating them. Most of my automation began as little command-line applications. I retailer these in executable scripts for re-use at any time on any Linux host for which I’ve accountability.
The downside with sharing unlicensed Code
I additionally wish to share my code. I believe that, if my code has helped me to resolve an issue, it might probably additionally assist different sysadmins resolve the identical or related issues. This is, in any case, the essence of open source — the sharing of code. While code sharing is an efficient factor, authorized points can stop completely good code from getting used as meant by the developer.
The main downside is that many corporations have authorized departments that require them to maintain copies of licenses. This makes it straightforward to know their rights and obligations. Software with out a license connected to it in any manner turns into a authorized legal responsibility. This is as a result of there isn’t any foundation upon which to find out whether or not the code can be utilized legally or not. This can stop completely good code from being utilized by many corporations and people.
Why I license my code
One of the perfect methods I do know to present again to the open supply neighborhood that gives everybody with unimaginable applications just like the GNU Utilities, the Linux kernel, LibreWorkplace, WordPress, and 1000’s extra, is to make applications and scripts open supply utilizing an applicable license.
Just since you write a program, consider in open supply, and agree that applications needs to be open supply code, doesn’t make it open supply. As a sysadmin, I do write quite a lot of code, however what number of of you ever think about licensing your individual code?
You must make the selection to explicitly state that your code is open supply, and determine which license you need it to be distributed beneath. Without this important step, the code you create is functionally proprietary. This means the neighborhood can’t safely benefit from your work.
You ought to embody the GPLv2 (or your different most popular) license header assertion as a command-line choice that prints the license header to the terminal. When distributing code, I additionally advocate that you simply embody a textual content copy of your complete license together with the code (it is a requirement of some licenses.)
A couple of years in the past, I learn an fascinating article, The source code is the license that helps to clarify the reasoning behind this.
I discover it very fascinating that in the entire books I’ve learn, and the entire courses I’ve attended, not as soon as did any of them inform me to incorporate a license for the code I wrote in my duties as a sysadmin. All of those sources utterly ignored the truth that sysadmins write code too. Even within the convention periods on licensing I’ve attended, the main target was on utility code, kernel code, and even GNU-type utilities. None of the shows a lot as hinted that it is best to think about licensing it in any manner.
Perhaps you’ve got had a special expertise, however this has been mine. At the very least, this frustrates me — on the most it angers me. You devalue your code if you neglect to license it. Many sysadmins do not even take into consideration licensing, however it’s essential if you’d like your code to be accessible to your complete neighborhood. This is neither about credit score or cash. This is about guaranteeing that your code is, now and at all times, accessible to others in the perfect sense of “free and open source.”
Eric Raymond, creator of the 2003 e-book, The Art of Unix Programming writes that within the early days of laptop programming and particularly within the early lifetime of Unix, sharing code was a lifestyle. In the start, this was merely reusing current code. With the appearance of Linux and open supply licensing, this turned a lot simpler. It meets the wants of system directors to have the ability to legally share and reuse open supply code.
Raymond states, “Software builders need their code to be clear. Furthermore they do not need to lose their toolkits and their experience once they change jobs. They get uninterested in being victims, fed up with being annoyed by blunt instruments and intellectual-property fences and having to repeatedly reinvent the wheel.” This assertion additionally applies to sysadmins — who’re additionally, actually, software program builders.
How I license my code
I discussed including an choice to print the GPL (or different) license header as a command line choice. The code beneath is a process that does so:
#############################################
# Print the GPL license header #
#############################################
gpl()
{
echo
echo "############################################################"
echo "# Copyright (C) 2023 David Both #"
echo "# http://www.both.org #"
echo "# #"
echo "# This program is free software; you can redistribute it #"
echo "# and/or modify it under the terms of the #"
echo "# GNU General Public License as published by the #"
echo "# Free Software Foundation; either version 2 of the #"
echo "# License, or (at your option) any later version. #"
echo "# #"
echo "# This program is distributed in the hope that it will be #"
echo "# useful, but WITHOUT ANY WARRANTY; without even the #"
echo "# implied warranty of MERCHANTABILITY or FITNESS FOR A #"
echo "# PARTICULAR PURPOSE. See the GNU General Public License #"
echo "# for more details. #"
echo "# #"
echo "# You should have received a copy of the GNU General #"
echo "# Public License along with this program; if not, write #"
echo "# to the Free Software Foundation, Inc., 59 Temple Place, #"
echo "# Ste 330, Boston, MA 02111-1307 USA #"
echo "############################################################"
echo
} # End of gpl()
finish
That’s the license, included as a perform. You can add an choice to the code. I like to position the brand new case sections in alphabetical order to make them a bit simpler to seek out when performing upkeep. This is the GPL
, so I selected g
because the quick choice:
#########################################
# Process the enter choices #
#########################################
# Get the choices
whereas getopts ":ghc" choice; do
case $choice in
c) # Check choice
Check=1;;
g) # show the GPL header
gpl
exit;;
h) # Help perform
Help
exit;;
?) # incorrect choice
echo "Error: Invalid option."
exit;;
esac
finished
finish
These two bits of code are all that is wanted so as to add a legit and enforceable license to your program.
Final ideas
I at all times license all of my code. I just lately offered a session on Bash at OLF (Open Libre Free, which was once referred to as Ohio Linux Fest). Instead of utilizing LibreWorkplace Impress for my presentation, I used a Bash program for your complete factor. After all, it’s a presentation about Bash so why not make it a Bash program.
I did embody my license code in that Bash program. That manner everybody who encounters a replica of my program is aware of that it is correctly licensed beneath GPLv3, and that they’ll use and modify it beneath the phrases of that license. My code is the license.