View Issue Details

IDProjectCategoryView StatusLast Update
0001404libmicrohttpdotherpublic2008-09-10 22:49
Reporterepienbro Assigned Tolv-426__  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product VersionGit master 
Summary0001404: License inconsistencies and incompatibilities
DescriptionHi,

I'm about to maintain libmicrohttpd in Fedora, but during review it has come to our attention that several pieces of the project are licensed under the GPLv2+ and GPLv3+ license while other pieces are licensed under the LGPLv2+ license.

In http://crisp.cs.du.edu/pipermail/libmicrohttpd/2007/000001.html you've mentioned the whole project will be licensed under the LGPLv2+ license.

After grabbing the latest SVN snapshot I've found out there are still some files left which are licensed under a different license :

configure.ac (GPLv2+)
doc/texinfo.tex (GPLv3+)

src/daemon/https/opencdk/new-packet.c (GPLv2+)
src/daemon/https/opencdk/keydb.c (GPLv2+)
src/daemon/https/opencdk/pubkey.c (GPLv2+)
src/daemon/https/opencdk/write-packet.c (GPLv2+)
src/daemon/https/opencdk/stream.h (GPLv2+)
src/daemon/https/opencdk/kbnode.c (GPLv2+)
src/daemon/https/opencdk/seskey.c (GPLv2+)
src/daemon/https/opencdk/verify.c (GPLv2+)
src/daemon/https/opencdk/types.h (GPLv2+)
src/daemon/https/opencdk/cipher.c (GPLv2+)
src/daemon/https/opencdk/packet.h (GPLv2+)
src/daemon/https/opencdk/filters.h (GPLv2+)
src/daemon/https/opencdk/armor.c (GPLv2+)
src/daemon/https/opencdk/read-packet.c (GPLv2+)
src/daemon/https/opencdk/main.c (GPLv2+)
src/daemon/https/opencdk/opencdk.h (GPLv2+)
src/daemon/https/opencdk/main.h (GPLv2+)
src/daemon/https/opencdk/context.h (GPLv2+)
src/daemon/https/opencdk/misc.c (GPLv2+)
src/daemon/https/opencdk/compress.c (GPLv2+)
src/daemon/https/opencdk/stream.c (GPLv2+)
src/daemon/https/opencdk/literal.c (GPLv2+)
src/daemon/https/opencdk/sig-check.c (GPLv2+)

src/daemon/https/openpgp/gnutls_extra.c (GPLv3+)
src/daemon/https/openpgp/pgp_privkey.c (GPLv3+)
src/daemon/https/openpgp/compat.c (GPLv3+)
src/daemon/https/openpgp/gnutls_extra.h (GPLv3+)
src/daemon/https/openpgp/gnutls_openpgp.c (GPLv3+)
src/daemon/https/openpgp/gnutls_ia.c (GPLv3+)
src/daemon/https/openpgp/extras.c (GPLv3+)
src/daemon/https/openpgp/pgp.c (GPLv3+)
src/daemon/https/openpgp/pgp_verify.c (GPLv3+)

src/daemon/https/list.h (GPLv3+)
src/daemon/https/tls_test.c (GPLv3+)
src/daemon/https/tests.c (GPLv3+)
src/daemon/https/extra.h (GPLv3+)

src/daemon/postprocessor_large_test.c (GPLv2+)
src/daemon/daemon_test.c (GPLv2+)
src/daemon/postprocessor_test.c (GPLv2+)

src/testcurl/https/tls_daemon_options_test.c (GPLv2+)
src/testcurl/https/tls_authentication_test.c (GPLv2+)
src/testcurl/https/tls_cipher_change_test.c (GPLv2+)
src/testcurl/https/mhds_multi_daemon_test.c (GPLv2+)
src/testcurl/https/mhds_session_info_test.c (GPLv2+)
src/testcurl/https/tls_alert_test.c (GPLv2+)
src/testcurl/https/tls_session_time_out_test.c (GPLv2+)

