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

docs: update LICENSE to GPL-2.0 #65

Merged
merged 1 commit into from
Aug 3, 2021
Merged

docs: update LICENSE to GPL-2.0 #65

merged 1 commit into from
Aug 3, 2021

Conversation

arxanas
Copy link
Owner

@arxanas arxanas commented Aug 1, 2021

The GPL-2.0 license is so that we can use the code at https://github.com/quark-zju/gitrevset and its underlying implementation.

@waych Since you are the only other contributor to the project so far, I would need you to agree to license your contributions under the GPL-2.0 license as well. Is this okay with you?

@waych
Copy link
Contributor

waych commented Aug 1, 2021

I'm definitely okay with you re-licensing, especially considering you wrote the bulk.

That said, I don't know if it makes sense to dual license apache-2.0 and gpl-2.0, does it? Shouldn't it be sufficient to license core as apache-2.0 and license the modules in question as gpl-2.0?

This part:

The entirety of the source code for `git-branchless` is additionally available
under the GPL-2 license. Executables compiled from that source code are also
licensed under GPL-2.

seems to imply that it isn't possible to use git-branchless under apache-2.0 terms ("that source code"?). Maybe it is clearer if you s/additionally/alternatively/?

Either way, to make it easier for you, consider this message a transfer of copyright ownership for the patches I've submitted so far, as if under CLA terms: ⭐🎁⭐

@arxanas
Copy link
Owner Author

arxanas commented Aug 2, 2021

Thank you for your sign-off :). Again, I appreciate your contributions to the project!

In this case, I want to swap out the mergebase module and some of the graph for an implementation based on the GPL'ed library. These are fairly critical components, and git-branchless couldn't function without them.

As a result, I'm pretty sure the aggregate work and its resulting executables must be licensed under the GPL, according the terms of the GPL. So yes, I think it won't be possible to use git-branchless as a whole under Apache 2.0. In practice, I don't think having a GPL executable is a problem for end-users, the same as how GCC is fine for end-users.

Maybe it would be clearer to say that the whole work is licensed under the GPL, and additionally, most of the modules are licensed under Apache 2.0?

The point of retaining the Apache 2.0 license is in case somebody wants to either 1) use some of the unrelated modules standalone (i.e. the implementation of commit evolution), or 2) create a non-GPL version by only swapping out the GPL-ed modules, rather than having to reimplement the entire thing.

I personally don't want to maintain a non-GPL implementation of the libraries in question, because some of the operations are actually pretty tricky to implement by hand, especially in a performant way. My implementations are slow in some cases, and probably buggy. I know for certain that they don't handle multi-parent commits well.

@waych
Copy link
Contributor

waych commented Aug 2, 2021 via email

The GPL-2.0 license is so that we can use the code at https://github.com/quark-zju/gitrevset and its underlying implementation.
@arxanas arxanas changed the title docs: update LICENSE to both Apache 2.0 and GPL-2.0 docs: update LICENSE to GPL-2.0 Aug 2, 2021
@arxanas
Copy link
Owner Author

arxanas commented Aug 2, 2021

Thanks for your comment. I think you're probably right, and I would have to separate the code into two crates, which seems like a headache. Looking through the codebase, I think it's unlikely that one would want to extract some functionality into a library. Besides that, it's probably more in the spirit of Mercurial and its descendant technologies to license it under the GPL. I think I'll just use the GPL license.

@arxanas arxanas merged commit 88b37c0 into master Aug 3, 2021
@arxanas arxanas deleted the license branch August 3, 2021 03:50
arxanas added a commit that referenced this pull request Mar 12, 2023
See #813 for discussion and assent from major contributors to relicense git-branchless. From that link:

> Hi everyone, as you may know, git-branchless was licensed as GPL-2.0-only so that it could use Sapling SCM's DAG implementation (see #65). It was always my intention to license the program source code itself more permissively, but the resulting program (when linked against a GPL library) becomes GPL-licensed as a whole. This is confusing to explain and implement, so I simply licensed the whole program under GPL 2.0.
>
> The DAG library is licensed as MIT as of v0.3.0. After upgrading, we will no longer have any GPL dependencies. I am proposing that we relicense git-branchless to a dual MIT/Apache-2.0 license, so that we can reuse components in other systems such as Jujutsu (i.e. copy and paste some code one day). I've already started writing smaller modules licensed under MIT/Apache-2.0 to that end.
arxanas added a commit that referenced this pull request Mar 12, 2023
See #813 for discussion and assent from major contributors to relicense git-branchless. From that link:

> Hi everyone, as you may know, git-branchless was licensed as GPL-2.0-only so that it could use Sapling SCM's DAG implementation (see #65). It was always my intention to license the program source code itself more permissively, but the resulting program (when linked against a GPL library) becomes GPL-licensed as a whole. This is confusing to explain and implement, so I simply licensed the whole program under GPL 2.0.
>
> The DAG library is licensed as MIT as of v0.3.0. After upgrading, we will no longer have any GPL dependencies. I am proposing that we relicense git-branchless to a dual MIT/Apache-2.0 license, so that we can reuse components in other systems such as Jujutsu (i.e. copy and paste some code one day). I've already started writing smaller modules licensed under MIT/Apache-2.0 to that end.
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 this pull request may close these issues.

2 participants