Monthly Columns
 

Restrictively Unrestrictive: The GPL License in Software Development

Copyright © 1998 Michael Maxwell

If you're familiar with some of the free UNIX OSs out there, primarily the wonderful yet still immature, Linux operating system, you've probably at least heard of the GNU General Public License, which, from here on, I will refer to as "GPL".

In this article, I hope to highlight the importance of the BSD license and similar licensing systems, and compare these to the GPL license. I hope to show that the GPL is more concerned with political extremism rather promoting free software, and I also hope to show that the GPL is "restrictively unrestrictive" and is not all it claims to be.

What is the GPL?

The GPL was put together originally by Richard Stallman, founder of the Free Software Foundation. The intent, it seems, was to create a licensing system for software so that any programs released under GPL would be freely available. This does not necessarily mean that the program will not cost you money, but rather, that the source code will be available upon request or will be distributed with the software itself.

What is Open Source Software?

Before going any further, I'm going to shed some light on the concept of open source software.

If you're not familiar with the UNIX operating system, then this will sound completely new to you. In the world dominated by Microsoft, software is typically not free, in any sense of the word. You have to pay for it - usually pay more than what the product is actually worth. You will never have access to the program source code. The source code is the actual program, written by programmers, then compiled into a binary executable program for distribution. In fact, with Microsoft systems, even the most insignificant program is typically released under the concept of "shareware" - you can try the program out for free, but then you're expected to buy it, usually for some grossly inflated price. Most often, shareware programs are crippled by removing some important features, or causing them to expire at the end of the trial period unless you pay for a license.

At the other end of the software spectrum, there is "public-domain" software, which may or may not be distributed with source code (typically it is). Public-domain software bears no real copyright, is free to the public to do with as they wish. There isn't much of it around.

Somewhere in between those two extremes lies "open source" software. Open source software is copyrighted, so it is not public-domain. But the source code is made available, usually (but not always) free of charge. It does not suffer from the restrictive licensing of the Microsoft-style programs, in which you must pay large sums of money to use a program that may or may not work correctly.

In the world of open source software (OSS), there are many different types of licenses - some are so open as to be almost public-domain, while others are much more restrictive. The two best known are the BSD license (originally used in the UNIX operating system developed at the University of California Berkeley) and the GPL from the Free Software Foundation.

The BSD License

To explain the BSD license, here is an exerpt with my commentary enclosed in "[ ]" characters :

Copyright (c) XXXX
The Regents of the University of California. All rights reserved.

