Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations KootK on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Question about GNU Lesser General Public License

Status
Not open for further replies.

rotw

Mechanical
May 25, 2013
1,143
Hello,

I have embedded in my FORTRAN main code a set of subroutines which are provided under Lesser General Public License. I intend to exploit the software code commercially and the source code is not to be disclosed. What are my legal obligations in this case?

- Am I required to provide the source code of the Lesser General Public License libraries/routines together with the main application closed source?
- Is it required to mention/reference the Lesser General Public License libraries being used (e.g. in software user agreement or alike place holder)

Please note that the source is compiled as DLL library.

In addition, I am curious - how do typically people find out about any (3rd party) external libraries being used as part of a main application, when they are not told so, if not by reverse engineering the main (obfuscated) code; however, this by itself constitutes a breach of terms of use unless done by someone legally authorized.

Thanks

 
Replies continue below

Recommended for you

My understanding (I'm no expert) is that you can incorporate someone else's work that is licenced under LGNU provided you do not modify it, and then you don't need to release your own source code. However, if you modify the other work or incorporate it in any way into your own code you need to release your modifications.

If you've copied these subroutines into your code you need to release your modified code as I'd imagine that constitutes modification in term of the license. If you simply are using the LGPU licensed external code in its original form like using an original external library with that unmodified code, then you don't need to release your own source code that references this external library. So if it's in the middle of your code then you are required to release your code as I understand it. If you modified the original work but kept it separate, then you just release that separate rework of the original licensed material.
 
Thanks for your reply.

From your response:
"....you can incorporate someone else's work that is licenced under LGNU provided you do not modify it... then you don't need to release your own source code.
However, if you .... incorporate it in any way into your own code you need to release your modifications."


That just seems a bit confuse to me, sorry.

I also do not understand the difference between incorporating routines into (the middle of) main code and using the routines as referenced external libraries.
In both cases the LNGU routines are unchanged. Do you mean difference between Case A and B as follows:

Case A
======

Main Code Start

'
'
LGNU Coding (modified or not)
'
'

End Main Code


Case B
======

Main Code Start


'
'
Call LGNU
'
'


End Main Code


LNGU Code Start (unchanged)
'
'
'
LNGU Code End


Case A would be release code source
Case B no release


Is this what you meant?

My main code calls the LGNU routines as third party subroutines (interacting via Inputs/Outputs dummy parameters).
The LGNU routines are not touched/modified in any way. They are just plugged "as is" to the main code.

Does this mean I have to release the main source code?

Thanks

If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
It seems to me that if you are solely using the included code as distinct libraries, then you don't need to release your own code.

[URL unfurl="true" said:
https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License[/URL]]The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own (even proprietary) software without being required by the terms of a strong copyleft license to release the source code of their own components. However, any developer who modifies an LGPL-covered component is required to make their modified version available under the same LGPL license. For proprietary software, code under the LGPL is usually used in the form of a shared library, so that there is a clear separation between the proprietary and LGPL components. The LGPL is primarily used for software
libraries, although it is also used by some stand-alone applications.

TTFN (ta ta for now)
I can do absolutely anything. I'm an expert! faq731-376 forum1529 Entire Forum list
 
Thanks.

If I read the article here

Finally, the preamble introduces two terms used throughout the license to clarify between the different types of combined works: “works that use the library,” and “works based on the library.” Unlike the GPL, the LGPL must draw some lines regarding permissibly proprietary combined works. We do this here in this license because we specifically seek to liberalize the rights afforded to those who make combined works. In the GPL, we reach as far as copyright law allows. In the LGPL, we want to draw a line that allows some derivative works copyright law would otherwise prohibit if the copyright holder exercised his full permitted controls over the work.

....

Thus, a two-question test that will help indicate if a particular work is a “work that uses the library” under LGPLv2.1 is as follows:

1.Is the source code of the new copyrighted work, I, a completely independent work that stands by itself, and includes no source code from L?
2.When the source code is compiled, does it combine into a single work with L, either by static (compile-time) or dynamic (runtime) linking, to create a new binary work, L+I?
If the answers to both questions are “yes,” then I is most likely a “work that uses the library.” If the answer to the first question “yes,” but the answer to the second question is “no,” then most likely I is neither a “work that uses the library” nor a “work based on the library.” If the answer to the first question is “no,” but the answer to the second question is “yes,” then an investigation into whether or not I is in fact a “work based on the library” is warranted.


I have in my case:
1=[no]
2=[yes]
So investigation is needed.
Why can't they make the matter clear in one sentence.
It gets so complicated!

If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
They did

[URL unfurl="true" said:
https://copyleft.org/guide/comprehensive-gpl-guidech11.html[/URL]]A new copyright holder creates a separate and independent work, I, that makes interface calls (e.g., function calls) to the LGPL’d work, called L, whose copyright is held by some other party. Note that since I and L are separate and independent works, there is no copyright obligation on this new copyright holder with regard to the licensing of I, at least with regard to the source code.

TTFN (ta ta for now)
I can do absolutely anything. I'm an expert! faq731-376 forum1529 Entire Forum list
 
IRstuff - but that doesn't make it clear to me, and apparently not to rotw either.

If they say "investigation is needed" if the work is not "completely independent" then is seems the situation is not clear.

The most certain way to solve it may be to extract all the LGPL source code and replace it with function calls to an independent library, but there might be a lot of work in that.

Doug Jenkins
Interactive Design Services
 
IRstuff,

Thanks for taking time to look at this.

Your quoted statement from copyleft.org, was preceded by:

This scenario, defined in LGPL as “a work that uses the library,” works as follows:

So what you quoted is applicable when you fall in the category "a work that uses the library". Agreed?

I propose to look at this statement that I previously mentioned:

1.Is the source code of the new copyrighted work, I, a completely independent work that stands by itself, and includes no source code from L?
2.When the source code is compiled, does it combine into a single work with L, either by static (compile-time) or dynamic (runtime) linking, to create a new binary work, L+I?
If the answers to both questions are “yes,” then I is most likely a “work that uses the library.” If the answer to the first question “yes,” but the answer to the second question is “no,” then most likely I is neither a “work that uses the library” nor a “work based on the library.” If the answer to the first question is “no,” but the answer to the second question is “yes,” then an investigation into whether or not I is in fact a “work based on the library” is warranted.


I distinguish the following variants (all with configured 'functions calls') and revisit my previous answer:

Scenario A: Separate compilations:
Source Code (I) -> Compiled: DLL (I)
Source Code (L) -> Compiled: DLL (L)
Functions calls: DLL(I) <-> DLL(L)
We have [1]=Yes ; [2]=No => “work that uses the library” nor a “work based on the library.”


Scenario B: Combined compilation:
Source Code (I) + Source Code (L) -> Compiled: Combined DLL (I+L)
We have [1]=Yes ; [2]=Yes => "work that uses the library"

Then there is interpretation concern with this:

1.Is the source code of the new copyrighted work, I, a completely independent work that stands by itself, and includes no source code from L?


The very fact that my code (I) wont work without the addition of (L) makes it unclear how to answer this question. So if I do remove (L) the work does not stand by itself.

Thoughts?

I think best is to compile both DLL's independently to be on safe side (everyone agree), but that is some work - but in my case doable.
Is this what you meant IDS?

Thanks

If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
The very fact that my code (I) wont work without the addition of (L) makes it unclear how to answer this question. So if I do remove (L) the work does not stand by itself.

and includes no source code from L?

Including no source code from L (in your code) I would have thought would be the key here. As soon asyou do this you need to open source your code.

Sorry for earlier confusion, re-reading it I meant it how you interpreted it despite my poorly worded reply!
 
Agent666,
Thanks.

Just to reconfirm my understanding of your latest post:

What you are saying is:

If I include source code from L (in my code) => I would have to open my code.

Is this correct?



If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
By the way, exploring another option.

If the DLL's are not physically provided to the user. For example, the program is run from remote via the cloud.

Do I have to disclose the source code to the user?

Case at hand is where LGPL is statusing that - for the counterpart situation where the DLL is physically provided - source code has to be opended.



If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
I think that a pure, standalone DLL does not require you to disclose your source code; you do have to disclose that you are using LGPL covered software.


I don't think that a cloud version obviates the license; if the LGPL software is not standalone in your program, then you're obligated by your acceptance of the LGPL to disclose your code. The fact that they might not have foreseen that eventuality does not negate the intent of the license.

TTFN (ta ta for now)
I can do absolutely anything. I'm an expert! faq731-376 forum1529 Entire Forum list
 
IRstuff,

Got it. Thank you very much indeed.

I think it is more or less clearer for me that I have to compile my code and the LGPL code separately so to make for two separated DLL's which interface via function calls. Then I would disclose that I am using LGPL covered software as you have indicated.

One drawback is that such LGPL disclosure (which I assume has to be enough detailed) will give to the user a strong hint on how my code work.
I would have preferred a pure black box/trade secret approach with the core procedures being undocumented.

But now this secrecy seems to be compromised to a certain extent.

Any hint how I could still mitigate this aspect?

If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
The only way to get around that is to write your own code. I don't know that you have to have much detail in the disclosure beyond

"We use xxx software licensed under LGPL"

Ala,

Software Copyright
Copyright © 2015 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
...
Lesser General Public License (LGPL): The following is distributed under GNU Lesser General Public License (LGPL) which is at and is provided AS IS by authors with no warranty therefrom without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE (see the GNU LGPL for more details). Upon request, PTC will provide the source code for such software for a charge no more than the cost of performing this distribution. Said source code is likewise provided under the LGPL:
• FOX Toolkit Library (• JACOB, Copyright (c) 1999-2004 Sourceforge JACOB Project. (• SimpleSAMLphp
• TinyRadius Copyright (c) Matthias Wuttke (• xhtml2odt Copyright (C) 2009-2010 Aurelien Bompard (• JRegistryKey - A JNI wrapper of the Windows® Registry functions. Copyright © 2001, BEQ Technologies Inc. #205, 3132 Parsons Road Edmonton, Alberta T6N 1L6 Canada (780) 430-0056 (780) 437-6121 (fax) • Hibernate, Relational Persistence for Idiomatic Java. Copyright (c) 2011, Red Hat Inc. or third-party contributors as indicated by the @author tags or express copyright attribution statements applied by the authors. All third-party contributions are distributed under license by Red Hat Inc.
• SysTray for Java
• Hibernate
• JBoss
• Objectweb
• Regular Expressions for Java – package gnu.regexp
• StrutsTestCase for JUnit
• libodbc++
• eXist, an Open Source Native XML Database. You may obtain a copy of the source code at The source code is likewise provided under the GNU LGPL.
• GTK+ - The GIMP Toolkit. You may obtain a copy of the source code at which is likewise provided under the GNU LGPL.
• Java Port copyright 1998 by Aaron M. Renn (arenn@urbanophile.com). You may obtain a copy of the source code at The source code is likewise provided under the GNU LGPL.
• Pentaho Data Integration. Copyright (C) 2007 - 2012 Pentaho Corporation. All rights reserved.
• JCommon (• • JCommon (• xpp3, Copyright (c) 2002 Extreme! Lab, Indiana University. All rights reserved. (• OmniORB Libraries (OmniOrb is distributed under the terms and conditions of the GNU Lesser General Public License).
• The generic AIM library provided pursuant to the JAIMBot project ( JAIMBot is a modular architecture for providing services through an AIM client. It contains a generic AIM library and a Bot that uses this library to provide such services as Offline Messaging and Weather. PTC does not use the Bot.
• JExcelApi (• 7-Zip Copyright 1999-2006 Igor Pavlov (• libiconv Copyright 1991 Free Software Foundation, Inc. (• NHibernate © 200x, Red Hat Middleware, LLC. All rights reserved (• MPXJ © 2000-2008, Packwood Software (• Java Server Faces V3.0.1 (• DevlL Image Lib 0.1.6.7 (• Zip Master Component Lib 1.79 (• Exadel RichFaces 3.0.1 (• JFree and JFreeChart ( Copyright (C) 1991, 1999 Free Software Foundation, Inc.
• Memory DLLLoading code 0.0.1 ( source probjects/BTMemoryModule.zip).
• libiconv and libcharset libraries only (• Jboss serialization (• JGroups (• Java Getopt.jar file, copyright 1987 1997 Free Software Foundation, Inc.
• FindBugs™ (• wz_jsgraphics (• wz_dragdrop (• The Ex-"Coolest" JSCalendar DHTML Calendar © Dynarch.com (• jTDS JDBC Driver:

TTFN (ta ta for now)
I can do absolutely anything. I'm an expert! faq731-376 forum1529 Entire Forum list
 
IRstuff,

Yes, fair enough.
Thanks for the example of how LGPL's are listed.

If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
Sorry... another question.

Do I have to disclose LGPL copyright aspects when the software is released in trial mode.
Per se, no contract is made commercially wise at that point.

I would expect the answer is 'yes', but just wanted to double check.

If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
I would think so; the license applies to you, for incorporating software provided via LGPL. The fact that the user hasn't paid yet would seem to be irrevelant; your cite makes no mention of customers, only "users."

TTFN (ta ta for now)
I can do absolutely anything. I'm an expert! faq731-376 forum1529 Entire Forum list
 
Got it. Thank you.

If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
The subject LGPL DLL has some lines of code such as error messages which are handled via write(*,*) (and which I do not need)
When these error messages happen, they are causing the main code to crash and I do not want this.

If I edit/ delete these "write(*,*)" and recompile the subject LGPL DLL, does this mean I have to release my source code?

Thanks

If you plan an escape, you must succeed as if you fail, you will be punished for trying. Never say or write down your plan. Heart is the only place where secrecy is granted.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor