8

Here's the scenario. Alice crafted a compression library and published it under GPL. Bob crafted a font processing library which uses pieces of code from Alice's library and ... let's call it overly optimistically ... published his combined work under MIT license. This is a problem for people who want to use Bob's library because having Bob's library means they will also have pieces of Alice's code and would have to release their source code.

Suppose Alice's code is not that precious and can be replaced with some new code (perhaps using another MIT-licensed library). Carol is willing to take Bob's (labeled as MIT-licensed) code and rewrite it such that it no longer contains Alice's code and then publish the result under MIT license and use the result under MIT license as well.

Does Carol's rework of Bob's code result in code free of GPL publication requirements?

5

The problem is in:

rewrite it such that it no longer contains Alice's code

It really depends on how how such rewrite is done. Translations are considered derived work, also in the case there there no common "words" between the two implementations. So a (strict) rewrite is a derivation of original code, but a reimplementation is not (an implementation not inspired from original code and not copying the internal structure, API, etc.).

Note: API could be copyrightable (Oracle vs. Google on Java), and this will complicate things, but a simple interface with compress() and decompress() should not be a problem.

3

Note: consider this answer a work-in-progress. After nice debates in comments and chat I see there is needing to provide references and explanations to many assertions.


Short answer: Carol has the right to do it and new font processing library can have a single MIT license.

Little bit longer answer: according to copyright law (note that even if GPL is a contract this distinction is - almost always - not applicable). Knowledge (seeing original GPL source code) does not make your code derivative work. It's an absolute undebatable point; ad absurdum imagine if after working for company X you can't write similar software for company Y because you saw X's source code. That's exactly your market value for company Y and any legal action against this is a severe infringement of labour's rights (of course patented - not just copyrighted - code can't be rewritten).

In more simple terms, imagine you're a CS student in University and you extensively study Linux (or Minix) source code in your OS design course. You finish university and you decide you want to write your own (even closed-source!) kernel. For sure you will use concepts you learned studying Linux source code (concepts, not code). If those concepts are not patented (and I can't think about any patented code in Linux) then what you're doing is perfectly (and obviously) legal.

Easy and reasonable? There are few obscure points (and jurisdiction matters)...

Under Trade-related Aspects of Intellectual Property Rights (TRIPS) agreement member states have to ensure that certain minimum standards are implemented into their national laws. Article 9(2) states that:

Copyright protection shall extend to expressions and not to ideas, procedures, methods of operation or mathematical concepts as such."

This is similar to US point of view about copyright (even if even in US there have been cases against this rule) where same concept is described as:

In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work.

The EU approach (in directive 91/250/EEC) is that a computer program is original if it is the author's own intellectual creation. The work must not be trivial – the author must have expended some skill, labour, judgement, knowledge in creating it. Note that knowledge is associated to author and it's not a result because it's the important point of above paragraphs. US copyright law defines "derivative work" as:

“derivative work” is a work based upon one or more pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which a work may be recast, transformed, or adapted.

As I said there are however obscure points. For example Pumfrey J. (UK High Court judge) in an April 1999 case (CFI vs. Tradition) said:

It seems to be generally accepted that the "architecture" of a computer program is capable of protection if a substantial part of the programmer's skill, labour and judgement went into it. In this context, "architecture" is a vague and ambiguous term. It may be used to refer to the overall structure of the system at a very high level of abstraction...The term "architecture" may also be used to describe "program structure."

This decision has very big implications because (unless otherwise stated) copyright owner is employer (and not employee). It seems pretty unreasonable (to me) and against traditional concept of copyright, for example another 1992 UK sentence (John Richardson Computers) decided in the other way. It's still a controversial topic because it's against traditional copyright concept (developed in US courts, with few exceptions). Eric S. Freibrun well expressed this point:

While a patent can protect the novel ideas embodied in a software program, a copyright cannot. Copyright protection extends to the particular form in which an idea is expressed. In the case of software, copyright law would protect the source and object code, as well as certain unique original elements of the user interface [...] In contrast with patents, independent development of a copyrighted work is a defense to an allegation of copyright infringement. Imagine, though, how unlikely it would be for the same thousands of lines of code to be created independently by one not engaged in unauthorized copying. Unlike patents, copyright law affords no protection to the ideas underlying the program. Ideas and concepts are fair game for competitors to the extent they are not protected by patents or trade secrets.

Please note that Freibrun introduced a fundamental point: trade secrets. They're (one of) the reason IBM won its copyright legal battle.

