CopyFree, LGPL &amp; GPL: is Closed Source Possible?
<p>I am working on building an app for desktop deployment. I am using an open-source platform that, for the purposes of this question, can be considered to use a CopyFree license. That platform itself links multiple external libraries though. Some of these libraries are under BSD license, some under LGPL license, and some under GPL license. I want my product to remain closed source. I know GPL requires users of a GPL component to also release there source under GPL, but as far as i know, BSD permits me to remain closed source; I am unsure about the requirements of LGPL for end user deployment. </p>

<p>Assuming i can find a workaround for the GPL component, is it legal for me to remain closed source while incorporating external libs that are both BSD and LGPL?</p>

<p>Also, I have not made any changes to any of these libraries. Would it change the ability for me to stay closed source if i were to use an altered version of one of these libraries?</p>

<p>Also, what is the legal effect on static vs dynamic linking?(I want to be cross platform)</p>

<p>Thats 3 questions. I hope this is not too broad?</p>

<p>Ok here is my go at answering my own question: (see comments above &amp; below for links)</p>

<p>Depending on what you want to do, GPL can be a bit complicated, with multiple versions, version numbers, and added exceptions over the years. it can be a headache. However, for this purposes of app development incorporating GPL/LGPL libraries, it is fairly straightforward. Keep in mind to check version numbers on all relevant documents, although they are most likely v3.0. As far as I know linking to a GPL library binds you to also releasing your code under GPL. So that is a no-go for closed source, but that brings me to my 1st question.</p>

<blockquote>
  <p>is it legal for me to remain closed source while incorporating
  external libs that are both BSD and LGPL?</p>
</blockquote>

<p>and I think the answer to that is yes provided that I dynamically link to said component (.so .dll .dylib .framework). Permission of this is granted under section 4d of LGPL v3.0.</p>

<blockquote>
  <p>d) Do one of the following:</p>

<pre><code>   0) Convey the Minimal Corresponding Source under the terms of this
   License, and the Corresponding Application Code in a form
   suitable for, and under terms that permit, the user to
   recombine or relink the Application with a modified version of
   the Linked Version to produce a modified Combined Work, in the
   manner specified by section 6 of the GNU GPL for conveying
   Corresponding Source.

   1) Use a suitable shared library mechanism for linking with the
   Library.  A suitable mechanism is one that (a) uses at run time
   a copy of the Library already present on the user's computer
   system, and (b) will operate properly with a modified version
   of the Library that is interface-compatible with the Linked
   Version.
</code></pre>
</blockquote>

<p>My 2nd question</p>

<blockquote>
  <p>Would it change the ability for me to stay closed source if i were to use an altered version of one of these libraries?</p>
</blockquote>

<p>It is my interpretation that in this case the only source you would need to provide is that of the modified library, and that the application itself can remain closed source. I'm basing this on grounds that nothing has changed from the situation for my 1st question other than the fact that the modified component library is now a derivative work under standard GPL v3.0. </p>

<p>finally my 3rd question</p>

<blockquote>
  <p>what is the legal effect on static vs dynamic linking?</p>
</blockquote>

<p>This seams to be a bit iffy. Again see section 4d of the LGPL v3.0. By this wording dynamic linking is much preferable, and there are basically no requirements. If you choose to link statically though(in other words as part of the project build) things get complicated. To fully understand see LGPL definition of "Corresponding Application Code", and then see sections 4 5 and 6 of the GPL document. Full source is not required, but as far as i can tell you are required to provide all necessary materials for someone to build the project from scratch, so they can use a different version of the library if they so choose. This, in my opinion, would not be closed source.</p>

<p>I hope that is clear enough? I did quite a bit of looking around the internet in coming up with this answer, and in the end even some reading of the license, though I'm not sure I've actually read them through in there entirety. Keep in mind that there are multiple version of each license, and you should check version numbers for each LGPL library you use. There is a lot of good information on on <a href="http://opensource.stackexchange.com">opensource.stackexchange</a>, although much more than one can process in a single sitting, and with occasional disagreement on finer points. </p>

<p>Below are some related links.</p>

<p><a href="https://www.gnu.org/licenses/gpl-3.0.txt" rel="nofollow noreferrer">gnu.org/licenses/gpl-3.0.txt</a></p>

<p><a href="https://www.gnu.org/licenses/lgpl-3.0.txt" rel="nofollow noreferrer">gnu.org/licenses/lgpl-3.0.txt</a></p>

<p><a href="http://copyfree.org/content/standard/licenses/2bsd/license.txt" rel="nofollow noreferrer">copyfree.org/content/standard/licenses/2bsd/license.txt</a></p>

<p><a href="https://opensource.stackexchange.com/questions/1700/are-derivative-works-a-subset-of-combined-works">opensource.stackexchange.com/questions/1700/are-derivative-works-a-subset...</a></p>

<p><a href="https://opensource.stackexchange.com/questions/2772/can-this-nvidia-licence-be-used-for-gpl-open-source-product">opensource.stackexchange.com/questions/2772/can-this-nvidia-licence-be-us...</a></p>

<p><a href="https://opensource.stackexchange.com/questions/2488/do-i-need-to-host-qt-source-when-compling-with-lgplv3-license">opensource.stackexchange.com/questions/2488/do-i-need-to-host-qt-source-w...</a></p>

<p><a href="https://opensource.stackexchange.com/questions/1431/are-there-examples-of-proprietary-software-that-functionally-depends-on-copyleft">opensource.stackexchange.com/questions/1431/are-there-examples-of-proprie...</a></p>

<p><a href="https://opensource.stackexchange.com/questions/5162/are-the-terms-of-lgpl-3-0-already-covered-by-gpl-3-0-aggregate-definition">opensource.stackexchange.com/questions/5162/are-the-terms-of-lgpl-3-0-alr...</a></p>

<p>A program which is a derivative work of GPL content must generally be distributed in open-source fashion.  On the other hand, the GPL expressly grants global irrevocable permission for anyone and everyone to do a few things, with no restrictions other than those expressly provided:</p>
<ol>
<li><p>Anyone may produce derivative works of GPL works for any purpose that does not involve distribution of the derivative works.</p>
</li>
<li><p>Anyone may distribute storage media containing copies of GPL releases via any means for any purpose that would allow the unmodified content of those releases to be readily extracted.  Media containing such copies would, for purposes of the GPL, not be regarded as derivative works of the GPL content therein.</p>
</li>
</ol>
<p>A key distinction between static linking and dynamic linking is that any potential &quot;derivative work&quot; produced via dynamic linking will be inherently ephemeral, making it almost impossible to avoid satisfying the first requirement listed above, while compliance with the gcc would require that one &quot;manually&quot; prevent any distribution statically-linked programs.</p>
<p>Note that the fact that a collection of files <em>could</em> be linked with some other set of files does not make the former set of files a &quot;derivative work&quot; based upon the second.  If one were to statically link the files to produce an executable, the resulting executable would be a derivative work.  A set of machine instructions, however, that would direct a recipient's machine to acquire or extract GPL software and perform such linking would not be a derivative work of that GPL software if it didn't contain any copyrightable content or aspects from the files to be linked with.</p>

open-source-software gpl