about Grigoris Maravelias
About licensing

About licensing

Stumbled upon the various different licenses I though to write down some conclusions (if I really got into any…).

A nice comparison table of free software licenses is given in the Wikipedia where it is easily to see which licenses allow: (i) the link with other licenses and (ii) releasing under different license. So, in this table it is obvious that the GNU General Public License does not allow any change or link in order to preserve the license through the works, while the GNU Lesser General Public License allows only the link with other licenses. But that’s not the same with the permissive licenses like BSD or MIT. That means that these licenses (including the Python’s license) allow both link and distribution with other licenses, which makes them not compatible with copyleft licenses (with the best representative the GNU GPL).

Moreover, IRAF‘s license (Wikipedia / IRAF) is provided free of charge but under various licenses (MIT and some non-free parts). So its license is not really clarified and certainly not compatible with GNU GPL. Although Python provides the opportunity to connect with other licenses and redistribute code under GNU GPL the use of IRAF’s tasks does not allowed it as a whole package. So, the license for code that combines these packages cannot implemented under a copyleft license (like GNU CPL). It seems that a more suitable license would be a Modified BSD (like PyRAF’s license).

[edited on Dec 16th:] Actually since Python and MIT’s license of IRAF (& PyRAF) allow license changes, then scripts that use these tools can have whatever license the author wants, since Python and IRAF/PyRAF are distributed separately.

Thanks to Jann K for clarifying a little more what I have written before!

One comment

  1. Jann


    There’s quite a zoo of free software licenses out there!
    I think you got it mostly correct but to be sure let me try to clarify things a little bit:

    a) HOW TO use GPL software with other (maybe non-free) software

    You can always distribute any free software program (also GPL licensed) along with a non-free software (proprietary or other kind). That means I can write a program (like a statistical analysis of customer habits =-O ) that uses the free software program “GNU Octave”. Both programs can be installed by my fancy “setup.exe”, that asks you to agree to 13 pages of “Terms and Conditions”. 😛

    That is legal, as long as the installed “GNU Octave” is still an individual program on the PC and I mention on page 11 that “part of the installed software is licensed under the GPL, which can be found at http://www.. etc.”

    I can not take just a part of the program (let’s say the code to calculate the standard divergence) and put it in my program. That violates the copyright.
    Then I must release my whole program, that has some copied code inside, under the GPL (and no other).

    This is where “linking” comes into play!
    Many programs, that are written in C or C++ use so called “dynamically linked libraries” (DLLs).
    These libraries are not exactly separate programs. But they’re also not exactly, directly part of the program that uses them. They are separate files and somehow more independent.
    If the “GNU Octave” used a DLL with mathematical functions (let’s say matlib.c) and that library was licensed under the LGPL, then I could install only that matlib library and link it to my program. I do not need to install the entire GNU octave, if I only need it in order to calculate the standard divergence.

    If the matlib library was published under the GPL (not LGPL) then I cannot link it to my non-free program.

    b) How to use non GPL software inside GPL projects

    The other direction is different:
    If I know a free-software program (CoolProg) that has some nice code and I want to reuse that code in my GPL free-software program (MyGPLProg) then I can do that only, if CoolProg’s license is “GPL compatible”. (See column 3 in http://en.wikipedia.org/wiki/Comparison_of_free_software_licences#Approvals)

    So the direction matters!
    +) You can reuse a MIT-licensed program’s code in a GPL-licensed program.
    -) You cannot use a GPL-licensed program’s code in a MIT-licensed program.

    Actually I cannot use GPL-licensed program’s code inside any program that is non-GPL.
    GPL code stays GPL…forever.

    But I can use a GPL-licensed program alongside with any other program.
    Free software can be used for any purpose.

    So the realistic approach is to use the differently licensed programs in combination.

    In the first example earlier I would make a tiny program call CalcStdev with the nice code from GNU Octave and release it under the GPL. And my non-free software suite would just execute “CalcStdev –in=customer.log –out=analysis.dat” and then continue to present the data in a fancy colorful window with a big “MyCompany – statistical analysis” logo in the corner. :-$
    So free software does not exclude commercial use.

    Uff…I hope I didn’t cause any additional confusion…


Leave a Reply

Your email address will not be published. Required fields are marked *