sercantutar / infint

Arbitrary-Precision Integer Arithmetic
http://sercantutar.github.io/infint/
201 stars 49 forks source link

Confirm or clarify this repo's license please? #8

Closed vicchi closed 7 years ago

vicchi commented 8 years ago

We'd love to use your code in one of our projects but at the moment there's no explicit statement of what license the code is released under, which means that by default the code is effectively "all rights reserved" (see https://help.github.com/articles/open-source-licensing/).

Could you please clarify what license the source code is under and, if an open source license, place the appropriate license file in the repo and/or add a licensing note to the README?

Thanks!

sercantutar commented 8 years ago

See lines 5-8 of InfInt.h (GNU Lesser General Public License 2.1 or later)

vicchi commented 8 years ago

Thanks for getting back to me, but this doesn't make a lot of sense. Licensing a header file, which by definition has to be compiled and isn't a library that can be linked, be that statically or dynamically, under a version of the GPL which is designed for libraries seems ... counterintuitive.

To my mind, using the BSD or MIT license for header only code would seem to fit the use cases for which this code would be used, but if you don't feel that's possible, we'll have to look elsewhere.

But once again, thanks for the response.

sercantutar commented 8 years ago

I see. Will LGPL 3.0+ work for you? I guess some header only libraries are using this version instead (like Eigen),

lvella commented 8 years ago

I agree with @vicchi that doesn't seems to make sense to use LGPL here. Any version of LGPL explicitly allows you to link LGPL code with GPL-incompatible code, while GPL do not. That is the sole meaningful difference between GPL and LGPL.

In this case, of a software library implemented entirely on a header file, containing functions with more than ten lines (as per definition of "small inline function" given in LGPLv3, in the exception for header files), it seems to be very hard, if not impossible, to fulfil the conditions of LGPLv3 when linking with GPL-incompatible code.

This library would be much more useful for closed-source software developers (what LGPL is meant for, contrary to GPL) if this used a more permissive license, like BSD, or is placed into public domain (CC0 license).

By the way, Eigen changed its license from LGPLv3 to MPL 2.0, most likely because of the impossibility of a headers-only library user to comply with LGPL exceptions. Those were designed to allow the user to change, inside the final product, the source code of the LGPL licensed parts. With shared objects, mentioned in the license, it is as easy as replacing the .so or .dll files. With headers, it seems to be impossible without giving access to the original source code.

mg262 commented 7 years ago

@sercantutar I would be very grateful for clarification of the license.

sercantutar commented 7 years ago

moved to MPL 2.0