Skip to content
Search

GNU General Public License

lastmod 2024-07-26created 2014-05-0326 edits

The GNU General Public License (GNU GPL or GPL) is a free software license created by the Free Software Foundation. Most notably, it is the license used by the Linux kernel. The GPL is the most widely known strong copyleft license, and if you create a new program using a program under this license, the derived program must also carry the same copyleft. Under this philosophy, the GPL lets people who use a computer program enjoy the rights of free software, and by using copyleft those freedoms are preserved, and there is even the freedom for such works to be modified or extended. This is a permissive free software license, of which the BSD license is a representative example.

The GNU Lesser General Public License (LGPL) is a modified, more permissive form of this, intended for software libraries. Also, the GNU Free Documentation License (GNU FDL) began as a license for documentation of GNU software, but has spread widely to other kinds of documents, such as the Wikipedia project.

However, so far this agreement has been recognized as a legally valid contract, through court rulings and the like, only in the United States and some European countries, and in most countries it has not been the subject of any legal judgment. In South Korea, too, there has been no court ruling directly on whether this agreement is lawful; it is simply that, given its nature as a contract, the many who act in compliance with the law follow its restrictions without dispute.

In South Korea, there was the Elimnet and Hionnet case, which nearly received a court ruling, but because it was criminally prosecuted as a case of leaking company secrets, the criminal court did not address the GPL, which could have been a key issue; instead, the first- and second-instance courts found the defendants guilty for other reasons, and the verdict was finalized.

Therefore, for now it at least needs to be settled through something like a standard terms review by the Fair Trade Commission. Even so, since there is no legal judgment that this standard contract is unfair either, violating this agreement may lead to prosecution by the Free Software Foundation.

Key principles

The key principles of the GPL are as follows.

  • A computer program may be used for any purpose. However, acts restricted by law are not allowed.
  • The source code of a computer program may be modified to suit its use. (modification allowed)

The following concerns 'virality', the GPL's key characteristic.

  • Executable copies of a computer program must always be sold together with the program's source code, or the source code must be distributed free of charge. (viral distribution of the original)
  • A modified computer program must also publicly distribute its source code. (viral distribution of derivatives)
  • A modified computer program must also take exactly the same license. That is, the GPL license must be applied. (viral licensing of derivatives)

LGPL principles

The LGPL has no mandatory clause on virality.

  • The source code of an LGPL "library" must be released.
  • However, with Static Linking, the Object Code of the application must be provided so that users can produce the same executable after modifying the Library.

On using IPC

"I'm not linking (statically or dynamically) with the GPL program. I'm just using sockets or IPC."

[We] want to implement some kind of API between [the GPL program and the closed-source app]. [The GPL program] acts like a client, so the closed-source app has to provide the API. As far as I know, implementing a program-level API, such as a statically or dynamically linked library, requires releasing the code of the application providing the service.

The conventional internet wisdom on this topic is: "If you link statically with an LGPL program, your program must also be (L)GPL. If you link dynamically with an LGPL program, your program can remain closed source. If you link statically or dynamically with a GPL program, your program must also be GPL."

However, this is not at all what the GPL says, and in an actual legal dispute a judge is unlikely to see it this way. Section 5 of the GPL covers the main obligation: what you must do when you distribute a GPL program.

You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy . This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged .

If the program is LGPL, or GPL with a linking exception, the license has additional language that spells out under which circumstances the program can be combined with yours without your program having to be licensed the same way. With the plain GPL, however, you have to look closely at the paragraph above.

So the real question is whether the final product will ultimately be considered one work or separate works. This holds regardless of whether the product is packaged as two executables using IPC with each other, one executable and some DLLs, one executable with statically linked code, or some other way. The FSF tried to answer this in its FAQ.

What constitutes combining two parts into one program?This is a legal question, which ultimately judges will decide.We believe that a proper criterion depends both on the mechanism of communication (exec, pipes, rpc, function calls within a shared address space, etc.) and the semantics of the communication (what kinds of information are interchanged).

If the modules are included in the same executable file, they are definitely combined in one program. If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program.

By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. Butif the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as"combined"into a larger program.

Conclusion

Whether communication between programs via IPC triggers the virality of the GPL license depends on the degree of integration and independence between those programs.

In general, simple data exchange via IPC does not trigger virality, but when there is tight coupling, GPL virality must be considered.

If you need clear legal advice, it is best to consult a relevant legal expert or a software licensing expert.

QnA

License when building a plugin via dynamic linking to an LGPL library
OLIS - License when building a plugin via dynamic linking to an LGPL library
If you use a jar library under the LGPL license by dynamically linking it into software A that you intend to develop, software A is not affected by the LGPL, and you only need to release the source code of the LGPL library.
If you have modified the LGPL jar library, you must also distribute the source code of the modified version to recipients.
Whether, and to what extent, a developed program must be disclosed when an LGPL-distributed library is used without modification/change and is statically or dynamically linked into the developed program
GPL v3, LGPL license inquiry
The LGPL is a license that is relaxed about releasing the source code of applications that link with the library. Therefore, even if you link and combine an LGPL library with your developed program, the LGPL license does not spread to it, and you do not have to release the source code of your developed program.
A program made by linking a program with a library covered by the license is a 'work that uses the Library'. A 'work that uses the Library' must permit reverse engineering. The library's source code must be released in accordance with Sections 1 and 2, and for the developed program, object code must be provided so that recipients can still run the program after modifying the library.

Exception

Compatibility

BSD

With the change to GPL3, it became incompatible with the BSD license. Most notably, when GCC changed from GPL2 to GPL3 starting with version 4.2, the BSD camp began switching to LLVM/CLANG.

Document

GPL

LGPL

GFDL

See also

Favorite site

GPL & LGPL Issue

References


  1. Korea.gnu.org-gpl.zip ↩

author Zer0 sitemap