As you may be aware, I'm having a wonderful time playing with a number of different Arduino-based projects, ranging from my Robot Platform to my Infinity Mirror to my Inamorata Prognostication Engine.
When I first started writing my little software programs, I borrowed some code from my chum Mike Field (a.k.a. The Mighty Hamster) who is based in New Zealand. At that time, I noticed that in the comments to his code, Mike had the line "// License: GPLv3" (this refers to the GNU General Public License).
To be honest, I hadn't really thought about applying a license to my software; my programs at that time were rinky-dinky at best. But with the world being what it is, it seems you are almost obliged these days to include some sort of "weasel words" stating that if anyone uses your code, you cannot be held responsible for anything that happens. (Never forget the ancient saying that has been handed down to us through the mists of time: "Eagles may soar, but weasels rarely get sucked into jet engines." I think it's safe to say that these words are as true today as they ever were.)
The point is that, as I progress in my projects, I will be making a lot of my code available to readers of EE Times as part of my blogs. Not knowing much about this sort of thing, my knee-jerk reaction was to say to myself "Well, if the GPLv3 license is good enough for The Mighty Hamster, it should be good enough for me." But then I realized that I really wasn't sure about all of the implications associated with such a decision.
It's funny how the world works sometimes. It was while I was mulling this conundrum that another chum, Jay Dowling, sent me a rather interesting email pointing me to an article about choosing a license for one's open-source software projects. One of the first things this article says is:
If you use the Gnu General Public License (GPL), for example, some people won't touch it as they'll be worried about incorporating GPL code into their product.
In addition to being a very useful article in its own right, the author also provides some handy links to help you select the most appropriate license for what you wish to achieve:
The first of these is simple, while the second is very efficacious if you spend the time to answer the detailed questions. Based on all of this, I eventually opted to go with the MIT License. Thus, if you look at my Arduino code at the moment, you will see my programs include the following license-related statements highlighted in red:
(Click here to see the ASCII text version of the image below.)
(Click here to see the ASCII text version of the image above.)
As an aside, I subsequently queried The Mighty Hamster about his use of the GPLv3 license and pointed out the obvious superiority of my MIT license (well, I would, wouldn't I?). He responded that he'd forgotten all about the license, that he could no longer recall when or why he had started using GPLv3, and that he would look into this further.
But wait, there's more... Jay just emailed me again to tell me about yet another scheme called the Unlicense. This is a template for disclaiming any copyright monopoly interest -- and liability -- in your software based on a copyright waiver patterned on the SQLite project combined with the no-warranty statement from the MIT/X11 license.
Personally, I'm happy with my current MIT license. Having said this, Jay also told me about something called "Beerware," which refers to software that is released under a very relaxed license that provides end-users with the right to use a program and do pretty much whatever they want with the source code. For example, the full text of the well-known Danish programmer Poul-Henning Kamp's "Beerware License" reads as follows:
(Click here to see a larger, more detailed image.)
Observe the revision number of 42... What are the odds that this is a reference to "The answer to life, the universe, and everything" from The Hitchhiker's Guide to the Galaxy by Douglas Adams?
I must admit I do like the idea that -- should your code prove to be popular and used by many people -- you could be getting free beer for the rest of your life at conferences. This certainly requires some thought. In the meantime, what license do you use for your open-source code, and why?
— Max Maxfield, Editor of All Things Fun & Interesting