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

Please clarify license #13

Closed
Sciss opened this Issue May 8, 2017 · 13 comments

Comments

Projects
None yet
3 participants
@Sciss

Sciss commented May 8, 2017

Hello. Thanks for this great library. I noticed the codec module license is not clear.

@nguillaumin

This comment has been minimized.

Owner

nguillaumin commented May 9, 2017

Good points!

I'll address the easy one first: The license is not on the codec artifact because it's inherited from the parent, that's expected for multi-module projects.

For the rest, it's more complicated: This project is a fork of https://sourceforge.net/projects/jflac/ which states an Apache license, that's why I used Apache in my fork.

However the library is a port of the official C libFLAC library I believe, which seems to be BSD licensed these days, but if you look at older versions (e.g < v1.1.0 which I think the Java port is based on), it was GPL licensed. This is explained on the FLAC "News" page:

FLAC joins the Xiph project - 29 Jan 2003
FLAC has joined the Xiph project. Xiph.org is behind other free codecs such as Vorbis, Theora, and Speex. Our merger with Xiph will bring FLAC into the ranks and lead to better integration with the Ogg multimedia framework. Note that the FLAC format is not changing, native FLAC will continue to exist, and the command-line tools and plugins will continue to work as before. The codec libraries will now be available under Xiph's BSD-like license. Over the next few days we will be transitioning normal operations off SourceForge and over to Xiph.org; first will be CVS and the web pages, followed by the mailing lists, bug tracker, and file release area. We will keep a mirror here until the transition is complete. It's OK to send patches to the flac-dev list but they won't be able to be integrated until CVS is fully moved over.

So I guess I'm not too sure what the correct license is. Perhaps GPL makes more sense, since that's where the code was ported from?

@alexhk90

This comment has been minimized.

Contributor

alexhk90 commented May 9, 2017

@Sciss

This comment has been minimized.

Sciss commented May 9, 2017

Looking into the svn of the original project, it looks weird indeed. In Google you can find several references that jFLAC 1.3 was GPL licensed. In the commit history, there is a 2.0 branch up to 2011 (I suppose this is where this fork comes from?), where LGPL has been introduced on 2011-05-10, and Apache has been introduced on 2011-06-02, after the 2.0 branch was started. Both by Alan Raison - is that the original author?

https://sourceforge.net/p/jflac/code/commit_browser

So I interpret this for now that the project is definitely not GPL, most likely Apache, unless you forked from a prior point.

@nguillaumin

This comment has been minimized.

Owner

nguillaumin commented May 9, 2017

So I interpret this for now that the project is definitely not GPL, most likely Apache, unless you forked from a prior point.

The thing is, I don't think they were permitted to change the license of the code they ported. If they wrote it from scratch that would be a different story, but assuming they just ported the C/C++ code to Java I think they had to keep the GPL license, meaning that whole of jFLAC should be GPL?

@Sciss

This comment has been minimized.

Sciss commented May 9, 2017

I went a bit through the source code histories. jFLAC started in 2004; at that time libFLAC had already changed from LGPL to BSD (this was in 2003: https://git.xiph.org/?p=flac.git;a=commitdiff;h=afd8107872c6a877b66957ee192b43530782c6ec); this is all documented in the commits by the original author Josh Coalsen. Coalsen was aware of jFLAC and linked to it at some point: https://git.xiph.org/?p=flac.git;a=commitdiff;h=8f22352e349b86eb19eed4852456ddd5aba6a3e9 ; the original author of jFLAC, kc7bfi, first committed the license here: https://sourceforge.net/p/jflac/code/ci/1becc7dad6dde3c5a4654956bd983bfb5d3f81e4/tree/LICENSE.txt - it was BSD. It can be seen that in the source code itself, there is already the confusion with LGPL: https://sourceforge.net/p/jflac/code/ci/1becc7dad6dde3c5a4654956bd983bfb5d3f81e4/tree/src/java/org/kc7bfi/jflac/StreamDecoder.java?diff=88b4a77151d50f2ffbbe47e78b7e43b0f5a993e2

My interpretation of this is as follows: libFLAC had undergone a change from LGPL to BSD when it moved to Xiph.org, and prior to the genesis of jFLAC. However, while license text files had been changed, not all headers had been updated, and when the Java port was done, the headers were just left they way they were found. kc7bfi continued working on the code until 2005. Then several people did minor things, and then in 2010 Alan Raison started doing major refactorings. He introduced several new things, curiously putting an Apache file header to them. He was then probably confused by the old LGPL headers of the original code, and given that you cannot relicense a copyleft project (LGPL) under something like Apache without consent by the previous authors, decided to switch them back to LGPL: https://sourceforge.net/p/jflac/code/ci/37604225c116531797efd8e32497e829e9ae73eb/

My conclusion is that actually the project should have been BSD all the way. But probably due to an oversight, some headers had been left at LGPL when libFLAC was moved to BSD, and subsequent authors then kept working with the assumption that the license of the codec is LGPL. Therefore - I think the project might be released under BSD, if the main author after kc7bfi -- Alan Raison -- agreed to that. But the safest choice is to assume that the codebase is now LGPL.

@nguillaumin

This comment has been minimized.

Owner

nguillaumin commented May 10, 2017

Thanks for the investigation 🔍 !

I'm not sure what to do TBH. I don't think we'll get in touch with the original authors, I tried contacting them when I made the fork to no avail.

I guess I could change the license to LGPL, but then there's the risk someone else will say "you cannot re-license FLAC as LGPL because it's BSD". Also that would mean releasing a new version but there's no possibility of removing the older versions with the "wrong" license from Maven Central...

Perhaps I could just explain the situation in the README, and put multiple license tags in the POM?

@Sciss

This comment has been minimized.

Sciss commented May 10, 2017

"you cannot re-license FLAC as LGPL because it's BSD"

I think what is happening is simply that BSD is combined with LGPL, and the result is LGPL.

@alexhk90

This comment has been minimized.

Contributor

alexhk90 commented May 10, 2017

@nguillaumin

This comment has been minimized.

Owner

nguillaumin commented May 10, 2017

To be frank, I'm a bit concerned that involving yet another party (especially something like a foundation as opposite to a single person) will make the issue even more complicated than it's already is...

nguillaumin added a commit that referenced this issue May 21, 2017

@nguillaumin

This comment has been minimized.

Owner

nguillaumin commented May 21, 2017

I created #14, let me know what you think and if that's suitable I'll release a new version.

@alexhk90

This comment has been minimized.

Contributor

alexhk90 commented May 22, 2017

@nguillaumin

This comment has been minimized.

Owner

nguillaumin commented May 22, 2017

Ah thanks for the typo, fixed!

nguillaumin added a commit that referenced this issue May 29, 2017

@nguillaumin

This comment has been minimized.

Owner

nguillaumin commented May 29, 2017

Release 1.5.2 with the changes, should be available on Maven Central in a few hours.

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