1

We are looking at an open source software's "General Public License" that says "if you distribute or publish a work containing modified software you must license at no charge to all third parties the whole of the work". For performance reasons, we would need to move functions in this software from a C file to a header file and make them static inline, and also remove (or handle differently) a few global variables, otherwise it can't run multithreaded.

Does this language (and/or GPL in general), apply to that level of modification ? Is there a minimum allowed level of modification defined anywhere, for example adding comments ?

Additional notes - this license says it's a General Public License but does not use the term "GPL". My objective is to learn whether, in general, GPL licenses allow any level of modification, even superficial such as comments, without requiring incorporating code to be freely published

19
  • 3
    I don't quite follow what your exact concern here is, so I can't tell you (yet) wether it's founded or unfounded. Do you have another piece of your own proprietary software, and you plan to use this GPL software as a library? Or the other way around? If you could precisely say which pieces of software are involved, under whose authorship, that might help me give a better answer.
    – apsillers
    Mar 10 at 4:41
  • 1
    @JeffBrower then I move to close this question because you cannot even tell us what license you are talking about. Whatever it is, it isn't the GPL.
    – user253751
    Mar 10 at 18:40
  • 1
    @user253751 "There is only one GPL, the GPL" ah no, that's not correct Mar 10 at 20:24
  • 1
    @JeffBrower If the license is not the GPL then why do you think it is so important to tell us that it's called "General Public License" when that is actually a completely irrelevant distraction?
    – user253751
    Mar 10 at 20:45
  • 1
    I think the GNU GPL does not use the term "GPL" either, just "General Public License". Still, whenever anyone says GPL in an open source forum, it means the GNU General Public License. It is so obvious. It is like someone would say "RAM" and you would know it's the computer chip, Random Access Memory not the Daft Punk album, Random Access Memories. You wouldn't go to a computer forum and be like "Hi! I want to play RAM but it's too loud for my speakers"
    – user253751
    Mar 10 at 21:40

2 Answers 2

5

The GPL License has clear definitions of what constitutes a 'modification'.

GPLv3 says:

To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.

Therefore, all of the items you listed in your question constitute a 'modification', and you have to comply with the terms of the GPL license unless you are the original author of that modified code.

2
  • Martin_in_AUT, thanks for your answer. Yes this is what I thought too -- don't even comment it. But in cases where the code won't run on a specific CPU or platform without mods, it seems to me it would make sense for the license holder to grant an exception, incorporate our mods into their code base, etc. I am contacting them about possible options Mar 10 at 16:43
  • Why would they grant you an exception to the license designed to explicitly deny what you try? Maybe you can buy an exception. Consider the worth of the library to your project, the time and manpower you would need to create it from scratch and the delay in releasing your product and lost revenue, and make an offer from that basis Mar 13 at 23:44
1

You described moving code, especially functions, from C files to header files, and also modifying header files.

For GPLv2 and GPLv3, this is clear. Whatever change you make to any of the source code or header files or build scripts, must be made available, as a whole, to recipients to whom the software was distributed in binary form. Also, if the GPL'ed software is used as a library by, or linked to, other software, then the GPL license would apply to that software too.

However, if you're using an LGPL'ed licensed software, then it's a different story, especially with LGPLv2.1, as the change you proposed will affect other software using the LGPL'ed software (written in C) as a library, especially with respect to the number of lines of the inline functions and macros.

Section 5 of the LGPLv2.1 states:

If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)

Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.

1
  • @ruben2000 ok that's interesting, so with LGPLv2.1 (2005) at least some definition of minimum allowable modifications was introduced Mar 10 at 17:36

Not the answer you're looking for? Browse other questions tagged or ask your own question.