Skip to content
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

Re-licensing libzmq #2376

Closed
rlenferink opened this issue Mar 19, 2017 · 70 comments · Fixed by #4555
Closed

Re-licensing libzmq #2376

rlenferink opened this issue Mar 19, 2017 · 70 comments · Fixed by #4555

Comments

@rlenferink
Copy link
Contributor

Hello libzmq contributors,

I'm starting this issue because of the current libzmq license. At the moment, libzmq is licensed as LGPL with static linking exception and this makes it a complex "one of a kind" license.

Almost a year ago the ZeroMQ project team started to collect license grants to re-license libzmq to a clearer license, namely the MPLv2. Collecting these license grants stopped for a while, because Pieter Hintjens, the former BDFL (Benevolent Dictator for Life) behind ZeroMQ, got sick and passed away.

We want to continue Pieter's work with collecting these contributor license grants. We want to ask you to send us a license grant to permit the libzmq to relicense to a different license. At the moment, libzmq is licensed as LGPL 3 with a static linking exception (http://zeromq.org/area:licensing). This makes it hard to make use of libzmq in projects with some other Open Source licenses (e.g. projects using the Apache License). The existing LGPL 3 with exceptions is also a non-standard license that some corporate lawyers are unwilling to accept for use in their companies.

For relicensing the libzmq project, we need to collect a license grant from each individual contributor who wrote a major piece of code in the development process of libzmq.

We are requesting contributors to send in a license grant to relicense libzmq to one of the options listed below:

  1. relicense to the MPLv2 license specifically;
  2. relicense to the MPLv2 or any "share alike" Open Source Initiative (OSI) approved license chosen by the current ZeroMQ BDFL;
  3. relicense to the MPLv2 or any Open Source Initiative (OSI) approved license chosen by the current ZeroMQ BDFL (preferred selection)

If a contribution was made during working hours for an employer then we will also need a license grant (or "quit claim") from the employer.

We would like to follow a certain template as license grant to ensure all the necessary information is included. There are three templates, one for each option. Please choose the template that best represents your wishes.

The templates can be found at: https://github.com/zeromq/libzmq/tree/master/RELICENSE/templates

To include the license grant, please:

  • fork the original libzmq repository
  • create a new file in the RELICENSE directory, named after your name and/or your employers name, with the license grant as content, using the template chosen
  • commit this file to the repository, using the same email address as your earlier contributions
  • create a pull request on libzmq to have your license grant merged into the repository.

See the existing files in:
https://github.com/zeromq/libzmq/tree/master/RELICENSE

or this specific example: https://github.com/zeromq/libzmq/blob/master/RELICENSE/rlenferink.md

for a guide for how to fill out the template.


If there are any questions, don't hesitate to ask them below.

Roy

@bluca
Copy link
Member

bluca commented Mar 19, 2017

Thanks for kickstarting the process again!

@vielmetti
Copy link
Contributor

I contributed a one-line update to some documentation, is it necessary to go through an entire license grant to handle that?

@rlenferink
Copy link
Contributor Author

@vielmetti this is the specific commit you contributed: 92b1b2b

Since it is only documentation and not a major addition to libzmq it is not required for you to send in a license grant.

@junovitch
Copy link
Contributor

Hi, I believe my submissions were two fixes to fix compiling the FreeBSD port of zeromq. One for GCC not liking a missing newline (zeromq/zeromq4-x@2ac32f8) and one for fixing compiling with the documentation option by just shifting code (zeromq/zeromq4-1@c75cc9e). I personally don't consider either significant enough of a contribution.

Good on you folks. Good luck!

@Asmod4n
Copy link
Contributor

Asmod4n commented Apr 1, 2017

I believe i don't have to sign it, or? just added a option to zmq_has afaik, but how can i find out my contributions?

@bluca
Copy link
Member

bluca commented Apr 1, 2017

https://github.com/zeromq/libzmq/commits?author=Asmod4n

It's a few lines, so if you don't mind it would be better to. Thanks!

@Asmod4n
Copy link
Contributor

Asmod4n commented Apr 19, 2017

Could someone elaborate what the 2nd or 3rd options could mean? I currently like the MPLv2 the most, because its compatible to pretty much every other license?

@bluca
Copy link
Member

bluca commented Apr 19, 2017

I like MPL2 as well and it's 99/99% what is going to end up being, but given we are going through this ordeal it's worth, if the contributor agrees, to keep the options open.
It's up to you what you prefer for your grant.

