Update license.txt

Issue #402 resolved
Anastasia Baryshnikova created an issue

Figure out the correct license for sharing the code. List all used packages with their licenses.

LEVEL OF EFFORT - developers only

trivial

Comments (30)

  1. Christopher Keil repo owner

    @hepcat72 is this issue considered resolved? What is left to be done? Replace/ remove headers in classes throughout the code base?

    What about mentioning the libraries which we use? FreeHep, MigLayout and I believe something for the search boxes (showing full item names when they are longer than the search box is not possible with vanilla JComboBox in Swing). A look at all the JARs in the resources should give us the full extent of used libraries.

  2. Christopher Keil repo owner

    Licenses:

    FreeHep: GPLv2

    MigLayout: BSD or GPL (preference)

    Java TreeView: MIT

    iText: AGPL @hepcat72 What is this library?

    SwingX (Search autocomplete): LGPL

    xml-apis: Apache v 2.0 (check if this JAR can be removed)

    xerces: Apache v 2.0 (check if this JAR can be removed)


    Since we use GPL licensed software libraries for PDF export and the entire layout we apparently need to distribute the entire project under GPL. And I doubt we wanna remove either of the two libraries...

    https://stackoverflow.com/questions/11819831/including-gpl-external-library-in-mit-code

    @lance_parsons What do you think?

    Whatever we decide on I will remove the license from the Java file headers. It suffices to include the normal LICENSE.txt file at the project root, which we already do.

  3. Anastasia Baryshnikova reporter

    I am ok with distributing everything under GPL. My understanding is that it means that anyone can use, modify, distribute and sell the code in any form or shape with or without attributing credit to us.

  4. Robert Leach

    Are you sure iText is still in there? I thought I'd removed it. That was my first attempt at PDF export - but it failed.

  5. Lance Parsons

    @TreeView3Dev From the looks of it, the GPLv2 is the most restrictive, and if we use a jar that is licensed as GPL, then we MUST also release under GPL. I am not sure if we'd be able to release under GPLv3 or not, but that is a possibility. Assuming iText is out of play, the other licenses would allow more flexibility (but that only applies if we want to use another license).

    @abarysh That is not correct. All of the licenses mentioned here require attribution in some form. All (certainly MIT/BSD and GPL) allow commercial use.

    The most permissive are BSD/MIT which lets people do anything they want with your code as long as they provide attribution back to you and don’t hold you liable.

    Apache 2.0 is a permissive license similar to the MIT License, but also provides an express grant of patent rights from contributors to users.

    GPL is a copyleft license that requires anyone who distributes your code or a derivative work to make the source available under the same terms, and also provides an express grant of patent rights from contributors to users.

    Some good sources of info:

    1. http://choosealicense.com/
    2. https://opensource.org/licenses
    3. https://tldrlegal.com/license/mit-license
    4. https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)
    5. https://tldrlegal.com/license/gnu-general-public-license-v2
    6. https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)
  6. Anastasia Baryshnikova reporter

    So, is everyone ok with GPL? We are using GPL libraries, so all other licenses are out, right?

  7. Anastasia Baryshnikova reporter

    So, I looked pretty thoroughly into the licensing dependencies. The GPLv3 (with the "and later versions" option) is the correct choice both legally and, I think, ethically. All libraries listed above are compatible with GPLv3, given 2 considerations:

    • FreeHep is actually a LGPLv2.1 license (not GPLv2 -- http://java.freehep.org/license.html) which is even more clearly compatible with GPLv3
    • MigLayout is a little vague about their licensing (BSD or GPL?) but, assuming BSD, it's totally ok to distribute it under GPLv3 (if GPL, we have to consider which version and whether or not it includes "later versions" as well).

    We have to retain all the original copyright notices of each individual library and have a GPLv3 license file for the whole software.

    @TreeView3Dev, @hepcat72, @lance_parsons -- can you all comment here to indicate whether you agree or not? If we all agree, I will get in touch with Alok Saldanha to make sure he is ok with our choice.

  8. Anastasia Baryshnikova reporter

    Ok, cool. I have added the license info to the README file associated with the repository. @TreeView3Dev - could you make sure all the proper info is included into the source code as well?

  9. Christopher Keil repo owner

    @abarysh @lance_parsons I will do that but what exactly does that entail? Do we need to add references/ license files into our LICENSE.txt or in every single source file that uses the libraries? For MigLayout in particular that would be many files.

  10. Anastasia Baryshnikova reporter

    I think a single LICENSE.txt file with the full GPLv3 license stated is sufficient. I know here http://www.gnu.org/licenses/gpl-3.0.en.html it recommends to add a license statement to every source file, but I don't think that's very practical.

    For the libraries, we should make sure we retain their original LICENSE.txt files (if any) or whatever method they used to state their licensing in the code. Plus we should add a list of libraries to the README file of the repository, stating their name, the version we are using and the URL we got it from.

    How does that sound?

  11. Christopher Keil repo owner

    Sounds good to me as well. Taking quick looks at various popular repos on Github etc. it's usually common to have a single LICENSE.txt at the root...

  12. Anastasia Baryshnikova reporter

    To address Lance's comment by email, here's the list of licenses we're currently using ( @TreeView3Dev , @hepcat72 - correct me if I'm wrong):

    • FreeHep: LGPLv2.1
    • MigLayout: BSD or GPL (preference)
    • Java TreeView: MIT
    • iText: AGPL
    • SwingX (Search autocomplete): LGPL
    • xml-apis: Apache v 2.0
    • xerces: Apache v 2.0

    After looking more specifically into their compatibility with the MIT license, the answer is yes -- all of these can be linked (used within other code without modification) and re-distributed under an MIT license.

  13. Lance Parsons

    I'm fairly sure LGPL, Apache, BSD, and MIT licensed libraries allow use in non-GPL (i.e. MIT) licensed projects, so were fine there. However, if iText is actually AGPL, I don't think we can use that in a non-GPL licenced project. The AGPL doesn't appear to have any linking exceptions (unlike the LGPL) and thus, if we use iText, we are required to distribute under a compatible license (GPL).

  14. Robert Leach

    We are not using iText. It's not in my current Eclipse libraries. iText was the first (failed) pass at PDF export.

  15. Christopher Keil repo owner

    I am not 100% certain if Gradle bundling of the Java app (for various systems) works by using Jarbundler...

  16. Anastasia Baryshnikova reporter

    @TreeView3Dev -- can you check if Gradle uses Jarbundle and, if yes, what's its license? Once we know the license, I can figure out if its compatible with MIT and/or GPLv3.

  17. Christopher Keil repo owner

    @abarysh Yes, that's what our license is now anyways so we can leave that. I will add references and license texts of the other libraries to the LICENSE.txt once I am done with pull request #62.

  18. Log in to comment