src/testcurl/daemontest_post_loop.c (GPLv2+)
src/testcurl/daemontest_get.c (GPLv2+)
src/testcurl/daemontest_get_chunked.c (GPLv2+)
src/testcurl/daemontest_large_put.c (GPLv2+)
src/testcurl/curl_version_check.c (GPLv2+)
src/testcurl/daemontest_post.c (GPLv2+)
src/testcurl/daemontest_long_header.c (GPLv2+)
src/testcurl/daemontest_put.c (GPLv2+)
src/testcurl/daemontest_postform.c (GPLv2+)
src/testcurl/daemontest_put_chunked.c (GPLv2+)

src/testzzuf/daemontest_get.c (GPLv2+)
src/testzzuf/daemontest_get_chunked.c (GPLv2+)
src/testzzuf/daemontest_large_put.c (GPLv2+)
src/testzzuf/daemontest_post.c (GPLv2+)
src/testzzuf/socat.c (GPLv2+)
src/testzzuf/daemontest_long_header.c (GPLv2+)
src/testzzuf/daemontest_put.c (GPLv2+)
src/testzzuf/daemontest_postform.c (GPLv2+)
src/testzzuf/daemontest_put_chunked.c (GPLv2+)

It looks like you've used code from the opencdk and openpgp projects. These projects are licensed under the GPLv2+ (opencdk) and GPLv3+ (openpgp) licenses. According to the GPL, all derived works (thus libmicrohttpd) must be under the same (or compatible) license. This means libmicrohttpd can't be licensed under the LGPL license while using these components!

All the files used for tests can stay at GPLv2+ (from a legal point of view), but the https part of libmicrohttpd (which uses opencdk and openpgp) really needs to be fixed.
TagsNo tags attached.

Activities

Christian Grothoff

2008-08-10 16:16

manager   ~0003622

configure.ac is an oversight.

I suspect the same applies to the texinfo file.

I was under the impression that GNUtls was LGPL (and the GPLv2 components are all from GNUtls AFAIK. Still, you are right, this needs to be investigated.

lv-426__

2008-08-13 17:04

reporter   ~0003640

openpgp support should be dropped until an LGPL implementation is added

keep under revision control, exclude from upcoming release :
src/daemon/https/extra.h
src/daemon/https/openpgp/*
src/daemon/https/opencdk/*

removed :
src/daemon/https/list.h (GPLv3+)
src/daemon/https/tls_test.c (GPLv3+)
src/daemon/https/tests.c (GPLv3+)

the following should be switched to use LGPL :
src/testzzuf/*
src/testcurl/*
src/daemon/postprocessor_large_test.c
src/daemon/daemon_test.c
src/daemon/postprocessor_test.c

Christian Grothoff

2008-08-15 04:33

manager   ~0003642

I don't really care about the testcases being GPL or LGPL. If you feel like they should be LGPL, feel free to change the license.

Why do you want to keep the gnuTls extras under revision control if we don't have them in the release?

Christian Grothoff

2008-08-24 15:21

manager   ~0003662

I've now removed all of the GPL'ed files that were not testcases.

Issue History

Date Modified Username Field Change
2008-08-10 07:25 epienbro New Issue
2008-08-10 16:16 Christian Grothoff Note Added: 0003622
2008-08-10 16:20 Christian Grothoff Status new => assigned
2008-08-10 16:20 Christian Grothoff Assigned To => lv-426__
2008-08-13 17:04 lv-426__ Note Added: 0003640
2008-08-15 04:33 Christian Grothoff Note Added: 0003642
2008-08-24 15:21 Christian Grothoff Status assigned => resolved
2008-08-24 15:21 Christian Grothoff Resolution open => fixed
2008-08-24 15:21 Christian Grothoff Note Added: 0003662
2008-09-10 22:49 Christian Grothoff Status resolved => closed