New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenSSL and GPL incompatibility #104

Closed
skittleys opened this Issue Aug 9, 2014 · 27 comments

Comments

Projects
None yet
7 participants
@skittleys

skittleys commented Aug 9, 2014

The OpenSSL and GPL licences are incompatible. Because of this conflict, offlineimap cannot be included in the next stable release of Debian.

The solution is fairly simple: you can add a special exemption. Other solutions include changing the licence (not recommended) or finding a way to not use OpenSSL.

Further reading:

@Bankq

This comment has been minimized.

Show comment
Hide comment
@Bankq

Bankq Aug 10, 2014

Wow, never knew before that one can include exception in GPL.

Bankq commented Aug 10, 2014

Wow, never knew before that one can include exception in GPL.

@xnox

This comment has been minimized.

Show comment
Hide comment
@xnox

xnox Aug 10, 2014

Contributor

OpenSSL exceptions for GPL code is quite common, as a copyright owner one can license things as one desires. However, for us to grant an exception we'd require to collect agreement from all copyright holders.

Contributor

xnox commented Aug 10, 2014

OpenSSL exceptions for GPL code is quite common, as a copyright owner one can license things as one desires. However, for us to grant an exception we'd require to collect agreement from all copyright holders.

@skittleys

This comment has been minimized.

Show comment
Hide comment
@skittleys

skittleys Sep 13, 2014

Your last message leaves the outcome of this issue unclear. Are you saying you won't relicense, or merely pointing out the effort involved? Has any action been taken?

At this point, offlineimap cannot be included in the next stable release of Debian. Testing will freeze on November 5th.

skittleys commented Sep 13, 2014

Your last message leaves the outcome of this issue unclear. Are you saying you won't relicense, or merely pointing out the effort involved? Has any action been taken?

At this point, offlineimap cannot be included in the next stable release of Debian. Testing will freeze on November 5th.

@chris001

This comment has been minimized.

Show comment
Hide comment
@chris001

chris001 Sep 13, 2014

Member

How about this solution. Change imaplib2.py to use a new thin
SSL-abstraction layer object, which wraps all ssl-related calls, and
calls into either openssl, or gnutls, depending on user preference via
the .offlineimaprc config file setting (defaulting to gnutls when no
setting present).

Also, imaplibutils.py (our code) would need a couple of lines changed to
use the thin SSL-abstraction layer object (the import hashlib and the
call to hashlib.sha1() which directly uses openssl).

On 9/13/2014 8:57 AM, skittleys wrote:

Your last message leaves the outcome of this issue unclear. Are you
saying you won't relicense, or merely pointing out the effort
involved? Has any action been taken?

At this point, offlineimap cannot be included in the next stable
release of Debian. Testing will freeze on November 5th.


Reply to this email directly or view it on GitHub
#104 (comment).

Member

chris001 commented Sep 13, 2014

How about this solution. Change imaplib2.py to use a new thin
SSL-abstraction layer object, which wraps all ssl-related calls, and
calls into either openssl, or gnutls, depending on user preference via
the .offlineimaprc config file setting (defaulting to gnutls when no
setting present).

Also, imaplibutils.py (our code) would need a couple of lines changed to
use the thin SSL-abstraction layer object (the import hashlib and the
call to hashlib.sha1() which directly uses openssl).

On 9/13/2014 8:57 AM, skittleys wrote:

Your last message leaves the outcome of this issue unclear. Are you
saying you won't relicense, or merely pointing out the effort
involved? Has any action been taken?

At this point, offlineimap cannot be included in the next stable
release of Debian. Testing will freeze on November 5th.


Reply to this email directly or view it on GitHub
#104 (comment).

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 18, 2014

Member

Thing is, offlineimap does not directly use openssl. We bundle the imaplib library by Piers Lauder(?). This has to be relicensed or needs to grant the exception, and we don't have copyright on that lib.

Member

spaetz commented Sep 18, 2014

Thing is, offlineimap does not directly use openssl. We bundle the imaplib library by Piers Lauder(?). This has to be relicensed or needs to grant the exception, and we don't have copyright on that lib.

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 18, 2014

Member

Actually, imaplib2.py which we bundle already has the python license, so that is fine. Someone needs tto makeba concertated effort to receive all contributors OK, for an openssl exception.

Member

spaetz commented Sep 18, 2014

Actually, imaplib2.py which we bundle already has the python license, so that is fine. Someone needs tto makeba concertated effort to receive all contributors OK, for an openssl exception.

@chris001

This comment has been minimized.

Show comment
Hide comment
@chris001

chris001 Sep 18, 2014

Member

