Hi I've spent some time understanding the *GPL family of licenses, and my reading (based on the text and other sources, like the FSF FAQ and various articles on the Net), was always that (in .NET terms):
If you use the source files of the Library to create a new assembly, it has to be LGPL too. If you link the Library's assembly/assemblies to some other assemblies, these assemblies can be provided using any license. (No matter what the purpose of this code is. Whether those other assemblies in some way "extend" the Library makes no difference at all.) In fact, I believe if it were different, there would be little difference between the GPL and the LGPL, and you'd need a lawyer in each case to decide how the LGPL could be applied to commerial software. In other words, providing a proprietary assembly that derives from NH classes like Session to provide extended generic ORM functionality would not be a license violation, or else any proprietary application that derives from NH classes in order to achieve certain features would be at risk. If someone disagrees, I'd be grateful if you could point out the exact language in the LGPL that makes this distinction, because I cannot find it. BTW, there's one clause that few people are aware of: If I read the LGPL right, any binary application that uses the Library must enable the user to replace the Library with her own version of the Library (section 6). I believe that any fully managed app fulfills this clause because you can ildasm/edit/ilasm it, thus changing the the public key token for the Library in the application. But that's just what I'm thinking. Reading the (L)GPL is a mess though, and it's not made easier by the ambiguities of static/dynamic linking: .NET always uses DLLs, but can link to them statically or load them dynamically - is a statically linked DLL a statically or a dynamically linked library in GPL speak? (Not to mention the misunderstanding that "derived work" somehow applies to deriving classes in OOP.) If you're unsure, I suggest contacting [email protected]<mailto:[email protected]>, they're helpful and quick, if a bit terse. Hope this helps, Stefan ________________________________ From: [email protected] [[email protected]] On Behalf Of Ayende Rahien [[email protected]] Sent: Thursday, September 10, 2009 7:32 AM To: [email protected] Subject: [nhibernate-development] Re: Note about LGPL It other words, and in laymen terms. If you are using NHibernate, great, you don't have anything to worry about legal wise. If you extending NHibernate, and distributing your work, then the parts that extend NHibernate, must also be under the LGPL. To my knowledge, we had at least one case of a company taking NHibernate (well, they took Active Record, but same thing) and trying to sell it as their own. I don't think it was very successful journey for them, though. On Thu, Sep 10, 2009 at 6:57 AM, Fabio Maulo <[email protected]<mailto:[email protected]>> wrote: This is an invitation to the team. The text below is part of the LGPL license adopted by NHibernate (mentioned as "Library"). Please help OSS ensuring that every body does understand the term of the license. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. -- Fabio Maulo
