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

License declaration is missing #76

Closed
CsatariGergely opened this issue Jul 12, 2022 · 10 comments
Closed

License declaration is missing #76

CsatariGergely opened this issue Jul 12, 2022 · 10 comments
Labels

Comments

@CsatariGergely
Copy link

The license declaration of the project is missing either in a form of a single LICENSE file or in a Reuse compatible way. Declaration of the license makes the code more easy to consume and contribute to. Currently only the ROS page of the project mentions BSD and LGPLv3, without specifying the variant of BSD and some of the source files contain BSD-3-Clause license headers.

@130s
Copy link
Collaborator

130s commented Jul 14, 2022

Thanks for the help! The Open Robotics team also requested clarifying the license status ros/rosdistro#28331 (review), so this might as well have to be officially addressed.

@130s 130s self-assigned this Jul 14, 2022
@130s 130s added the bug label Jul 14, 2022
@130s
Copy link
Collaborator

130s commented Jul 15, 2022

@CsatariGergely While I agree to clarify license in a computer-friendly way (believe me as I've even started automating some part of free s/w licensing ros-infrastructure/rospkg#201), to give a quick response in an interest of time,

  • Overall all the software on this repo are likely BSD (Disclaimer: I'm relying on the declaration in package.xml files. I haven't yet done systematic analysis).
  • LGPLv3 might be coming from the usage of GSL in CSM, the library laser_scan_matcher package depends on.

@cst0
Copy link
Collaborator

cst0 commented Jul 15, 2022

I'm not sure LGPL is coming from GSL: the integration of GSL (a GPLv3 package) means that those branches are actually GPLv3 through copylefting, the license in the package/github page is (I believe) incorrectly reflecting the more permissive LGPL. I think I remember reading that the original implementation was released under LGPL intentionally, but I can't find any proof of that.

@malban
Copy link

malban commented Jul 16, 2022

EDIT: I was confused. I was speaking about the csm repo. This repo I do believe is BSD-3-clause (mostly) and the LGPLv3 is refering to the csm dependency.

@cst0 I agree. It seems like this repo was originally released and is currently licensed as LGPLv3, intentionally, regardless of the GSL dependency which is GPL.

@130s Make sure to note the difference between LGPL and GPL.

I think in practice, the GSL dependency makes downstream users of this library also need to conform to the GPL requirements from GSL (copyleft), and not just the lesser requirements of LGPL that this library is licensed under. This is not inconsistent, but it is, I think, somewhat confusing and not clear to downstream users.

I don't think the license for this repo can be changed from LGPLv3 without explicit action from the original copyright holders. It's also not necessary, because LGPLv3 is much less restrictive than GPL and is generally acceptable for most commercial use cases as the copyleft requirements are limited to modifying this library and don't effect things that only link to it.

The csm_eigen branch, which is also LGPLv3 removes the GSL (GPL) dependency, so downstream users won't need to link to GSL and therefore will only need to conform to the lesser LGPLv3 requirements, which should be in line with the normal ROS ecosystem.

EDIT: I was confused. I was speaking about the csm repo. This repo I do believe is BSD-3-clause (mostly) and the LGPLv3 is refering to the csm dependency.

@CsatariGergely
Copy link
Author

Thanks for the answers. I'm happy to see that others also would like to clarify the licensing in the repo.
On "BSD" you mean BSD-3-Clause, BSD-2-Clause or some other variants of BSD?

@malban
Copy link

malban commented Jul 18, 2022

Most commonly in ROS it's BSD-3-Clause.

It seems like that's the case here: https://github.com/CCNYRoboticsLab/scan_tools/blob/indigo/laser_scan_matcher/include/laser_scan_matcher/laser_scan_matcher.h#L1-L28

From what I can tell, all of the packages in this repo, except polar_scan_matcher are marked as BSD int he package.xml and contain source files with a BSD-3-Clause license.

The laser_scan_matcher package.xml also mentions LGPLv3, which I think is referring to the csm library dependency, but regardless, all of the source files are documented with a BSD-3-Clause license.

The polar_scan_matcher package is marked as GPLv2 and that is also documented in the source files within that package: https://github.com/CCNYRoboticsLab/scan_tools/blob/indigo/polar_scan_matcher/COPYING

@malban
Copy link

malban commented Jul 18, 2022

I made a MR to address this: #80

@130s
Copy link
Collaborator

130s commented Aug 5, 2022

Thanks for discussion.

  • If my concern Clarify licenses. #80 (review) is correct, I think of 2 actions that can happen in parallel.
    • let's embrace GPL.
    • ask original authors to ask if it's ok to change license to what we think appropriate (I've seen it happening elsewhere).
  • As discussed in ROS2 port for laser_scan_matcher and scan_to_cloud_converter #81, if we shift laser_scan_matcher to the upcoming eigen version of CSM we'll be able to remove (L/)GPL dependency, so those who want non (L/)GPL may just wait for that?

@malban
Copy link

malban commented Aug 5, 2022

@130s I think the only package that is actually GPL is polar_scan_matcher

The rest are all BSD-3-Clause, with source files marked as such.

Additionally, laser_scan_matcher also calls out LGPL in the package.xml. It's not clear what the intent of the LGPL reference is It could be:

  1. A dual license for the laser_scan_matcher package
  2. A mixture of some files being BSD and some being LGPL (note no files are marked as LGPL)
  3. Referring to the fact that a core dependency, csm, is LGPL
  4. A mistake, since it was added without comment when the package was converted to catkin

For all practical purposes it's not important, with a dual license the end user is free to choose BSD if they want. Additionally LGPL is not generally a problem for commercial use since it allows linking to LGPL libraries without triggering the copyleft terms.

So, I don't think there is any need to try and change the license(s) of this repo.

if we shift laser_scan_matcher to the upcoming eigen version of CSM we'll be able to remove (L/)GPL dependency, so those who want non (L/)GPL may just wait for that?

Having said the above, while I don't think the licensing for this repo need to change, it's not obvious from the current documentation that a core dependency to laser_scan_matcher is csm, which does have licensing implications for downstream users.

csm is LGPL, which is generally not a problem for commercial use cases since LGPL libraries can be linked against without triggering the copyleft clauses.

Importantly, there are two branches of csm, one that uses GSL and one that uses eigen. GSL is GPLv3, which applies even when linking, so this does have implications to downstream users of laser_scan_matcher if it's linked against that version of csm. Though, again, those copyleft requirements likely end at the node process boundary in ROS.

The eigen branch doesn't have the same issues since eigen is more permissive: https://eigen.tuxfamily.org/index.php?title=Main_Page#License

MR #80 tries to clarify this.

Ideally, we can get the ROS binary package of CSM to use the eigen branch, which will avoid confusion with the GPL dependency altogether.

@130s
Copy link
Collaborator

130s commented Feb 19, 2023

#80 is merged. Please see if that resolves the issue.

@130s 130s removed their assignment Oct 4, 2023
@130s 130s closed this as completed Oct 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants