Linux: The GNU General Public License - dummies

Linux: The GNU General Public License

By Emmett Dulaney

The text of the GNU General Public License (GPL) is in a file named COPYING in various directories in your Linux system. For example, type the following command to find a copy of that file in your Linux system for various items:

find /usr -name "COPYING" -print

After you find the file, you can change to that directory and type more COPYING to read the GPL. These are examples of the license accompanying code, and you can find other examples at

The GPL has nothing to do with whether you charge for the software or distribute it for free; its thrust is to keep the software free for all users. GPL requires that the software be distributed in source-code form, and stipulates that any user can copy and distribute the software in source-code form to anyone else. In addition, everyone is reminded that the software comes with absolutely no warranty.

The software that the GPL covers isn’t in the public domain. Software covered by GPL is always copyrighted, and the GPL spells out the restrictions on the software’s copying and distribution. From a user’s point of view, of course, GPL’s restrictions aren’t really restrictions; the restrictions are benefits because the user is guaranteed access to the source code.

If your application uses parts of any software that the GPL covers, your application is considered a derived work, which means that your application is also covered by the GPL and you must distribute the source code to your application.

Although the GPL covers the Linux kernel, the GPL doesn’t cover your applications that use the kernel services through system calls. Those applications are considered normal use of the kernel.

If you plan to distribute your application in binary form (as most commercial software is distributed), you must make sure that your application doesn’t use any parts of any software the GPL covers. Your application may end up using parts of other software when it calls functions in a library. Most libraries, however, are covered by a different GNU license.

You have to watch out for only a few of the library and utility programs that the GPL covers. The GNU dbm (gdbm) database library is one of the prominent libraries that GPL covers. The GNU bison parser-generator tool is another utility that the GPL covers. If you allow bison to generate code, the GPL covers that code.

Other alternatives for the GNU dbm and GNU bison aren’t covered by GPL. For a database library, you can use the Berkeley database library db in place of gdbm. For a parser-generator, you may use yacc instead of bison.