I am writing a program for data analysis as a part of a bigger bioinformatics pipeline. Source code of the program is my own and I licensed it under Apache 2.0 license. However, I need to include two GPL 2.0 licensed files: source codes for methods in R language: this one and this one. These are two mathematical methods which I use in my tool.

Can I set Apache 2.0 for my whole project? It seems most reasonable for me that my bioinformatics method is licensed as I want it and, if that would be necessary, I can add a copy of GPL 2.0 into the directory alongside the two files I use.

Actually, the matter is a little more complicated: the optim.c file is very slightly modified by me to suit my computations. Do I have to take any more actions besides adding a statments in the source code: "this file has been modified by me, for the original version see..."?


1 Answer 1


Can I set Apache 2.0 for my whole project?

No, you cannot.

The GPL license is a strong copyleft license that requires that the whole application must be made available under the terms of the GPL license. By choosing to copy those functions from the R language into your own project, you have pretty much slammed the door on yourself and you are effectively required to license your program under the GPL license, version 2 or 3.

Additionally, the Apache 2.0 and GPL 2.0 licenses are incompatible, which means that you are not allowed to distribute a project where parts of the code (possibly received via a library) are under the Apache 2.0 license and parts (again possibly in a library) are under the GPL 2.0 license. This means that if you also use a third-party library under the Apache 2.0 license, then you must use the GPLv3 license for your code.

  • Alright, thank you, but how far does the GPL 2.0 propagation go? I wrote some C++ code which includes these two methods and does a specific task (could be treated as a whole). The C++ code is just one step in a computational pipeline where other steps are other scripts/tools under distinct licenses (a whole pipeline is biologically-oriented). Finally, the whole repository consist of many such pipelines.
    – maciek
    Commented Nov 17, 2020 at 15:23
  • @maciek, it is generally accepted that the buck stops at the process boundary (if it executes in a different process, then it is not affected by the GPL), with some exceptions when intricate data structures are exchanged. If each step in your pipeline is a different executable, then they are likely to be considered independent under copyright law, with some caveat if complex data structures are exchanged between the steps. Commented Nov 17, 2020 at 15:32
  • 1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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