Kentzo added a commit to GreatFruitOmsk/libzmq that referenced this issue May 23, 2017
mattconnolly added a commit to mattconnolly/libzmq that referenced this issue Jun 29, 2017
@lresende
Copy link

lresende commented Aug 9, 2018

Where are we with the relicensing process? Any ETA?

@bluca
Copy link
Member

bluca commented Aug 14, 2018

No ETA, there are still many old contributors missing.

@bluca
Copy link
Member

bluca commented Aug 15, 2018

@sigiesec let's try to be more disciplined on this - GitHub actually helps and tells if someone is a "first time contributor" so when we see that, let's ask for the grant before merging

@sigiesec
Copy link
Member

@bluca Ok, I will try too :)

@rlenferink
Copy link
Contributor Author

It's been some time ago since I've been working on this topic as well. At the time of sending out the first request to submit a grant, I've kept track of the responses but it should be updated to include new contributors from the past couple of months as well. I'm still busy this week but will try to restart this process somewhere next week.

As @bluca mentioned it indeed would be good to ask first time contributors to submit a grant before merging ;)

@bluca
Copy link
Member

bluca commented Feb 16, 2019

@rlenferink hi - I am looking at this again. Did you have a script or set of scripts to compile the checklist? I'd be happy to run them myself

@brugr9
Copy link

brugr9 commented Jan 14, 2022

@soundart We still don't know what is preventing you from agreeing to the MPLv2. Martin Sustrik’s aka @sustrik —who submitted a lot to libzmq—has initiated nanomsg precisely for licensing reasons. He wrote (cp. Why Communication Infrastructure Should Use Permissive Licenses):

Consider following use cases that would not be possible with GPL'd codebase:

  • Putting the technology into BSD kernel(s).
  • Incorporating the technology into Windows OS.
  • Providing the infrastructure on iPhones and iPads.
  • Even using ZeroMQ (LGPLv3) code in Linux (GPLv2) in-kernel implementation would be a problem.
  • Supporting the infrastructure inside networking hardware.
  • Plugging the proprietary products into the infrastructure

Is there a reason why libzmq has to degenerate into a Museeums piece?

@brugr9
Copy link

brugr9 commented Jan 18, 2022

@bluca As seen on @lalebarde account he was active on github this year. Did @lalebarde already respond concerning the re-licensing of libzmq to MPLv2?

@bluca
Copy link
Member

bluca commented Jan 18, 2022

No answer so far

@brugr9
Copy link

brugr9 commented Feb 11, 2022

566 grants to collect, work done within 5 years:

Is there a way to complete this task?

@lalebarde @soundart @thijsterlouw @hshardeesi @guidog If you could please come forward and make a decision for the MPLv2. Thanks a lot.

@nightlark
Copy link

nightlark commented May 9, 2023

Instead of continuing to ask for relicensing statements from new PRs, it might be worth exploring the LLVM relicensing approach where all contributions after X date are made under both the new and legacy licenses (which for LLVM was January 19, 2019 after the LLVM 8.0 release was branched). Then wait until either the remaining relicensing long tail responses trickle in, or rewritten code takes the place of the old contributions.

@bluca
Copy link
Member

bluca commented Jun 4, 2023

I have done some work to remove contributions from the authors who did not grant permissions:

#4554

The two removed APIs can be made non-stubs again if somebody is able to provide a clean-room reimplementation (ie: without looking at the old code that was removed). I can review such implementations, but for obvious reasons I cannot provide them, as my knowledge is 'tainted'.
With these changes, the relicense can be finalized.

@bluca
Copy link
Member

bluca commented Jun 4, 2023

Consider following use cases that would not be possible with GPL'd codebase:

  • Putting the technology into BSD kernel(s).
  • Incorporating the technology into Windows OS.
  • Providing the infrastructure on iPhones and iPads.
  • Even using ZeroMQ (LGPLv3) code in Linux (GPLv2) in-kernel implementation would be a problem.
  • Supporting the infrastructure inside networking hardware.
  • Plugging the proprietary products into the infrastructure

Note that none of this is true. The new license will be MPL2, which is very much intentionally still share-alike, and in layman's terms, for all intents and purposes, provides the same terms as the current LGPL3 + custom exceptions. The main purpose is to use a 'standard' license (no custom exceptions) and harmonize with the rest of the zeromq projects which are already on MPL2.