[ Of course, the name of the software's author would replace the University of California line ]

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

[ Note the conditions "source and binary form" and "with or without modification" ]

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

[ To insure that credit is given where due ]

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

[ Once again, to insure that credit is given where due, and also to insure that the copyright and conditions are made clear ]


This is the meat of the BSD software license. You will note that nowhere does it place any restrictions on derivative works, software created with or based on the licensed software. The license restrictions are placed only on the original work, which may or may not have been modified. In general, this copyright resembles that used by many authors and book publishers, only in this case, you're not restricted when it comes to reproducing, modifying, or selling the work in question.

The GNU General Public License

Here are some (rather large) excerpts from the Free Software Foundation's GNU General Public License. As before, my commentary is enclosed in brackets ([ ]):

[ There is a couple of pages of political opinion in the beginning of the text of the GPL. I have omitted those here as they have no legal merit and appear to be the political opinions of Richard Stallman and others in the FSF. ]

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

[ Here, we see that the GPL places restrictions on any derivative work, whether in whole or in part, verbatim or with modification. This essentially means that the GPL infects, like a hereditary condition, derivative works permanently. ]

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

[ The clause about "output from the Program" is confusing and rather open-ended. It says that if a GPL'ed program generates output that may be used as a program, then the output is also GPL'ed. This would apply, for example, if using a parser generator such as ``flex'' or ``bison'' (the GNU equivalents of ``lex'' and ``yacc''). However, this curiously does not seem to apply to binary or object code generated by the GNU compilers, such as ``gcc''. Overall, I'm not sure about this clause of the license, and if I'm missing something here, please enlighten me. At any rate, the last sentence causes the most confusion, as it is completely non-specific. ]

2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

* a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

[ In the real world, it is not often that I see this type of notice in derivative or modified GPL'ed programs. ]

* b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

[ Stating, once again, the GPL's habit of infecting derived works. ]

* c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

[ This is more or less standard procedure with most software that runs interactively to have some means of identifying its license policy, etc... Also this clause appears to be one of the least restrictive in the license. ]

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

[ This says that if you include non-GPL code in your program, you do not have to release that part of the code as GPL, provided that you distribute that part of code separate from the rest of the program! If the GPL and non-GPL code are distributed together (as is most often logically the case), then the non-GPL code's license, if any, is automatically null and void (may in some cases be illegal) and the entire work is now GPL-infected. ]

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

[ This clause reeks of political extremism, and is not entirely true. When a program or work is released under a license, this means that you are in effect licensed to use the program. If this is the case, then you are not the real owner of your code, the Free Software Foundation is! Particularly when it comes to controlling the ``distribution of derivative or collective works based on the Program''. After all is said and done, the only part of this work that you actually *own* is the Copyright itself. And that copyright is subject to the terms of this license. Essentially this is the rudimentary philosophy of Communism, in which you can create something, but you only own it as much as everyone else owns it. ]

In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

[ This just states that the FSF couldn't find a way to take control of programs that just happen to be stored on the same media as a GPL'ed program! ]

3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: * a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, * b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, * c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

[ If you distribute the program, then you must provide some way for the source code to be made available. ]

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

[ And yet again, stating that you cannot change the license of a GPL'ed program once it has been released under GPL. It also states that you cannot further license the program or modify the GPL in any way. ]

5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

[ This sounds much like a Microsoft-style license, in which your actions determine your acceptance of the license. In other words, you don't need to sign anything to be under the control of this license, all you need to do is modify or distribute the program (in the case of Microsoft, merely use the program). ]

7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

[ More political extremism: if you cannot distribute the program in FULL compliance with the GPL, then you cannot distribute it at all. This is nothing more than anti-competitive, anti-capitalism restrictions. ]

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

[ A rather interesting twist: if part of the license doesn't hold up in the law, the rest of the license still applies. Not sure of the legality of this, and could be up for debate... ]


Also note that there is a separate, but similar license known as the LGPL or ``Library General Public License'' which covers software libraries. It places the same general terms and conditions on library code as the GPL places on program code. It seems the LGPL was intended to clear confusion in whether a program must be GPL'ed if linked with GPL'ed libraries. Surprisingly, this does not appear to be the case.

What all this means...

As you can see, the GNU GPL places considerable restriction on the distribution and modification of software. It also places the same restriction on any software that is derived in any way from a GPL'ed program, thereby infecting the derived work with the GPL.

This is what I mean by "restrictively unrestrictive" when referring to the GPL. Once GPL'ed, the code, or any derived work, can never be released under any other license from that point on, no matter how many cycles of modification it has undergone.

The BSD license, on the other hand, places no restrictions on how the software can be used, modified, or distributed. The only restriction, if such it can be called, is that the original copyright notice must remain intact to insure that credit is given where due.

This is not to say that the BSD license is perfect. It was created under the assumption that the UNIX software development model would remain as open as it has been since its beginning. As such, it does not forbid someone else from taking your code, using it in a commercial (non-open-source) product, and selling it, raking in the profit, all without your permission. However, the BSD license also does not restrict you from modifying the license itself to prevent any such problems.

My Opinions

It is my opinion that the General Public License is not so much about ``keeping free software free'' as it is about forcing us to accept the extreme Communistic political philosophy of Richard Stallman and others at the Free Software Foundation. The very spirit of the GPL is to attack the very concept of Capitalism and individualism. There is no concept of intellectual property under the terms of the GPL. Your hard work is no more your property than everyone else's.

I found myself compelled to write this article because of the over- abundance of GPL'ed software that is flooding the open-source software community. Most of this flood of GPL-ism is because of the increasing popularity of the Linux operating system, most of which is GPL'ed. Indeed, Richard Stallman himself would prefer that we recognize the Linux operating system as ``GNU/Linux'' instead, because of the fact that almost all of the code is GPL'ed. The Linux kernel itself is not a GNU/FSF product, however.

The BSD license suffers from a rather unfortunate name, which has caused it to be less recognized. Due to the popularity of Linux (and the vast assortment of nuts and fanatics who defend it to the death), the BSD license is assumed to have nothing to do with Linux whatsoever. This is not true at all. The BSD license can be applied to the same material as the GPL. Of course, since most of the body of code in the ``GNU/Linux'' system is GPL'ed, there is no hope of ever changing the licensing - they've gone too far to turn back now.

So given all the arguments I've presented here, I hope you can see where I'm coming from. The GPL is not about freedom. It's also not without its advantages. But the fact that the GPL can infect code derived from other GPL'ed programs, as well as the fact that the output of some GPL'ed programs must also be GPL'ed, is unacceptable. In fact, it should be contested over its shaky sense of legality in these matters. I'm not aware of any court cases involving the GPL so far, so we have yet to see what will happen when such an issue arises. I can only hope that the courts will decide against the GPL's habit of infecting other code.

In summary, despite the disadvantages in certain instances, most open source software licenses contribute to the growth and technological and artistic development of software and computer science in general. Both licenses that have been considered here fall under this category, and as such should be considered a valuable resource and a great achievement for the intellectual development of the scientific and technological communities as a whole. Open source software is all about the sharing of ideas and concepts. Programming is as much an art as a science, and it is not wrong to borrow from the ideas of others and to learn from those who have gone before us.

References

As always, I encourage you to think for yourself and draw your own conclusions. Here are some Internet sites that may be of interest:

Michael Maxwell, drwho@xnet.com