Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am a commercial software developer and I want to make use of open-source in my proprietary software.

As I understand the concept of copy-left, it uses the original authors copyright to ensure that their ultimate end users (which would include my customers) are not deprived of benefits of the original work that the original authors of the OS components intended for them to have.

I also understand that there is an incentive to produce more free software and I often find that sites that clarify and recommend various licensing terms are mixing the legalities with the ideology.

All I am asking for is a clear picture. The people who want to create OS exclusively for other OS projects should be allowed to do so. The people who want to put code out there for anybody to use should be allowed to do so. Also, there are many claims which have no legal precedence and are not as clear cut as authors of OS interest sites would like them to be.

And we all know that code is not just code.

There is a difference between:

  • Copying somebodys source code into your source code.
  • Consuming a library compiled as-is from github.
  • Consuming a library compiled from a locally altered version from github.

Let's pretend that I use an open source library for accessing Excel spreadsheets. It makes sense that I would contribute back bugfixes/additions etc that had anything to do with the general problem of accessing excel spreadsheets. This is to make an excel plugin for an application that already accepts XML, SQL db etc as alternative input mechanisms for the same data.

** Does this mean that the application is considered "derivative" even when it does not expand into the problem domain of importing excel sheets? **

share|improve this question

2 Answers 2

up vote 1 down vote accepted

From a copyright standpoint, a program that is statically linked to a library is a derived work of that library. The reasoning to reach that conclusion is as follows:

  • The (binary) code of the library is physically contained in the program when the library is statically linked. This makes the (binary) program a derived work of the (binary) library.
  • The (binary) code of the library is derived from the library source code by way of translation. This makes the binary code a derived work of the source code.

For dynamically linked libraries, it is less clear if a program that uses them is legally a derived work under copyright law. To my knowledge, even the law experts don't agree on that, but at least the copyleft proponents claim that it is.


What all of this means for using programs using a library in a program depends on the copyright license that the library is distributed under and the amount of legal risk that you are willing to take.

If the library is distributed with a copyleft license, then the license applies terms to the distribution of all derived works, including the binary programs that use the library and one of those terms is that source code must be provided.

If the library is distributed with a non-copyleft license, then the license only applies terms to the distribution of the library itself (and machine-translated derived works, like the binary version).

This means that you can typically use a non-copyleft library in a closed source project without problem. There is no need to disclose the source of the application using the library. Whether you need to distribute the source code for changes you made to the library depends on the exact license that the library is distributed under.
If you do the same with a copyleft library, then you had better seek good legal council to determine if you are or are not violating the license terms.

share|improve this answer
    
For non-copyleft library you don't have to release changes to anything. -1. –  Jan Hudec Mar 25 at 10:38
    
@JanHudec: That depends on the license used by the library. MIT and BSD indeed don't require it, but the Apache license does. I have edited my answer. –  Bart van Ingen Schenau Mar 25 at 10:48
    
Apache license does not require disclosing source either. Besides GPL, LGPL and AGPL, only other widespread licenses that do are Mozilla and Eclipse ones. Besides, requiring to disclose the source is the defining feature of "copyleft". –  Jan Hudec Mar 25 at 12:34
    
@JanHudec: I mixed up the Mozilla and Apache licenses in my memory (and failed to double check). But Mozilla is not copyleft, because it only requires source availability for the (modified) library and not for the entire application. The defining attribute of copyleft is not so much disclosure of the source, but disclosure of the source for the entire program of which only a part needs to be licensed with a copyleft license. –  Bart van Ingen Schenau Mar 25 at 13:22
    
True, LGPL and Mozilla are not copyleft as they don't extend beyond modifications to the work itself. –  Jan Hudec Mar 25 at 20:03

You asked for a definition: In copyright law, a derivative work is an expressive creation that includes major, copyright-protected elements of an original, previously created first work (the underlying work).

If you either (a) merge an OSS work into yours or (b) modify an OSS work and then distribute the result with yours, you are caught by this definition. That includes if you link in an OSS library, even if you have never seen the source code for it.

The GPL copy-left provisions can (probably) be avoided if you distribute your app and the library separately, and link at install or runtime. You'll need a notice.

The LGPL copy-left provisions can (probably) be avoided if you link your app to the library with no changes to the original source code. You'll still need a notice.

Edit: Ideally you find a permissive licence (eg MIT, BSD) but you may still need a notice.

If the library is tiny but you distribute it, you are bound by the terms of the licence. You simply cannot distribute other people's code without their licence, so the issue is around what other terms and conditions are in the licence that might cause you grief. The terms you care about are the requirement for a notice, and the copy-left, so that's what I've focussed on.

As I tell people repeatedly, if you make no money out of it and harm no-one then just do your best and don't worry too much. If you make money out of your product or services and/or if you may cause damage to someone, you must take competent legal advice. That won't protect you, but it will warn you how much it will cost to defend a suit.

share|improve this answer
    
Thank you for your answer. But didn't you just redefine my question to "at what point is a library a major element"? –  Tormod Mar 25 at 9:46
    
No, size doesn't matter if you distribute other people's code. If this is not the answer you expected, perhaps it's the question I thought it was. –  david.pfx Mar 25 at 9:57
    
What? I didn't understand any of those two sentences. The definition you posted uses the term "major element". Neither me of your source mentions "size". –  Tormod Mar 25 at 22:03
    
@Tormod: Copyright law has exemptions applying to the distribution of small parts of copyrighted works eg a few lines of source code. If you distribute the whole of a library, this is by definition a major element and you need a licence. It doesn't matter whether the library is tiny compared to your programs. I too am a commercial software provider and I was trying to give you a clearcut actionable answer. Since you gave a tick elsewhere, clearly this was not the answer you wanted. –  david.pfx Mar 26 at 5:01

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.