e.g.: the current license already allows using libzmq in proprietary products or networking hardware, and it already routinely happens.

@nightlark
Copy link

nightlark commented Jun 4, 2023

I have done some work to remove contributions from the authors who did not grant permissions:

#4554

The two removed APIs can be made non-stubs again if somebody is able to provide a clean-room reimplementation (ie: without looking at the old code that was removed). I can review such implementations, but for obvious reasons I cannot provide them, as my knowledge is 'tainted'. With these changes, the relicense can be finalized.

Should clean-room reimplementations of the removed features be backwards compatible in terms of how they are used? Eg code setting the CMake option for using tweetnacl, or using the reimplemented functions should continue to work without the user having to make changes to their code to use the new MPL implementations?

@bluca
Copy link
Member

bluca commented Jun 4, 2023

Yes - note that I am referring to zmq_proxy_steerable() and ZMQ_RECONNECT_IVL_MAX. I don't see any point in adding back tweetnacl, it just causes problems and it's unsafe to use anyway. libsodium is available everywhere. I don't think anybody should spend any time on tweetnacl, but obviously I can't stop anyone from doing so.

@bluca
Copy link
Member

bluca commented Jun 5, 2023

@lalebarde I see that you were active in the past week on Github, so one last chance to please give us permission to relicense your libzmq contributions to MPL-2.0. Your contributions are otherwise going to be deleted, and you will be removed from the zeromq Github organization.

bluca added a commit to bluca/libzmq that referenced this issue Jun 5, 2023
Relicense permission collected from all relevant authors as tallied at:
https://github.com/rlenferink/libzmq-relicense/blob/master/checklist.md
The relicense grants are collected under RELICENSE/ and will be moved
to the above repository in a later commit.

Fixes zeromq#2376
bluca added a commit to bluca/libzmq that referenced this issue Jun 5, 2023
Relicense permission collected from all relevant authors as tallied at:
https://github.com/rlenferink/libzmq-relicense/blob/master/checklist.md
The relicense grants are collected under RELICENSE/ and will be moved
to the above repository in a later commit.

Fixes zeromq#2376
@bluca
Copy link
Member

bluca commented Jun 7, 2023

Relicensing has now been completed.

@bluca
Copy link
Member

bluca commented Jun 7, 2023

@rlenferink could you please transfer ownership of the https://github.com/rlenferink/libzmq-relicense repository to me? I will then transfer it to the org here, and archive it

@shripchenko
Copy link
Contributor

Prob im - the author of ZMQ_RECONNECT_IVL_MAX
should i do anything ?
i can,

@bluca
Copy link
Member

bluca commented Jun 7, 2023

@shripchenko assuming you have not sent a relicense grant, you could send one just to clarify any doubt, simply copy the following text in a new comment filling with your data, I'll do the rest:

# Permission to Relicense under MPLv2

This is a statement by {{ name of company / name of individual }}
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).

A portion of the commits made by the Github handle "{{github username}}", with
commit author "{{github commit author}}", are copyright of {{ name }} .
This document hereby grants the libzmq project team to relicense libzmq, 
including all past, present and future contributions of the author listed above.

{{ Full Name }}  
{{ creation date of document (format: yyyy/mm/dd) }}

@shripchenko
Copy link
Contributor

Permission to Relicense under MPLv2

This is a statement by Sergey KHripchenko aka @shripchenko
that grants permission to relicense its copyrights in the libzmq C++
library (ZeroMQ) under the Mozilla Public License v2 (MPLv2).

A portion of the commits made by the Github handle "shripchenko", with
commit author "Sergey KHripchenko shripchenko@intermedia.net", are copyright of Sergey KHripchenko.
This document hereby grants the libzmq project team to relicense libzmq,
including all past, present and future contributions of the author listed above.

Sergey KHripchenko
2023/06/07

@rlenferink
Copy link
Contributor Author

@rlenferink could you please transfer ownership of the https://github.com/rlenferink/libzmq-relicense repository to me? I will then transfer it to the org here, and archive it

@bluca I just transferred the repository to you for archival

@bluca
Copy link
Member

bluca commented Jun 7, 2023

great, thank you, will fix a rebase mistake, add the license grant from above, move it to this org and archive it

@bluca
Copy link
Member

bluca commented Jun 7, 2023

and done: https://github.com/zeromq/libzmq-relicense

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.