rikyoz / bit7z

A C++ static library offering a clean and simple interface to the 7-zip shared libraries.
https://rikyoz.github.io/bit7z
Mozilla Public License 2.0
623 stars 113 forks source link

Change GPLv2 to other license #84

Closed evilenzo closed 11 months ago

evilenzo commented 2 years ago

Problem

As I can see you choosed GPLv2 for your project but... This is a way imposing a lot of limits. No one ever can use your project in commercial projects because none of them might want to be licensed under GPLv2 too. So... What is the reason of choosing such license? You limit amount of users that might want to help you in development. Me and my coworker wanted to use your library and contributed twice (and we wanted to contribute even more) but now we see that we can't just use your lib because of licensing.... Suggestion: maybe review your choice and look at GPLv3 as an example? Or other less restricted license. GPLv2 is a really bad choice for the future of your lib...

Code of Conduct

rikyoz commented 2 years ago

Hi! Sorry for the late (and long) reply!

So... What is the reason of choosing such license?

There's no particular reason for this choice. I used the GPLv2 in other projects, and I didn't think much about choosing another license when I first created this library. I never even thought that so many other people would have used this project. 😅

This is a way imposing a lot of limits. No one ever can use your project in commercial projects because none of them might want to be licensed under GPLv2 too.

You limit amount of users that might want to help you in development. Me and my coworker wanted to use your library and contributed twice (and we wanted to contribute even more) but now we see that we can't just use your lib because of licensing....

Regrettably, I am aware of the limitations that the GPLv2 license imposes, and, in retrospect, I have realized that the choice of this license for bit7z was a big mistake. I'm already working on re-licensing this project, but it's not an easy task.

maybe review your choice and look at GPLv3 as an example?

I don't think that the GPLv3 would improve the situation much. I am not a lawyer, but from what I understand, the main problem with GPL licenses is their so-called "virality." A static library like bit7z can be used only by other GPL licensed projects. And the GPLv3 doesn't improve much in that sense: e.g., to the best of my knowledge, you can mix GPLv3 and Apache 2.0 code, but the result must still be released under the GPLv3. As a side note, bit7z is actually licensed as GPLv2+; hence it can be used by GPLv3 projects, afaik.

    [...] This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version. [...]

Or other less restricted license.

I did a lot of research on what the best license for bit7z could be. For the specific characteristics of this project, I think that the choice must fall either on the LGPLv2.1+ or the MPLv2 (Mozilla Public License). The first one would require a static-linking exception which, albeit common, makes the license not standard. So I'm more inclined to choose the plain MPLv2, which would allow using bit7z, without changes, in both commercial and FOSS programs (but forcing to disclose any eventual modification of the library's source code). The only thing that I don't like about the MPLv2 is its file-based nature, but I think that overall it's probably the best compromise. I'm open to other suggestions, though!

The v4.0 is almost ready for beta release. Except for a few details, the main task blocking the release is precisely the re-licensing. Even though I'm the author of 99% of the code, also other contributors helped with it. So I cannot simply change the license by myself. I will have to ask the other contributors to accept the re-licensing. As soon as possible, I will open a new issue in which I'll explain everything, and I will tag the affected contributors so that they can approve the re-licensing.

Anyway, thank you for sharing your thoughts and for wanting to contribute further to this project!

evilenzo commented 2 years ago

I don't think that the GPLv3 would improve the situation much.

Yeah, of course, I meant LGPL or other license that allows at least static linking. It is standard choice for projects like yours imho. But I don't understand why not MIT, BSD or others anyway...

rikyoz commented 2 years ago

I meant LGPL or other license that allows at least static linking. It is standard choice for projects like yours imho.

I totally agree with you. As I said, I think that the best choice should be the Mozilla Public License v2, which allows static linking without any problem.

But I don't understand why not MIT, BSD or others anyway...

The biggest thing I don't like about those licenses, at least for this project, is that they don't enforce sharing any eventual change to the licensed code. In this sense, I like that the MPLv2 is generally permissive, but it requires crediting and that contributions back to your project must remain open-source, without the viral aspects of GPL.

rikyoz commented 11 months ago

Moved from GPLv2 to MPLv2 in v4.0.0.