I am interested in creating a fork of an abandoned software. The software which is no longer maintained is release under the terms of Apache 2 license. Am I allowed to create my patches under a less permissive license and so, gradually replace the whole software license?

According to wikipedia:

The Apache Software Foundation and the Free Software Foundation agree that the Apache License 2.0 is a free software license, compatible with the GNU General Public License (GPL) version 3,[7] meaning that code under GPLv3 and Apache License 2.0 can be combined, as long as the resulting software is licensed under the GPLv3.[8]

I can do with it derivatives ... So here is how I interpret this.

If my code is written in Python, can I re-used the abandoned software as a module (released under APACHE-2) and add my wrapper under GPL-3?

Also, the APACHE-2 license says:

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License

So why not AGPL?

Is there a difference in the case the abandonware is licensed under MIT?

  • I'm slightly confused. The question title speaks of adding AGPL patches to Apache2-licensed software, but in the question body you ask about replacing the existing licence with a "more permissive license". AGPL is generally seen a less permissive (ie, more restrictive) licence than Apache2. Do you perchance mean "less permissive license"? – MadHatter Aug 29 '20 at 6:34
  • Yes. I do want a less permissive license. Also, I update the question specifically to explain that the MIT license applies to the old software. – Oz123 Aug 29 '20 at 8:01

You have found unmaintained software, distributed under Apache2. You wish to update it, and to distribute the modified, derivative work under GPLv3/AGPLv3 (you are unclear as to which). You want to know if this is permitted.

My belief, about which I have written elsewhere, is that one can take a piece of existing software under licence A (which permits re-distribution, and modified versions), and modify and release it under the more onerous combined requirements of licences A and B, provided that nothing in A forbids adding the extra requirements of B, and nothing in B forbids the requirements already applied by A. Note that this isn't dual-licensing, where the user can choose which licence applies; this is having both sets of requirements apply at the same time.

GPLv3 explicitly forbids additional requirements over and above its own, so the above para is only satisfied for licences A and GPLv3 if the requirements of A are a pure subset of the requirements of GPLv3. This is also referred to as licence A being compatible with GPLv3. Apache2 is such a licence, as is MIT.

So my understanding (which is not universally held; see the linked post on law.se) is that you can make a derivative work, and release it under GPLv3, or AGPLv3, provided that you also meet the requirements of s4 of the Apache licence (include a copy of the licence text and any pre-existing NOTICE file, maintain existing copyright statements, and make it clear which files have been modified). The same analysis applies if A=MIT, provided you meet the even-less-onerous requirements of MIT.

I urge you not to think about this in terms of applying individual "GPLv3 patch files" until the work is completely replaced, as you apparently do in para one of your question. Unless you're actually distributing the work as original+patches, this encourages a "coloured bricks" view of copyright, which I think is an unhelpful view. Instead, as soon as you make changes to the codebase, the entire thing is a derivative work in copyright terms, and can be distributed on any permitted set of requirements.


If my code is written in Python, can I re-used the abandoned software as a module (released under APACHE-2) and add my wrapper under GPL-3?

As the two licenses are compatible, you can indeed use the Apache-2 licensed code as a module in your GPLv3 licensed code.

The same holds true when you use the AGPLv3 instead of the GPLv3 or when the third-party module uses the MIT license.

Note that the Apache or MIT code doesn't even have to be abandoned for this. The licenses allow this even while the other project is still actively being developed.

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.