|
Author |
Topic: Implications of using code under LGPL license (Read 16325 times) |
|
hamea
Newbie

Posts: 16
|
 |
Implications of using code under LGPL license
« on: Jun 24th, 2007, 10:28am » |
Quote Modify
|
I am writing to get your assistance in understanding the implications of including a particular library (information given below) that is under a LGPL license into commercial software. In particular, we are using the library to incorporate cross-browser XML parsing capabilities into our commercial product. Rather than using the library “as is,” we will need to delete and rename some objects within the library to make them consistent with our naming convention before incorporating it into the rest of our code base. Could you clarify the notice and other requirements that we need to meet in order to ensure compliance with the LGPL license? Also, it will be greatly helpful for us in the future if you could provide an idea of what kind of situations does LGPL code become viral. Lastly, I have been trying to find a resource that presents a simpler English language version of the OS licenses for people like myself who are not familiar with the license legalese. If you are aware of any such resources, it would be of great help to me as well.
|
|
IP Logged |
|
|
|
JimIvey
Moderator Senior Member
    
Posts: 2584
|
 |
Re: Implications of using code under LGPL license
« Reply #1 on: Jun 25th, 2007, 4:23pm » |
Quote Modify
|
Okay, you're getting close to the limits of my competence, but I do know a little about open-source licensing. First, you realize that the LGPL allows you to incorporate the library into your commercial code so long as it stays in the library. To the extent you make modifications to the library, you'll probably be required to release your modifications to the library under the same terms of the LGPL. But, the remainder of your commercial code remains yours, as I understand it. Here's the viral nature of it. Suppose you decide to incorporate some of the modules of the library into the body of your code, e.g., for performance reasons. Under the terms of the LGPL, you may be required to release the source of your entire product. You really must maintain a clear distinction between the library you're using and the remainder of your code. Any modifications you make to the library will end up belonging to the community, as I understand it. Re "English" translations: As a patent practitioner, I'm very reluctant to admit that any restatement of anything is 100% accurate. In my line of work, there are no synonyms. However, the LGPL is in English, not quite Hemmingway or Steinbeck, but English (more like Faulkner). A few hours of careful study, and you should be able to figure it out. My understanding is that most open source licenses are a few pages in length -- 4 or so. Don't know for sure. Regards.
|
|
IP Logged |
-- James D. Ivey Law Offices of James D. Ivey http://www.iveylaw.com
|
|
|
Isaac
Senior Member
   
Posts: 3472
|
 |
Re: Implications of using code under LGPL license
« Reply #2 on: Jun 25th, 2007, 9:25pm » |
Quote Modify
|
on Jun 25th, 2007, 4:23pm, JimIvey wrote:First, you realize that the LGPL allows you to incorporate the library into your commercial code so long as it stays in the library. To the extent you make modifications to the library, you'll probably be required to release your modifications to the library under the same terms of the LGPL. But, the remainder of your commercial code remains yours, as I understand it. |
| I believe that in order to use LGPL code in this way, you'll have to dynamically link to the LGPL covered library or provide an alternative (and probably more cumbersome) method that allows your users to link new versions of the library to your code.
|
|
IP Logged |
Isaac
|
|
|
JimIvey
Moderator Senior Member
    
Posts: 2584
|
 |
Re: Implications of using code under LGPL license
« Reply #3 on: Jun 25th, 2007, 10:43pm » |
Quote Modify
|
Well, let's take a quick look: Quote:6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: * a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) * b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. * c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. * d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. * e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. |
| At first glance, it looks like you can distribute your object code (withholding your source code) with source code of the library as you use it so long as the end user can modify the library and re-compile/link using your object code. So, it looks like static linking might be okay if you touch all the right icons. Regards.
|
« Last Edit: Jun 25th, 2007, 11:13pm by JimIvey » |
IP Logged |
-- James D. Ivey Law Offices of James D. Ivey http://www.iveylaw.com
|
|
|
still_studying
Guest
|
 |
Re: Implications of using code under LGPL license
« Reply #4 on: Jun 29th, 2007, 1:14pm » |
Quote Modify
Remove
|
Be aware that, a few years ago, Stallman was pushing a new version of the LGPL which would demand that any product using the library be an open-source product. I don't know how well it's caught on. Also, to avoid having to publish the code with the renamed functions, if your editing is just for naming conventions, and assuming there are no conflicting names, you might consider writing some wrapper code instead of editing the library code. It'd add to the overhead, but it would avoid the publishing issue. Depends on whether your code is already eating up CPU. Something like: foo_following_conventions() { libraryfoo() ; } bar_following_conventions() { librarybar() ; }
|
|
IP Logged |
|
|
|
|
|