gvinciguerra / PGM-index

🏅State-of-the-art learned data structure that enables fast lookup, predecessor, range searches and updates in arrays of billions of items using orders of magnitude less space than traditional indexes
https://pgm.di.unipi.it/
Apache License 2.0
784 stars 92 forks source link

Use of GPL code is incompatible with Apache License #10

Closed lederernc closed 3 years ago

lederernc commented 3 years ago

The sdsl library is licensed under the GPL v3 license. You cannot use code with that license in this library without explicit permission from the owner of that library as the terms are incompatible.

darko20 commented 3 years ago

The problem can be solved by dual licencing PGM-index under Apache and GPL. Also alglib is GPL'd in the tuner directory.

The better solution is to remove the dependency on the GPL'd code by re-implementing the required functionality or finding it elsewhere with less restrictive licencing.

mpetri commented 3 years ago

There is actually a version of SDSL that is BSD licensed but the authors kind of gave up on this midway into this project: https://github.com/xxsds/sdsl-lite/blob/master/LICENSE so it was never released as "version 3".

gvinciguerra commented 3 years ago

Thanks @lederernc for pointing out the problem, and thanks @darko20 and @mpetri for suggesting solutions.

I switched to the BSD-licensed SDSL (fe61dc0899c1fabd91d7a05a1c5ff183e91fb4b7), as @mpetri suggested. For alglib, I agree with @darko20 that it would be better to remove the dependency. I'll search if there are any lightweight libraries for nonlinear least-squares fitting with an Apache-compatible license.

data-man commented 3 years ago

lightweight libraries for nonlinear least-squares fitting with an Apache-compatible license.

https://github.com/Rookfighter/least-squares-cpp (MIT License, header-only). But Eigen3 (MPL2, header-only) is required.

gvinciguerra commented 3 years ago

Thanks @data-man for suggesting an alternative library.

I ended up implementing a custom fit function on linearised data, and I removed the alglib dependency.