How about a sign up form - for all contributors to grant an openssl
exception - form can be hosted on the offlineimap site - and offer
electronic signature - fully paperless.

On 9/18/2014 8:31 AM, Sebastian Spaeth wrote:

Actually, imaplib2.py which we bundle already has the python license,
so that is fine. Someone needs tto makeba concertated effort to
receive all contributors OK, for an openssl exception.


Reply to this email directly or view it on GitHub
#104 (comment).

Member

chris001 commented Sep 18, 2014

How about a sign up form - for all contributors to grant an openssl
exception - form can be hosted on the offlineimap site - and offer
electronic signature - fully paperless.

On 9/18/2014 8:31 AM, Sebastian Spaeth wrote:

Actually, imaplib2.py which we bundle already has the python license,
so that is fine. Someone needs tto makeba concertated effort to
receive all contributors OK, for an openssl exception.


Reply to this email directly or view it on GitHub
#104 (comment).

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 20, 2014

Member

On 18. September 2014 16:58:14 MESZ, Chris Coleman notifications@github.com wrote:

How about a sign up form - for all contributors to grant an openssl
exception - form can be hosted on the offlineimap site - and offer
electronic signature - fully paperless.

On 9/18/2014 8:31 AM, Sebastian Spaeth wrote:

Actually, imaplib2.py which we bundle already has the python license,

so that is fine. Someone needs tto makeba concertated effort to
receive all contributors OK, for an openssl exception.


Reply to this email directly or view it on GitHub

#104 (comment).


Reply to this email directly or view it on GitHub:
#104 (comment)

Sure, just someone would have to do organize and do that.

Sebastian

Sent from mobile phone. Please excuse brevity

Member

spaetz commented Sep 20, 2014

On 18. September 2014 16:58:14 MESZ, Chris Coleman notifications@github.com wrote:

How about a sign up form - for all contributors to grant an openssl
exception - form can be hosted on the offlineimap site - and offer
electronic signature - fully paperless.

On 9/18/2014 8:31 AM, Sebastian Spaeth wrote:

Actually, imaplib2.py which we bundle already has the python license,

so that is fine. Someone needs tto makeba concertated effort to
receive all contributors OK, for an openssl exception.


Reply to this email directly or view it on GitHub

#104 (comment).


Reply to this email directly or view it on GitHub:
#104 (comment)

Sure, just someone would have to do organize and do that.

Sebastian

Sent from mobile phone. Please excuse brevity

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 20, 2014

Member

P.s. it could be a Google sheet, no need to host it on offlineimap.org even.

Sent from mobile phone. Please excuse brevity

Member

spaetz commented Sep 20, 2014

P.s. it could be a Google sheet, no need to host it on offlineimap.org even.

Sent from mobile phone. Please excuse brevity

@chris001

This comment has been minimized.

Show comment
Hide comment
@chris001

chris001 Sep 20, 2014

Member

Is there available an updated, complete list of contributors, with names
and current email addresses ?

On 9/20/2014 2:36 AM, Sebastian Spaeth wrote:

P.s. it could be a Google sheet, no need to host it on offlineimap.org

even.

Sent from mobile phone. Please excuse brevity


Reply to this email directly or view it on GitHub
#104 (comment).

Member

chris001 commented Sep 20, 2014

Is there available an updated, complete list of contributors, with names
and current email addresses ?

On 9/20/2014 2:36 AM, Sebastian Spaeth wrote:

P.s. it could be a Google sheet, no need to host it on offlineimap.org

even.

Sent from mobile phone. Please excuse brevity


Reply to this email directly or view it on GitHub
#104 (comment).

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 22, 2014

Member

On 20. September 2014 13:16:13 MESZ, Chris Coleman notifications@github.com wrote:

Is there available an updated, complete list of contributors, with
names
and current email addresses ?

On 9/20/2014 2:36 AM, Sebastian Spaeth wrote:

P.s. it could be a Google sheet, no need to host it on
offlineimap.org

even.

Sent from mobile phone. Please excuse brevity


Reply to this email directly or view it on GitHub

#104 (comment).


Reply to this email directly or view it on GitHub:
#104 (comment)

No, somebody needs to extract it from the git log. :-(

Sent from mobile phone. Please excuse brevity

Member

spaetz commented Sep 22, 2014

On 20. September 2014 13:16:13 MESZ, Chris Coleman notifications@github.com wrote:

Is there available an updated, complete list of contributors, with
names
and current email addresses ?

On 9/20/2014 2:36 AM, Sebastian Spaeth wrote:

P.s. it could be a Google sheet, no need to host it on
offlineimap.org

even.

Sent from mobile phone. Please excuse brevity


Reply to this email directly or view it on GitHub

#104 (comment).


Reply to this email directly or view it on GitHub:
#104 (comment)

No, somebody needs to extract it from the git log. :-(

Sent from mobile phone. Please excuse brevity

@chris001

This comment has been minimized.

Show comment
Hide comment
@chris001

chris001 Sep 22, 2014

Member

Sebastian, we might be able to escape the work of extracting
contributors' names and emails from the git logs, the following page
seems like it might be a rather complete list of 50 of our
contributors... except it has glaringly omitted at least one user,
nicolas33 !

https://github.com/offlineimap/offlineimap/graphs/contributors

Is there an administrative function in github to "send email message to
all contributors" ??
If yes... an email could be sent with a link to a page for GPL
exception, to accept each contributor's digital signature.
If no... will be necessary to manually grep git log for all 51+
contributor emails, then manually send email to all 51+ contributors
with link to page for GPL exception digital signature collection...

On 9/22/2014 11:34 AM, Sebastian Spaeth wrote:

On 20. September 2014 13:16:13 MESZ, Chris Coleman
notifications@github.com wrote:

Is there available an updated, complete list of contributors, with
names
and current email addresses ?

On 9/20/2014 2:36 AM, Sebastian Spaeth wrote:

P.s. it could be a Google sheet, no need to host it on
offlineimap.org

even.

Sent from mobile phone. Please excuse brevity


Reply to this email directly or view it on GitHub

#104 (comment).


Reply to this email directly or view it on GitHub:
#104 (comment)

No, somebody needs to extract it from the git log. :-(

Sent from mobile phone. Please excuse brevity


Reply to this email directly or view it on GitHub
#104 (comment).

Member

chris001 commented Sep 22, 2014

Sebastian, we might be able to escape the work of extracting
contributors' names and emails from the git logs, the following page
seems like it might be a rather complete list of 50 of our
contributors... except it has glaringly omitted at least one user,
nicolas33 !

https://github.com/offlineimap/offlineimap/graphs/contributors

Is there an administrative function in github to "send email message to
all contributors" ??
If yes... an email could be sent with a link to a page for GPL
exception, to accept each contributor's digital signature.
If no... will be necessary to manually grep git log for all 51+
contributor emails, then manually send email to all 51+ contributors
with link to page for GPL exception digital signature collection...

On 9/22/2014 11:34 AM, Sebastian Spaeth wrote:

On 20. September 2014 13:16:13 MESZ, Chris Coleman
notifications@github.com wrote:

Is there available an updated, complete list of contributors, with
names
and current email addresses ?

On 9/20/2014 2:36 AM, Sebastian Spaeth wrote:

P.s. it could be a Google sheet, no need to host it on
offlineimap.org

even.

Sent from mobile phone. Please excuse brevity


Reply to this email directly or view it on GitHub

#104 (comment).


Reply to this email directly or view it on GitHub:
#104 (comment)

No, somebody needs to extract it from the git log. :-(

Sent from mobile phone. Please excuse brevity


Reply to this email directly or view it on GitHub
#104 (comment).

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 22, 2014

Member

Cool, pretty sure there is no "email all users" button. The list would need some checkin for pre-git contributors, I guess.

Sent from my Android device with K-9 Mail. Please excuse my brevity.

Member

spaetz commented Sep 22, 2014

Cool, pretty sure there is no "email all users" button. The list would need some checkin for pre-git contributors, I guess.

Sent from my Android device with K-9 Mail. Please excuse my brevity.

@tohojo

This comment has been minimized.

Show comment
Hide comment
@tohojo

tohojo Sep 23, 2014

Contributor

As one of the people who just received said email (thanks!), could someone clarify (or link to) an explanation of how a piece of software using features of the language standard library can be said to be affected by the license of said features? Or is that not the issue here?

Not trying to be obnoxious or anything (and am not necessarily opposed to adding the exception), I'm just trying to understand the issue better... :)

Contributor

tohojo commented Sep 23, 2014

As one of the people who just received said email (thanks!), could someone clarify (or link to) an explanation of how a piece of software using features of the language standard library can be said to be affected by the license of said features? Or is that not the issue here?

Not trying to be obnoxious or anything (and am not necessarily opposed to adding the exception), I'm just trying to understand the issue better... :)

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 24, 2014

Member

tohojo: As just send to the mailing list. Here my opinion:

  1. I am no lawyer .

  2. There is a debian bug filed against offlineimap detailing specifics.
    If you believe you are right, I would think, we should argue there.

  3. Even using python-licensed abstractions inbetween, I do believe there
    is some leeway to argue that offlineimap needs to adhere to the openssl
    terms (e.g. the advertising clause), making it inherently incompatible
    with python-based end user applications under the GNU GPL. Is this a
    problem that would apply to all python-based apps using openssl?
    Yes...,. I'd rather be better safe than sorry here.

  4. I have only started this initiative when people stated that
    offlineimap would be potentially withdrawn from debian and the freeze
    for the coming release is in November, so in case debian plays tough, we
    need to be quick.

  5. Better safe than sorry, and we have managed to get consent for more
    than 80% of our code contributions within 24hours.

  6. Fun Fact: I am still waiting for Steve Hanson from the OpenSSL
    foundation to grant us an OpenSSL execption on his contribution .

I would be curious to find other python-based cases that were GNU GPL'd
apps got told off for sing openssl, or some discussion around the legal
stance, so if you have some, chime in.

For my part, would not have started this initiative if there had not
been specific action been taken against us (bugs filed), but now that I
started this, I believe adding the openssl exception won't hurt, so we
should pull it through.

Am I making sense?

Member

spaetz commented Sep 24, 2014

tohojo: As just send to the mailing list. Here my opinion:

  1. I am no lawyer .

  2. There is a debian bug filed against offlineimap detailing specifics.
    If you believe you are right, I would think, we should argue there.

  3. Even using python-licensed abstractions inbetween, I do believe there
    is some leeway to argue that offlineimap needs to adhere to the openssl
    terms (e.g. the advertising clause), making it inherently incompatible
    with python-based end user applications under the GNU GPL. Is this a
    problem that would apply to all python-based apps using openssl?
    Yes...,. I'd rather be better safe than sorry here.

  4. I have only started this initiative when people stated that
    offlineimap would be potentially withdrawn from debian and the freeze
    for the coming release is in November, so in case debian plays tough, we
    need to be quick.

  5. Better safe than sorry, and we have managed to get consent for more
    than 80% of our code contributions within 24hours.

  6. Fun Fact: I am still waiting for Steve Hanson from the OpenSSL
    foundation to grant us an OpenSSL execption on his contribution .

I would be curious to find other python-based cases that were GNU GPL'd
apps got told off for sing openssl, or some discussion around the legal
stance, so if you have some, chime in.

For my part, would not have started this initiative if there had not
been specific action been taken against us (bugs filed), but now that I
started this, I believe adding the openssl exception won't hurt, so we
should pull it through.

Am I making sense?

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 24, 2014

Member

Linking to a mail by Steve Langasek explaining on how Debian does not consider openssl to be a system library (which would be permitted by the GNU GPL), as long as OfflineImap is shipped from the same repositories as openssl.
So downloading OfflineImap via PIP would presumably be OK to debian, but including OfflineImap into their standard repo no. https://lists.debian.org/debian-legal/2002/10/msg00113.html

Member

spaetz commented Sep 24, 2014

Linking to a mail by Steve Langasek explaining on how Debian does not consider openssl to be a system library (which would be permitted by the GNU GPL), as long as OfflineImap is shipped from the same repositories as openssl.
So downloading OfflineImap via PIP would presumably be OK to debian, but including OfflineImap into their standard repo no. https://lists.debian.org/debian-legal/2002/10/msg00113.html

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 24, 2014

Member

Another discussion on the python list dscussing the legalities of GNU GPL code:
https://mail.python.org/pipermail/python-dev/2011-March/109032.html (see other mails in this thread).
With differing opinions.

Member

spaetz commented Sep 24, 2014

Another discussion on the python list dscussing the legalities of GNU GPL code:
https://mail.python.org/pipermail/python-dev/2011-March/109032.html (see other mails in this thread).
With differing opinions.

spaetz added a commit to spaetz/offlineimap that referenced this issue Sep 24, 2014

Add the OpenSSL exception
The GNU GPL and the OpenSSL license are incompatible. Some distributions
take a hardline stance and do not consider OpenSSL to be a systems library
(which would permit the usage/distribution of OpenSSL) when distributing
apps such as OfflineImap from the same repository. In order to solve these
distributions dilemma, we add the OpenSSL exception to our GNU GPL v2+ license.
This allows for unambiguous use/distribution of our GNU GPL'ed application
with a python linking to openssl.

Consent of all contributors has been requested via email by
Sebastian@SSpaeth.de. With very few exceptions of minor contributions (which
might or might not by copyright-worthy) all past contributors have consented
to adding the OpenSSL exception. None of the replying authors has disagreed
with adding the exception.

The corresponding issues at question:
 OfflineIMAP#104
 Debian bug #747033

Signed-Off: Sebastian Spaeth <Sebastian@SSpaeth.de>

spaetz added a commit to spaetz/offlineimap that referenced this issue Sep 24, 2014

Add the OpenSSL exception
The GNU GPL and the OpenSSL license are incompatible. Some distributions
take a hardline stance and do not consider OpenSSL to be a systems library
(which would permit the usage/distribution of OpenSSL) when distributing
apps such as OfflineImap from the same repository. In order to solve these
distributions dilemma, we add the OpenSSL exception to our GNU GPL v2+ license.
This allows for unambiguous use/distribution of our GNU GPL'ed application
with a python linking to openssl.

Consent of all contributors has been requested via email by
Sebastian@SSpaeth.de. With very few exceptions of minor contributions (which
might or might not by copyright-worthy) all past contributors have consented
to adding the OpenSSL exception. None of the replying authors has disagreed
with adding the exception.

The corresponding issues at question:
 OfflineIMAP#104
 Debian bug #747033

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
@chris001

This comment has been minimized.

Show comment
Hide comment
@chris001

chris001 Sep 24, 2014

Member

Correction to typo in #6!
It's "Dr. Stephen Henson" from the OpenSSL Foundation.
Source: https://www.openssl.org/about/

On 9/24/2014 3:34 AM, Sebastian Spaeth wrote:

tohojo: As just send to the mailing list. Here my opinion:

  1. I am no lawyer .

  2. There is a debian bug filed against offlineimap detailing specifics.
    If you believe you are right, I would think, we should argue there.

  3. Even using python-licensed abstractions inbetween, I do believe there
    is some leeway to argue that offlineimap needs to adhere to the openssl
    terms (e.g. the advertising clause), making it inherently incompatible
    with python-based end user applications under the GNU GPL. Is this a
    problem that would apply to all python-based apps using openssl?
    Yes...,. I'd rather be better safe than sorry here.

  4. I have only started this initiative when people stated that
    offlineimap would be potentially withdrawn from debian and the freeze
    for the coming release is in November, so in case debian plays tough, we
    need to be quick.

  5. Better safe than sorry, and we have managed to get consent for more
    than 80% of our code contributions within 24hours.

  6. Fun Fact: I am still waiting for Steve Hanson from the OpenSSL
    foundation to grant us an OpenSSL execption on his contribution .

I would be curious to find other python-based cases that were GNU GPL'd
apps got told off for sing openssl, or some discussion around the legal
stance, so if you have some, chime in.

For my part, would not have started this initiative if there had not
been specific action been taken against us (bugs filed), but now that I
started this, I believe adding the openssl exception won't hurt, so we
should pull it through.

Am I making sense?


Reply to this email directly or view it on GitHub
#104 (comment).

Member

chris001 commented Sep 24, 2014

Correction to typo in #6!
It's "Dr. Stephen Henson" from the OpenSSL Foundation.
Source: https://www.openssl.org/about/

On 9/24/2014 3:34 AM, Sebastian Spaeth wrote:

tohojo: As just send to the mailing list. Here my opinion:

  1. I am no lawyer .

  2. There is a debian bug filed against offlineimap detailing specifics.
    If you believe you are right, I would think, we should argue there.

  3. Even using python-licensed abstractions inbetween, I do believe there
    is some leeway to argue that offlineimap needs to adhere to the openssl
    terms (e.g. the advertising clause), making it inherently incompatible
    with python-based end user applications under the GNU GPL. Is this a
    problem that would apply to all python-based apps using openssl?
    Yes...,. I'd rather be better safe than sorry here.

  4. I have only started this initiative when people stated that
    offlineimap would be potentially withdrawn from debian and the freeze
    for the coming release is in November, so in case debian plays tough, we
    need to be quick.

  5. Better safe than sorry, and we have managed to get consent for more
    than 80% of our code contributions within 24hours.

  6. Fun Fact: I am still waiting for Steve Hanson from the OpenSSL
    foundation to grant us an OpenSSL execption on his contribution .

I would be curious to find other python-based cases that were GNU GPL'd
apps got told off for sing openssl, or some discussion around the legal
stance, so if you have some, chime in.

For my part, would not have started this initiative if there had not
been specific action been taken against us (bugs filed), but now that I
started this, I believe adding the openssl exception won't hurt, so we
should pull it through.

Am I making sense?


Reply to this email directly or view it on GitHub
#104 (comment).

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Sep 24, 2014

Member

Oops, my apologies, I might have caught the wrong person then (I do mean a Steve Hanson which used to work at Redhat).

Member

spaetz commented Sep 24, 2014

Oops, my apologies, I might have caught the wrong person then (I do mean a Steve Hanson which used to work at Redhat).

@tohojo

This comment has been minimized.

Show comment
Hide comment
@tohojo

tohojo Sep 24, 2014

Contributor
  1. There is a debian bug filed against offlineimap detailing specifics.
    If you believe you are right, I would think, we should argue there.

Right, I'll go ask on the Debian list.

  1. Even using python-licensed abstractions inbetween, I do believe
    there is some leeway to argue that offlineimap needs to adhere to the
    openssl terms (e.g. the advertising clause), making it inherently
    incompatible with python-based end user applications under the GNU
    GPL. Is this a problem that would apply to all python-based apps using
    openssl? Yes...,. I'd rather be better safe than sorry here.

I'm just really puzzled by the fact that using a feature of a language
runtime can affect the licensing of the project. I mean, offlineimap
could presumably run on a different python interpreter (let's call it
$XPYTHON) which implemented it's ssl module using a different SSL
library and this wouldn't be an issue?

I can see how the Python interpreter itself needs this clause (as indeed
it has). Of course it may be that I'm just being hopelessly naive. In
which case I'd like someone to point me to a good explanation somewhere :)

If you can't write a GPL-licensed application in Python without
requiring a license exception, I'd consider that a bug (in Python, I
suppose)...

  1. I have only started this initiative when people stated that
    offlineimap would be potentially withdrawn from debian and the freeze
    for the coming release is in November, so in case debian plays tough,
    we need to be quick.

Sure, I can recognise the pressure, and as I said I'm not opposed as
such; I just want to use this opportunity to understand the issue a bit
better...

-Toke

Contributor

tohojo commented Sep 24, 2014

  1. There is a debian bug filed against offlineimap detailing specifics.
    If you believe you are right, I would think, we should argue there.

Right, I'll go ask on the Debian list.

  1. Even using python-licensed abstractions inbetween, I do believe
    there is some leeway to argue that offlineimap needs to adhere to the
    openssl terms (e.g. the advertising clause), making it inherently
    incompatible with python-based end user applications under the GNU
    GPL. Is this a problem that would apply to all python-based apps using
    openssl? Yes...,. I'd rather be better safe than sorry here.

I'm just really puzzled by the fact that using a feature of a language
runtime can affect the licensing of the project. I mean, offlineimap
could presumably run on a different python interpreter (let's call it
$XPYTHON) which implemented it's ssl module using a different SSL
library and this wouldn't be an issue?

I can see how the Python interpreter itself needs this clause (as indeed
it has). Of course it may be that I'm just being hopelessly naive. In
which case I'd like someone to point me to a good explanation somewhere :)

If you can't write a GPL-licensed application in Python without
requiring a license exception, I'd consider that a bug (in Python, I
suppose)...

  1. I have only started this initiative when people stated that
    offlineimap would be potentially withdrawn from debian and the freeze
    for the coming release is in November, so in case debian plays tough,
    we need to be quick.

Sure, I can recognise the pressure, and as I said I'm not opposed as
such; I just want to use this opportunity to understand the issue a bit
better...

-Toke

@tohojo

This comment has been minimized.

Show comment
Hide comment
@tohojo

tohojo Sep 24, 2014

Contributor

Sebastian Spaeth notifications@github.com writes:

Another discussion on the python list dscussing the legalities of GNU
GPL code:
https://mail.python.org/pipermail/python-dev/2011-March/109032.html
(see other mails in this thread). With differing opinions.

Hmm, this thread was a somewhat illuminating read. Still not sure I'm
entirely convinced that 'import ssl' automatically requires a python
program to abide by the openssl license, but if Debian is going to be
pedantic I don't suppose there's any harm in adding the exception...

Thanks for the links and patience :)

-Toke

Contributor

tohojo commented Sep 24, 2014

Sebastian Spaeth notifications@github.com writes:

Another discussion on the python list dscussing the legalities of GNU
GPL code:
https://mail.python.org/pipermail/python-dev/2011-March/109032.html
(see other mails in this thread). With differing opinions.

Hmm, this thread was a somewhat illuminating read. Still not sure I'm
entirely convinced that 'import ssl' automatically requires a python
program to abide by the openssl license, but if Debian is going to be
pedantic I don't suppose there's any harm in adding the exception...

Thanks for the links and patience :)

