Re: [eigen] Usage of Eigen2 in a closed source application

[ Thread Index | Date Index | More Archives ]

Dear Frank

2008/12/13 FMDSPAM <fmdspam@xxxxxxxxx>:
> Dear Mr. Benoit,

(Note: Benoit is my first name)

> I develop a closed source, commercially distributed application

To cut a long story short: Yes you may use Eigen for a commercial
application, and you don't have to release any of this application's
source code.

> (not a library if that matters).

It doesn't matter :) some libraries, like the GNU C++ STL, have
library-specific clauses, and that is nonsense because the frontier
between an application and a library is abstract at best. (Some apps
like Krita have 99.9% of their code in libraries).

> And I am strongly interested to use your excellent library eigen2.

Thank you :)

> But unfortunately my understanding of the GPL/LGPL is to limited to anwser
> my question myself:
> "Is it allowed to use your work (your header files) in my application
> without to be enforced  to publish any of my application code?".

Yes it's allowed.

> In the Web I found many different opinions about  the use of LGPLed Libs in
> property applications. Mostly saying: "use a dynamic linked version".

The web pages that you saw are probably referring to the older LGPL
2.1. Eigen is licensed under the LGPL 3 or later. The old LGPL 2.1
indeed didn't cover appropriately the case of code in header files, it
was only for linked-to libraries.

> On Oct 25 2006 You wrote somewhere:
>> But while we allow unrestricted _use_, we want to only allow _changes_
>> under
>> the terms of the LGPL, so that back-contribution of changes is forced.
>>This is why we're choosing the LGPL and not the BSD, for instance.

25 october 2006 .... is ancient times in Eigen's history. At that time
we hadn't released anything and we hadn't decided on a license.

What I meant is that if somebody makes improvements to Eigen itself
(as opposed to just using Eigen to develop another project) and
redistributes his improved version of Eigen, then I would like our
license to be preserved, so that we can merge the improvements back
into Eigen.

At the time I wrote the above, I believed that LGPL would enforce that
but the BSD wouldn't.

I'm not really sure anymore that I got it right: since Eigen is
headers-only, it exists only in source form, so it now seems to me
that even if we were BSD-licensed, the license would have to be
preserved anyway. (Indeed, one may not strip the BSD away from
BSD-licensed source code, right?).

> On Aug. 15. 2008, In a conversation with Mr. Keir from You wrote:
> Keir:
>>Another thing that is useful about FLENS: BSD licensed. We are MIT, and
>>would prefer to keep as many of our dependent libraries BSD or MIT licensed
>>as possible.
> Benoit:
> I don't understand. Eigen2 is dual LGPL3+/GPL2+. So it even allows
> proprietary software to use it. I don't see anything preventing BSD
> code from using it....?
> (... Thereafter Keir seems to be convinced and the libmv library is switched
> from FLENS to Eigen2 ...)
> Would you please so kind to elaborate your answer to Keir in regard to my
> situation?
> What is revered by the "+" in "LGPLv3+"? Did you use an extended version of
> the LGPLv3?
> Why LGPLv3+ "even allows proprietary software to use it" ?

Keir just answered to this, but anyway:

The LGPL always allowed usage by closed-source software, but until
v2.1 it didn't cover appropriately the case of code in header files.

The LGPL v3 changes this, so by releasing Eigen under the LGPL v3 we
have a fully appropriate license for Eigen that allows even
closed-source software to use Eigen.

> How could the "imported goal" I mentioned above ever be achieved for an
> header-only lib?

Read the LGPL v3, it's surprisingly readable for legalese:

See especially paragraph 3:

>3. Object Code Incorporating Material from Library Header Files.
>The object code form of an Application may incorporate material from a header file that is part of the Library.
>You may convey such object code under terms of your choice, provided that, if the incorporated material is
>not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions
>and templates (ten or fewer lines in length), you do both of the following:
>   * a) Give prominent notice with each copy of the object code that the Library is used in it and that the
>         Library and its use are covered by this License.
>  * b) Accompany the object code with a copy of the GNU GPL and this license document.

Personnally, I leave the interpretation of "prominent notice" entirely
up to you. You may do the bare minimum, which is probably to just
mention us in a README file somewhere.

> "Is it allowed under the terms of the LGPLv3(+) to use your work (your
> header files) in my application without publishing any of my application
> code?".

Yes, again it's allowed, you don't need to release any of your application code.



Mail converted by MHonArc 2.6.19+