Printable PDF

If you are considering using software developed by others, such as Linux, within your embedded system, you'll likely need an intellectual property lawyer to read the license agreements such as GPL. Here's a brief glossary of the licensing terminology that's enough to get you started.

proprietary software

In the most traditional licensing model for commercial software, no customer is allowed to examine the source code for the product. The one exception to this is a customer willing to pay an additional, often exorbitant, source code license fee. But even if you do buy the source code for such a product, you cannot publish that code or otherwise cause it to fall into the possession of anyone outside the licensed group. And your rights to modify the source code may be restricted.


With shareware, the traditional model is somewhat reversed. The software is distributed for free, and may even be passed on to others. Users of the shareware product are honor-bound to pay the developer's registration fee, whatever it may be. A variant on this licensing scheme, termed crippleware, will not function fully until the registration fee is paid. Freeware is shareware with no registration fee. The source code is typically not included with any of these.

free software

Free software, on the other hand, is all about access to the source code. The free software movement is as much a political organization as anything else. Under the free software licensing model, it is your right to use the software, modify it, and redistribute it in any way you like. It's even okay for you to charge for your distribution. However, these broad rights are conditioned upon your commitment to provide similar access to your modifications and to never narrow the licensing rights as a condition of distribution.

Proponents of free software generally believe that all information, especially source code, has a right to be free. Therefore, they mean free software in the "free speech" sense, not as in "free lunch." They advocate attachment of a "copyleft", which says that "anyone who redistributes the software, with or without changes, must pass along the freedom to further copy and change it."

public domain software

Public domain software is just as free as free software, but less restrictive. It can be used, modified, or redistributed in any way. However, you are free to make changes to the software and keep those changes proprietary. You can even choose to charge for the original code or a derivative, without providing access to the source code at all. In that way, anyone can make use of public domain software in any way, without consulting a lawyer beforehand.

Unless otherwise indicated, all of the source code published on the Barr Group website is placed into the public domain by its author(s). In other words, while copying the text of this article would constitute copyright infringement, using the source code in your work is perfectly legal.

GNU General Public License (GPL)

Since 1984, the goal of the GNU project has been to develop a complete UNIX environment that is licensed as free software. Although some of the code involved is public domain, the vast majority is licensed under GPL. GPL is a specific implementation of copyleft. This is analogous to copyright, in which there is a general right that is implemented in various ways in different contracts and print and electronic publications.

GPL prohibits proprietary patents related to modifications of the software, prohibits royalties, and requires that the same terms be attached when redistributing the software or a derivative of it. Of course, anyone can create software and then license it under these same terms. Use of the GPL language is not restricted to GNU-related projects. (Their copyleft is not copyrighted!)

The popular GNU compiler and associated tools are licensed under GPL. This means that anyone making a new and improved GNU compiler must give their new source code back to the community. However, it is important to note that this does not mean that software built with the compiler must also become free. It is legal to use a free software tool to produce proprietary software.

GNU Lesser General Public License (LGPL)

The LGPL is used to license free software so that it can be incorporated into both free software and proprietary software. In other words, it is a weaker sibling of GPL. The rules are basically the same, with one major exception: the requirement that you open up the source code to your own extensions to the software is removed. So while LGPL components remain free software, they can be included within a larger proprietary software package.

The real downside of the GPL, particularly for embedded developers, is that it's designed to discourage the creation of proprietary software and to encourage free software. If you wanted to build your firmware around a GPL package or library, you'd be forced to give away the source code to your firmware. But this is not a problem with an LGPL package, like the GNU C library, which can be legally included as part of proprietary software.

There's more info about working with GPL and LGPL software in Embedded Linux and Copyright Law.

open source

Unfortunately, this is where things get confusing. There is no clear definition for "open source software" and no standard license. Many companies are using the term open source these days, but in far different ways. And while the idea is similar to that of free software (you can generally still use, modify, and redistribute the software), there is far less emphasis on the right of the source code to be free.

While not as true with respect to Linux, many open source companies seem to be unwilling to give up central control of their software. (Free software has no owner.) What's important about open source software, particularly for embedded developers, is that its licensing terms are more like LGPL than GPL. In other words, you are typically free to add your own proprietary software to the open source code and produce a proprietary result. The free software movement doesn't much like this, but is otherwise more in alignment with the newer open source movement than in opposition to it.

You can learn more about this subject from the Software Freedom Law Center website.

community source

Sun Microsystems' Community Source Licensing was launched to give Sun and its customers the simultaneous advantages of both free and proprietary software. Users of the software have full access to Sun's source code and can do their research and development work before paying licensing fees. They can even modify the code for any purpose. However, users are asked to register at the time of code download and are ultimately required to negotiate licensing terms with Sun prior to launching any commercial product based on that code.

Sun felt this licensing model was a better alternative than making its formerly proprietary software into free software. By keeping licensing fees in the equation, Sun hopes to reap some benefits from all this giving away of its most valuable code. By retaining their role as a central authority on the software and a provider of compatibility testing, they hope to reduce chaos and source code fragmentation in the market.

This article was published in the September 2000 issue of Embedded Systems Programming, as a sidebar to the Open Source Point/Counterpoint debate feature. If you wish to cite the article in your own work, you may find the following MLA-style information helpful:

Barr, Michael. "Know Your Rights," Embedded Systems Programming, September 2000, pp. 80-84.

Related Barr Group Courses: 

Embedded Android Boot Camp

Embedded Linux Customization and Driver Development

For a full list of Barr Group courses, go to our Course Catalog. See our Training Calendar for our latest public training calendar.