Because judgment is so often discretionary (at least in some countries) we have tools like CRD (but big companies can still push you in endless expensive legal actions). The point is that it has to be judged case-by-case in the light of the skill and labour in design and coding of source code to be copied. It is not determined by its importance or size nor by the amount of use in the system.

In short the question to answer is: "can you write such code by yourself even if you didn't see (this doesn't imply you really didn't) Alice's code?" If answer is yes (no matters code quality) then it can't be considered copyright infringement even when law is unclear (like in UK or in US when big companies are involved.) If you used ideas end methods then - in some countries - it may be controversial.

  • "It's an absolute undebatable point" all those many companies over the years that have paid for clean room re-implementations to avoid exactly that problem - of re-implementation without contamination by the earlier code base - were utterly wasting their money, then? – MadHatter supports Monica Mar 10 '16 at 8:57
  • 1
    MadHatter, Contamination isn't right wording here. You need clean room design if you have to demonstrate you didn't copy knowledge from closed-source code. When you have knowledge (because of crd or because of free open inspection of source code) then you can write your own code (free from copyright, if not patented). Difference should be clear! Did you work from (let's say) Microsoft on Windows Kernel team. Are you free to use knowledge you gained in your own project (even open source) if you don't infringe any patent? Obviously yes. – Adriano Repetti Mar 10 '16 at 9:24
  • It's hard to make a small peace of code obviously different (that's why for copyright law speaks about it) but it's trivial for a larger code base (note emphasis on word copy, unless patented knowledge isn't protected by copyright law) because it's basic market value of any developer, mind this. That's why those absurd legal battles nowadays moved to patents... – Adriano Repetti Mar 10 '16 at 9:31
  • The reason you don't want to copy knowledge from code is because it's covered by copyright, and that isn't inherent to closed-source code. Inspection of the source code base risks the re-use of copyrightable concepts in the the writing of the replacement; if the license on the source code base doesn't permit that (which closed-source doesn't, and GPLed code only does if the resulting code is GPLed), you would need to avoid that, hence clean rooms. As a passing note, making code obviously different isn't enough to avoid copyright infringement; it must be completely different, except where.. – MadHatter supports Monica Mar 10 '16 at 9:42
  • 1
    You're talking about PATENTING. Copyright isn't about that. Legally speaking there is an enormous difference. Do you study Minix in university? Does it tie you to its license if you write your own kernel? – Adriano Repetti Mar 10 '16 at 9:54
1

If the GPL code is a clean, defined, module, and you remove every scrap of it, and replace it by some unrelated code, you're fine. People do it every day.

-1

Alice sues Bob for violating the terms of the GPL.

I am assuming here that Bob is linking to Alice's GPL library and using it for his project, but has decided to keep his own project under the MIT. The problem here is that the Free Software Foundation believes that linking to a GPL library is enough to make your project a "derivative work" and thus will require you to place your own project under the GPL.

Now, that is the Free Software Foundation's own interpretation of the GPL, and you could argue that this interpretation has no basis (as the law is silent on whether linking actually causes a project to be a "derivative work"). But that's why you need a court case to resolve the issue.

If Alice wins the lawsuit, then Bob has to relicense his code under the GPL, and we deal with the repercussions of this.

If Bob wins the lawsuit, then Bob is free to keep his project licensed under the MIT. This is clearly uncharted legal territory here (as it opens a major loophole that could render the GPL toothless), but it may render Carol's attempt to rework the project unnecessary. If Bob is able to still use GPL code while keeping the MIT License, then anyone (including closed-source codebases) can use GPL code in their project. There's no reason to remove the GPL code then.

I would argue that if Bob wants to actually produce permissive software without taking on unnecessary legal risk, he should either find a different compression library under a more permissive license OR do a clean-room implementation of Alice's code.

  • No one starts by suing. You start with a demand letter. And a sensible person in this situation reacts to the demand letter by agreeing to remove the GPL code on a mutually agreeable schedule. And 'remove' means a 'clean enough' replacement, and 'clean enough' requires a lawyer. – bmargulies Mar 10 '16 at 19:19
  • Fair enough. I probably stressed the "suing" part to draw attention o the fact that the Bob was attempting to do something that the GPL may prohibit, but it might have been too sensational. A demand letter is more probable. – Left SE On 10_6_19 Mar 11 '16 at 0:37
  • 1
    The third paragraph is plain wrong. Alice has to sue under the national copyright act, and "relicensing under the GPL" simply is not a legal remedy. Alice will need to sue for damages and possibly an injunction to further stop distribution altogether. – MSalters Mar 22 '16 at 12:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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