-Toke

@chris001

This comment has been minimized.

Show comment
Hide comment
@chris001

chris001 Sep 24, 2014

Member

Instead of getting digital signatures from all contributors, there's a way to slightly modify our code to satisfy this strict debian requirement of no linking to copyrighted code without an openssl exception.

Move the few functions that use openssl directly (via "import ssl"), into imaplib2.py (imaplib2 library by piers morgan, it already has an openssl exception) - the functions would obviously need to have any dependencies on offlineimap removed, and we would need to fork and do pull requests to piers can pull these added functions into imaplib2.py

The only places where offlineimap links to openssl:

  1. offlineimap/imaplibutil.py:
    import ssl
    (My IDE says it's unused.)
  2. offlineimap/imapserver.py:
    from ssl import SSLError, cert_time_to_seconds

Taking a closer look at these.

  1. SSLError is used one time to handle the case of "unknown protocol" for example when connecting via SSL to non-SSL service.
    The fix: change imaplib2.py to return its own "secure connection exception" object, instead of an instance of SSLError which belongs to openssl.
  2. cert_time_to_seconds is used one time by __verifycert() to compute if the SSL certificate of the mail server is expired.
    So, to move __verifycert() into imaplib2.py, and just call it from our code. It'd be useful for other projects, that link to imaplib2, and help them avoid needing an openssl exception, just to check whether the SSL cert of the imap server is expired/revoked.

Which way is preferred? Get signatures and add an exception in the license, or modify a small part of the code?

Member

chris001 commented Sep 24, 2014

Instead of getting digital signatures from all contributors, there's a way to slightly modify our code to satisfy this strict debian requirement of no linking to copyrighted code without an openssl exception.

Move the few functions that use openssl directly (via "import ssl"), into imaplib2.py (imaplib2 library by piers morgan, it already has an openssl exception) - the functions would obviously need to have any dependencies on offlineimap removed, and we would need to fork and do pull requests to piers can pull these added functions into imaplib2.py

The only places where offlineimap links to openssl:

  1. offlineimap/imaplibutil.py:
    import ssl
    (My IDE says it's unused.)
  2. offlineimap/imapserver.py:
    from ssl import SSLError, cert_time_to_seconds

Taking a closer look at these.

  1. SSLError is used one time to handle the case of "unknown protocol" for example when connecting via SSL to non-SSL service.
    The fix: change imaplib2.py to return its own "secure connection exception" object, instead of an instance of SSLError which belongs to openssl.
  2. cert_time_to_seconds is used one time by __verifycert() to compute if the SSL certificate of the mail server is expired.
    So, to move __verifycert() into imaplib2.py, and just call it from our code. It'd be useful for other projects, that link to imaplib2, and help them avoid needing an openssl exception, just to check whether the SSL cert of the imap server is expired/revoked.

Which way is preferred? Get signatures and add an exception in the license, or modify a small part of the code?

@xnox

This comment has been minimized.

Show comment
Hide comment
@xnox

xnox Sep 24, 2014

Contributor

Moving OpenSSL functionality into imaplib2 does not help, we'd still need exception in our code to use impalib2. Or e.g. give up verification of SSL certificates. I viable option is to add python-gnutls support to imaplib2 and allow that to use either OpenSSL or GnuTLS. And then in Debian, offlineimap can be packaged to use GnuTLS only. The logic used in debian is that python interpret is a compiled binary that does dlopen on the shared library _ssl.so which is linked against OpenSSL. And the trigger to do that dlopen is relied upon by our project (offlineimap) irrespective whether it's "import ssl" in our py-files or in the imaplib2.py or elsewhere in our dependencies.

Contributor

xnox commented Sep 24, 2014

Moving OpenSSL functionality into imaplib2 does not help, we'd still need exception in our code to use impalib2. Or e.g. give up verification of SSL certificates. I viable option is to add python-gnutls support to imaplib2 and allow that to use either OpenSSL or GnuTLS. And then in Debian, offlineimap can be packaged to use GnuTLS only. The logic used in debian is that python interpret is a compiled binary that does dlopen on the shared library _ssl.so which is linked against OpenSSL. And the trigger to do that dlopen is relied upon by our project (offlineimap) irrespective whether it's "import ssl" in our py-files or in the imaplib2.py or elsewhere in our dependencies.

@chris001

This comment has been minimized.

Show comment
Hide comment
@chris001

chris001 Sep 25, 2014

Member

How easily could we provide versions of imaplib2.py and other py-files, which currently use python-openssl, that could be switched to use python-gnutls with a packaging option...?

Member

chris001 commented Sep 25, 2014

How easily could we provide versions of imaplib2.py and other py-files, which currently use python-openssl, that could be switched to use python-gnutls with a packaging option...?

@xnox

This comment has been minimized.

Show comment
Hide comment
@xnox

xnox Sep 26, 2014

Contributor

I've looked at it briefly, and the API is different. I didn't have time to
validate how easily it is to port to gnutls and work with it at runtime.
However, I just went through non-trivial SSL debugging, which ended up
tracing down that older gnutls versions (2.12.x as using in Ubuntu 14.04
LTS and elsewhere) reject out of order certificate chains, which was a pain
to track down.

On 25 September 2014 01:11, Chris Coleman notifications@github.com wrote:

How easily could we provide versions of imaplib2.py and other py-files,
which currently use python-openssl, that could be switched to use
python-gnutls with a packaging option...?


Reply to this email directly or view it on GitHub
#104 (comment)
.

Regards,

Dimitri.

Contributor

xnox commented Sep 26, 2014

I've looked at it briefly, and the API is different. I didn't have time to
validate how easily it is to port to gnutls and work with it at runtime.
However, I just went through non-trivial SSL debugging, which ended up
tracing down that older gnutls versions (2.12.x as using in Ubuntu 14.04
LTS and elsewhere) reject out of order certificate chains, which was a pain
to track down.

On 25 September 2014 01:11, Chris Coleman notifications@github.com wrote:

How easily could we provide versions of imaplib2.py and other py-files,
which currently use python-openssl, that could be switched to use
python-gnutls with a packaging option...?


Reply to this email directly or view it on GitHub
#104 (comment)
.

Regards,

Dimitri.

@spaetz

This comment has been minimized.

Show comment
Hide comment
@spaetz

spaetz Oct 1, 2014

Member
  1. I have been sick a few days and will update the openssl exception page this evening. I guess we might have enough consent to merge the openssl exception. This is the super safe and conservative action, and it will make at least Debian happy, so this is my preferred option. If someone wants to argue with(in) Debian for our case, all the better.

  2. @chris001: Even if we push all OpenSSL related things into imaplib2.py that doesn't change a thing. a) We bundle the imaplib2.py library in our source code package, so it needs to adhere to our GPL license for sure. b) The problem is not ours (we can legally offer offlineimap via download or Pypi) but for Linux distributions which do not consider OpenSSL to by a base system library (and thus being excempt). Pushing all of OpenSSL into imaplib2 does not change the situation for Debian in the slightest. I would suggest, we add the OpenSSl exception and move on with more productive things that we can do.

Member

spaetz commented Oct 1, 2014

  1. I have been sick a few days and will update the openssl exception page this evening. I guess we might have enough consent to merge the openssl exception. This is the super safe and conservative action, and it will make at least Debian happy, so this is my preferred option. If someone wants to argue with(in) Debian for our case, all the better.

  2. @chris001: Even if we push all OpenSSL related things into imaplib2.py that doesn't change a thing. a) We bundle the imaplib2.py library in our source code package, so it needs to adhere to our GPL license for sure. b) The problem is not ours (we can legally offer offlineimap via download or Pypi) but for Linux distributions which do not consider OpenSSL to by a base system library (and thus being excempt). Pushing all of OpenSSL into imaplib2 does not change the situation for Debian in the slightest. I would suggest, we add the OpenSSl exception and move on with more productive things that we can do.

spaetz added a commit to spaetz/offlineimap that referenced this issue Oct 2, 2014

Add the OpenSSL exception
The GNU GPL and the OpenSSL license are incompatible. Some distributions
take a hardline stance and do not consider OpenSSL to be a systems library
(which would permit the usage/distribution of OpenSSL) when distributing
apps such as OfflineImap from the same repository. In order to solve these
distributions dilemma, we add the OpenSSL exception to our GNU GPL v2+ license.
This allows for unambiguous use/distribution of our GNU GPL'ed application
with a python linking to openssl.

Consent of all contributors has been requested via email by
Sebastian@SSpaeth.de. With very few exceptions of minor contributions (which
might or might not by copyright-worthy) all past contributors have consented
to adding the OpenSSL exception. None of the replying authors has disagreed
with adding the exception.

The corresponding issues at question:
 OfflineIMAP#104
 Debian bug #747033

We are still missing consent from:
1	Asheesh Laroia
2	Bart Kerkvliet
4	Daniel Burrows
5	David Favro
1	David Logie
1	Eric Dorland
1	Ethan Schoonover
49	Eygene Ryabinkin
1	Loui Chang
1	Luca Capello
1	Michael Witten
2	Mike Dawson
1	Peter Colberg
1	Scott Henson
1	Tom Lawton
1	W. Trevor King
2	X-Ryl669
1	buergi
2	dtk
5	mj

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
@nicolas33

This comment has been minimized.

Show comment
Hide comment
@nicolas33

nicolas33 Jan 9, 2015

Member

Unless I'm confused, this one is done. :-)

Member

nicolas33 commented Jan 9, 2015

Unless I'm confused, this one is done. :-)

@nicolas33 nicolas33 closed this Jan 9, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment