world leader in high performance signal processing
Trace: » making_a_product

Making a product

There is a big difference between a product and a project. Here are a few tips, which might help turn your project into a product.

Debug Options

There are various debug options in the Linux kernel - which you may want to turn off as you are getting closer to product deployment. These options are turned on by default in the standard releases, (to make debugging easier/possible), but they do add overhead (performance impact) and code size. Turning these options off will make your system faster and smaller, but also more difficult to debug.

  • Kernel Hacking
    • Magic SysRq key - Inserts extra code into the kernel and serial driver. See docs for more info
    • Kernel debugging - turns off many options, which are handy for developing drivers or trying to debug or identify kernel problems. This will save about

Legal Issues

This is not legal advice, you should consult your legal advisor to ensure you comply with the law.

Different Licenses

The uClinux GNU/Linux distribution found on blackfin.uclinux.org or uclinux.org(the Software) is a modular operating system. Most of the components are open source packages, developed independently, and accompanied by separate license terms (such as GPL, LGPL, BSD , modified BSD or others). Your license rights with respect to individual components accompanied by separate license terms are defined by those terms; nothing shall restrict, limit, or otherwise affect any rights or obligations you may have, or conditions to which you may be subject, under such license terms.

For more information, see the software_license section.

The Linux Kernel License

The Linux kernel is distributed under a GPL license with exceptions.

file: trunk/COPYING

scm failed with exit code 1:
file does not exist in git

What this exactly means with respect to kernel loadable modules - a judge needs to decide. Until then, there is a Position statement from various kernel developers which can be found in pdf or on a web page.

Complying with the GPL

To ensure you will not run into legal issues, as you are developing your product that may include GPL licensed software (like the Linux kernel), please consult with professional legal services - which is not anyone here. This is not legal advice, if you have doubts (which you should) consult your legal advisor.

There are many potential legal issues to consider:

  • There is a advertising clause in the GPL:
    1. You may copy and distribute verbatim copies of the Program's source code as you receive it,
       in any medium, provided that you conspicuously and appropriately publish on each copy an 
       appropriate copyright notice and disclaimer of warranty; keep intact all the notices that 
       refer to this License and to the absence of any warranty; and give any other recipients of 
       the Program a copy of this License along with the Program.

    This is why many manufactures are including the GPL license for their products:

    1. and the list can continue for a long time… just use google.
  • You do not have to provide Source by ftp or web site, the GPL states:
    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.) 
  • According to the Free Software Foundation you must distribute the source, not point somewhere else. Also have a look at what they say about distribution of unchanged binaries. An option is to “distribute” something in cvs, svn, or git.
  • GPL and your proprietary application - If you include GPL source as part of your application, the entire application falls under the GPL. What defines “include” and “your application” is up for a judge/jury/lawyer to decide - not anyone here.
  • Just because you include a GPL application on the filesystem, does not mean that your proprietary closed source application will fall under the GPL. The GPL (v2.0) states:
    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.

    Also, check out what the Free Software Foundation has to say about this.

Using Libraries

To ensure you will not run into legal issues, as you are developing your product that may include LGPL licensed libraries (like the uClibc System Library), please consult with professional legal services - which is not anyone here. This is not legal advice, if you have doubts (which you should) consult your legal advisor.

There are many potential legal issues to consider:

  • Make sure that all the libraries you are linking to are under a license which you understand. Some libraries are distributed under a GPL license, and will cause your application to also be under the GPL. See what the Free Software Foundation has to say about this. This is done on purpose.
  • There is a advertising clause in the LGPL:
      1. You may copy and distribute verbatim copies of the Library's
    complete source code as you receive it, in any medium, provided that
    you conspicuously and appropriately publish on each copy an
    appropriate copyright notice and disclaimer of warranty; keep intact
    all the notices that refer to this License and to the absence of any
    warranty; and distribute a copy of this License along with the
    Library.
  • You do not have to provide code for applications which use LGPL libraries.
 5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
  • You do need to provide a way to re-link the LGPL Library with your code.
    Also, you must do one of these things:
    
        a) Accompany the work with the complete corresponding
        machine-readable source code for the Library including whatever
        changes were used in the work (which must be distributed under
        Sections 1 and 2 above); and, if the work is an executable linked
        with the Library, with the complete machine-readable "work that
        uses the Library", as object code and/or source code, so that the
        user can modify the Library and then relink to produce a modified
        executable containing the modified Library.  (It is understood
        that the user who changes the contents of definitions files in the
        Library will not necessarily be able to recompile the application
        to use the modified definitions.)
    
        b) Use a suitable shared library mechanism for linking with the
        Library.  A suitable mechanism is one that (1) uses at run time a
        copy of the library already present on the user's computer system,
        rather than copying library functions into the executable, and (2)
        will operate properly with a modified version of the library, if
        the user installs one, as long as the modified version is
        interface-compatible with the version that the work was made with.
    
        c) Accompany the work with a written offer, valid for at
        least three years, to give the same user the materials
        specified in Subsection 6a, above, for a charge no more
        than the cost of performing this distribution.

    For Linux applications, using elf shared libraries (fdpic) is a suitable mechanism for meeting the requirements of the LGPL 2.1, section 6b.

Binding Licenses

Although it would be nice to think “I'm a software developer - not a lawyer, these licenses do not apply to me”, that is not correct. When developing a product, you (the software developer) always has two options:

  1. accept the license, and read it, understand what it means, ensure that your company/product understands the ramifications of the software choices you are making.
  2. do not distribute the software based on licenses that you do not accept.

Both the GPL, and LGPL state:

  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.

Pointers

Complete Table of Contents/Topics