License Compatibility and Relicensing Compatibilidad entre licencias y relicenciamiento by Richard Stallman por Richard Stallman If you want to combine two free programs into one, or merge code from one into the other, this raises the question of whether their licenses allow combining them, or prohibit combining them.[1] Si se quiere combinar dos programas libres en uno o introducir código de un programa en otro, surge la cuestión de si sus licencias permiten combinarlos o lo prohíben.[1] There is no problem merging programs that have the same license, if it is a reasonably behaved license, as nearly all free licenses are.[2] No hay problema en combinar programas que tienen la misma licencia si la licencia que se comporta de manera razonable, como sucede en casi todas las licencias libres.[2] What then when the licenses are different? In general we say that several licenses are compatible if there is a way to merge code under those various licenses while complying with all of them. The result, often, is a program with parts under various different compatible licenses—but not always. Such combinability, or the absence of it, is a characteristic of a given set of licenses, and is not dependent on what order you mention them in. The set of licenses also controls which license is required for the combined program. Pero, ¿qué sucede cuando las licencias son diferentes? En general decimos que varias licencias son compatibles si es posible combinar código que se encuentra bajo esas diversas licencias, cumpliendo a la vez con todas ellas. El resultado, a menudo, es un programa que contiene partes de varias licencias compatibles diferentes, pero no siempre. Tal combinabilidad, o su imposibilidad, es una característica de un conjunto dado de licencias, y no depende del orden en que las licencias se mencionen en dicho conjunto. Es el conjunto de licencias el que determina también qué licencia requiere el programa combinado. We divide licenses into three classes: lax (also “permissive” or “pushover”), intermediate, and copyleft. A lax license does nothing to interfere with putting the code into proprietary software. A copyleft license prohibits that, by requiring all reuse to be in programs under the same license. An intermediate license puts some conditions on adding proprietary code but does not try to prohibit it. Dividimos las licencias en tres tipos: laxas (también «permisivas» o «endebles»), intermedias y copyleft. Una licencia laxa no hace nada para evitar que el código se integre en un progama privativo. Una licencia copyleft lo prohíbe, pues exige que toda reutilización se produzca en programas que estén bajo la misma licencia Una licencia intermedia pone ciertas condiciones para la adición de código privativo, pero no lo prohíbe. - "pushover". No sé bien cuál sería la palabra más adecuada para traducir esto. Viendo el siguiente párrafo también podría ser: transigente, anuente, complaciente, indulgente, poco severa... In general, lax permissive licenses (modified BSD, X11, Expat, Apache, Python, etc.) are compatible with each other. That's because they have no requirements about other code that is added to the program. They even permit putting the entire program (perhaps with changes) into a proprietary software product; thus, we call them “pushover licenses” because they can't say “no” when one user tries to deny freedom to others. En general, las licencias laxas y permisivas (BSD modificada, X11, Expat, Apache, Python, etc.) son compatibles entre sí. Esto es así porque no tienen requisitos con respecto a otro código que se añada al programa. Permiten incluso incluir el programa entero (quizá con cambios) en un producto de software privativo. por eso las llamamos «licencias endebles», porque no pueden decir «no» cuando un usuario trata de negar libertad a otros usuarios. In a combination of programs under lax licenses, each part carries the license it came with. When the code is merged to the point that the parts can't be distinguished any more, that merged code should carry all the licenses of the merged parts. Since all the licenses are lax anyway, this causes no practical problem except that the list of licenses gets long.[3] En una combinación de programas con licencias laxas, cada parte está bajo la licencia que ya tenía. Cuando el código se combina de tal manera que las partes son indistinguibles, ese código unido deberá estar bajo todas las licencias de las partes combinadas. En cualquier caso, dado que todas las licencias son laxas, esto no provoca problemas prácticos, salvo que la lista de licencias será más larga.[3] By the same token, lax licenses are usually compatible with any copyleft license. In the combined program, the parts that came in under lax licenses still carry them, and the combined program as a whole carries the copyleft license. One lax license, Apache 2.0, has patent clauses which are incompatible with GPL version 2; since I think those patent clauses are good, I made GPL version 3 compatible with them. Del mismo modo, las licencias laxas son habitualmente compatibles con cualquier licencia copyleft. En el programa combinado, las partes que tenían licencias laxas siguen teniéndolas, y el programa combinado, en su conjunto, tiene licencia copyleft. Una licencia laxa, la Apache 2.0, tiene cláusulas sobre patentes que son incompatibles con la versión 2 de la GPL; como pienso que estas cláusulas son buenas, hice que la versión 3 de la GPL sea compatible con ellas. The one important exception is the original BSD license, because of the “obnoxious advertising clause.” This condition required a specific notice in all advertising of any product containing any code released under the original BSD license. This was, and is, incompatible with all actual copyleft licenses. It was also a pain in the neck for every distro, as programs accumulated with similar but different advertising requirements. At one point, a BSD distro required over 70 different notices. La única excepción importante es la licencia BSD original, debido a la odiosa «cláusula publicitaria». Esta condición exige una nota específica en «todo» anuncio de «cualquier» producto que contenga código publicado bajo la licencia BSD original. Esto era, y es, incompatible con todas las licencias copyleft actuales. Era también un dolor de cabeza para cualquier distribución, que veía cómo se le acumulaban programas con requisitos publicitarios parecidos pero diferentes. Se llegaba al punto de que una distribución BSD exigía más de setenta notas diferentes. I mostly eliminated this problem by convincing a dean, Hal Varian, to arrange for UC Berkeley to publish the “modified BSD license” (without the advertising clause) and rerelease the code of the Berkeley System Distribution under that. Nowadays the original BSD license is (fortunately) rarely used, but we must still take care not to talk about “the” BSD license. Eliminé este problema casi por completo al convencer a un decano, Hal Varian, para que la Universidad de Berkeley publicara la «licencia BSD modificada» (sin la cláusula publicitaria) y volviera a publicar el código de la Berkeley System Distribution bajo ella. Hoy en día la licencia BSD original (afortunadamente) se utiliza poco, pero debemos seguir teniendo cuidado de no hablar de «la licencia BSD». In general, two different copyleft licenses are unavoidably incompatible unless they have explicit compatibility provisions. This is not due to a mistake in the details; it's inherent in the idea of copyleft. The idea of copyleft is that “Modified and extended versions must be under the same license.” If license A (on program P) says extended programs must be under license A, and license B (on program Q) says extended programs must be under license B, they have an irreconcilable disagreement; the license of the combined program which includes code from P plus code from Q would have to be A, and it would have to be B. En general, dos licencias copyleft son inevitablemente incompatibles a menos que tengan cláusulas explícitas de compatibilidad. Esto no se debe a un error en los detalles, es inherente a la idea de copyleft. La idea del copyleft es las «Versiones modificadas y ampliadas deben estar bajo la misma licencia». Si la licencia A (del programa P) dice que las versiones ampliadas deben estar bajo la licencia A, y la licencia B (del programa Q) dice que las versiones ampliadas deben estar bajo la licencia B, entonces la disconformidad es irreconciliable; la licencia del programa combinado que contiene código de P más código de Q debería ser A y debería ser B. This is why GPL version 2 is incompatible with GPL version 3; it could not be avoided. Likewise, the conditions of CC-BY-SA 4.0 would be inherently incompatible with those of CC-BY-SA 3.0, and the authors could not have avoided this. Esta es la razón de que la versión 2 de la GPL sea incompatible con la versión 3, era inevitable. Del mismo modo, las condiciones de la licencia CC-BY-SA 4.0 serían intrínsecamente incompatibles con las de la licencia CC-BY-SA 3.0, y sus autores no podrían haberlo evitado. There are two approaches for avoiding the incompatibility problem caused by different versions of copyleft licenses. Hay dos formas de evitar el problema de incompatibilidad debido a versiones diferentes de licencias copyleft. The FSF uses the approach of asking people to release programs under “GNU GPL version N or any later version.” This licensing is compatible with version N, and also with N+1 (because it offers version N+1 as an option). When you combine code under “GPL 3 or later” with code under “GPL 2 or later,” the license of the combination is their intersection, which is “GPL 3 or later.” La FSF utiliza el método de pedir a la gente que publique los programas bajo «la GPL de GNU versión N o cualquier versión posterior». Esta licencia es compatible con la versión N y también con la versión N+1 (Puesto que ofrece la versión N+1 opcionalmente). Cuando se combina código bajo la «GPL 3 o posterior» con código bajo la «GPL 2 o posterior», la licencia de esa combinación es su intersección, es decir, la «GPL 3 o posterior». We hope we will never need to make a GNU GPL version 4, but nothing is perfect and we can't assume we have anticipated all the issues. By releasing your code under GNU GPL 3 or later, you permit your code to upgrade to GNU GPL version 4 if we ever need one. Esperamos no tener que hacer nunca una GPL de GNU versión 4, pero nada es perfecto y no podemos dar por sentado que hemos previsto todas las cuestiones. Al publicar código bajo la GPL versión 3 o posterior, se permite que ese código se actualice a la versión 4, si alguna vez la necesitamos. The other approach is to make each version of the license explicitly allow upgrading to later versions. The Mozilla Foundation uses this approach, as does PHP. Creative Commons, uses it for CC-BY-SA: version 4.0 (the current version) explicitly permits any user to upgrade to later versions of CC-BY-SA for modified works. El otro método consiste en hacer que cada versión de la licencia permita explícitamente la actualización a versiones posteriores. La Fundación Mozilla utiliza este método, como así también PHP. Creative Commons lo utiliza para la licencia CC-BY-SA: la versión 4.0 (la versión actual) permite explícitamente a cualquier usuario actualizar las obras modificadas a versiones posteriores de CC-BY-SA. Only the GNU licenses give authors a choice about whether to permit upgrades to future license versions. When I wrote the first version of the GNU GPL, in 1989, I considered including a license upgrade option as is found now in CC licenses, but I thought it more correct to give that choice to each author. Thus, the author could release a program either under “GPL 1 only” or “GPL 1 or later.” Solo las licencias de GNU ofrecen a los autores elegir si permitir la actualización a versiones futuras de la licencia. Cuando escribí la primera versión de la GPL de GNU, en 1989, consideré incluir una opción de actualización de la licencia similar a la que ahora se encuentra en las licencias CC, pero pensé que era más correcto dejar esa elección a los autores. De ese modo el autor podría publicar un programa bajo la «GPL 1 sólo» o «GPL 1 o posterior». Since then, I have come to question the wisdom of that decision. Programs such as Linux, which allow only one GNU GPL version and reject license upgrades, cause practical incompatibility.[4] If we ever make a GPL version 4, perhaps we should include an upgrade clause that automatically permits relicensing to higher-numbered versions, 5 and up. Desde entonces me he venido cuestionando si esta decisión es oportuna. Programas como Linux, que permite una sola versión de la GPL y rechaza actualizaciones de la licencia, provocan incompatiblidad en la práctica.[4] Si alguna vez hacemos una versión 4 de la GPL, quizá debamos incluir una cláusula de actualización que permita automáticamente el relicenciamiento a versiones con número más elevado, 5 o superior. Some copyleft licenses allow cross-copyleft combinations with an explicit relicensing clause giving permission to put the code under a different copyleft license. For instance, the CeCILL gives explicit permission to relicense code to GNU GPL version 2 and later versions. If program P is under the CeCILL, and you want to combine it with program Q that's under GPL version 3 or later, the CeCILL says you can do that and put the combination or merged code under GPL version 3 or later. Algunas licencias copyleft permiten combinaciones cruzadas copyleft mediante una cláusula de relicenciamiento que da permiso para poner el código bajo una licencia copyleft diferente. Por ejemplo, la licencia CeCILL da explícitamente permiso para relicenciar código bajo la GPL versión 2 o versiones posteriores. Si el programa P está bajo la licencia CeCILL y se quiere combinar ese programa con el programa Q que está bajo la GPL versión 3 o posterior, la licencia CeCILL dice que se puede hacer así y poner la combinación o código combinado bajo la GPL versión 3 o posterior. Explicit relicensing permission is not the same thing as compatibility (though relicensing code can make it compatible with other code) and it is not symmetrical. For instance, the CeCILL gives explicit permission to relicense code to GNU GPL, but the GNU GPL does not permit relicensing to the CeCILL. Thus, you can't combine those two programs P and Q and distribute the combination under the CeCILL; that would violate the GPL in its use of program Q. The only permitted way to release that combined program is under the appropriate GPL version(s). Permiso de relicenciamiento explícito no es lo mismo que compatibilidad (aunque relicenciar un código puede hacerlo compatible con otro código) y no es simétrico. Por ejemplo, la licencia CeCILL da permiso explícito para relicenciar código a la GPL de GNU, pero la GPL de GNU no permite relicenciar a la CeCILL. Así, no se pueden combinar esos dos programas P y Q y distribuir la combinación bajo la licencia CeCILL; eso vulneraría la GPL del programa Q. La única forma permitida de publicar ese programa combinado es bajo la versión (o versiones) apropiada de la GPL. Likewise, CC BY-SA 4.0 explicitly permits relicensing modified versions to GNU GPL version 3, but GPL version 3 does not permit relicensing to CC BY-SA. This issue should never arise for software code; Creative Commons says its licenses are not meant for code, and says that the license to use for code is the GNU GPL. But there are other kinds of works, such as hardware designs or game art, where you might have occasion to merge material released under CC-BY-SA with material released under the GNU GPL. This can be done through CC BY-SA's explicit relicensing permission. De igual modo, la CC BY-SA 4.0 permite explícitamente relicenciar versiones modificadas a la versión 3 de la GPL, pero la versión 3 de la GPL no permite relicenciar a la CC BY-SA. Este problema nunca debería producirse con código informático; Creative Commons dice que sus licencias no están pensadas para código, y que la licencia que se debe utilizar para código es la GPL de GNU. Pero hay otros tipos de obras, como diseños de hardware o videojuegos, donde podría haber ocasión para combinar material publicado bajo la CC-BY-SA con material publicado bajo la GPL. Esto puede hacerse en virtud del permiso explícito de relicenciamiento de la CC BY-SA. Unfortunately, CC BY-SA 4.0 does not permit relicensing to future GPL versions. What you should do, when you relicense material under CC BY-SA 4.0 to the GPL, is specify yourself as a license version proxy to indicate whether future GPL versions have been authorized for that material. If someday there is a GPL version 4 and Creative Commons decides to allow relicensing from CC BY-SA to GPL version 4, you as proxy will be able to retroactively authorize use of that relicensed material under GPL version 4. (Alternatively, you can ask the authors of that material to give permission right away.) Desgraciadamente, la CC BY-SA 4.0 no permite relicenciar a versiones futuras de la GPL. Al relicenciar material bajo la CC BY-SA 4.0 a la GPL, lo que el licenciador debe hacer es designarse a sí mismo como persona autorizada para señalar si las versiones futuras de la GPL están permitidas para ese material. Si algún dia existe una versión 4 de la GPL y Creative Commons decide permitir el relicenciamiento de la CC BY-SA a la versión 4 de la GPL, el licenciador, como persona autorizada, podrá retroactivamente conceder permiso para la utilización bajo la versión 4 de la GPL de ese material relicenciado. (Alternativamente, se puede pedir a los autores de ese material que den permiso inmediatamente.) The ordinary GNU General Public License and the GNU Affero General Public License are two different copyleft licenses, so they are naturally incompatible. We have set up a special kind of explicit compatibility between them: you can include source code under the GNU GPL version 3 together with other source code under the GNU Affero GPL in a single combined program. This is permitted because both of those licenses explicitly say so, and the effect is that the GNU AGPL applies to the combined program. However, you can't simply relicense code from the GNU GPL (with or without “or later”) to the GNU Affero GPL, or vice versa; neither of these licenses gives permission for that. Note also that the GNU Affero GPL version 3 is not a “later version” of the ordinary GNU GPL version 2, because the GNU Affero GPL and the GNU GPL are two different series of licenses. La Licencia Pública General de GNU ordinaria y la Licencia Pública General Affero de GNU son dos licencias de copyleft diferentes y son incompatibles por naturaleza. Por eso hemos dispuesto un tipo especial de compatibilidad explícita entre ellas: se permite incluir código fuente bajo la GPL de GNU versión 3 junto con otro código fuente bajo la GPL Affero de GNU en un único programa combinado. Esto está permitido porque ambas licencias así lo dicen explícitamente, y la consecuendia es que la AGPL se aplica al progrmama combinado. No obstante, no se puede simplemente relicenciar código de la GPL de GNU (con o sin «o posterior) a la GPL Affero de GNU, o viceversa; ninguna de las dos licencias lo permite. Adviértase tambien que la GPL Affero de GNU versión 3 no es una «versión posterior» de la GPL de GNU versión 2, puesto que la GPL Affero de GNU y la GPL de GNU son dos series de licencias diferentes. The GNU Lesser General Public License, version 3, is really the GNU General Public License version 3 plus some added extra permissions. GPL version 3 (section 7) says you can always remove added permissions, and by doing so you get the same code under the ordinary GNU GPL version 3. If a program permits use under GNU LGPL version 3 or later, you can relicense it to GPL version 3 or later; for each future GPL version N (N > 3), we will make an LGPL version N which consists of the GPL version N plus added permissions. La Licencia Pública General Reducida de GNU (LGPL de GNU) versión 3 es en realidad la Licencia Pública General de GNU versión 3 con algunos permisos extra añadidos. La GPL versión 3 (sección 7) dice que siempres se pueden revocar los permisos añadidos, y al hacerlo se obtiene ese mismo código bajo la GPL de GNU ordinaria versión 3. Si un programa permite su uso bajo la LGPL de GNU versión 3 o posterior, es posible relicenciarlo a la GPL versión 3 o posterior. Para toda futura versión N de la GPL (N > 3), haremos una versión N de la LGPL consistente en GPL versión N más los permisos añadidos. As for GNU Lesser GPL version 2.1, that explicitly permits relicensing to GNU GPL version 2 or later. En cuanto a la GPL Reducida versión 2.1, esta permite explícitamente relicenciarla a la GPL versión 2 o posterior. Intermediate licenses are those which have substantive requirements on redistribution but are not copyleft licenses. Examples include the Eclipse Public License and the Mozilla Public License. Intermediate licenses tend to be incompatible with any copyleft licenses because their requirements don't permit the combined program to be under the copyleft license. The Mozilla Public License permits relicensing to the GNU GPL except when the code explicitly denies this permission. Licencias intermedias son aquellas que tienen requisitos sustanmciales con respecto a la redistribución pero no son licencias copyleft. Ejemplo de ello son la Licencia Pública Eclipse y la Licencia Pública Mozilla. Las licencias intermedias tienden a ser incompatibles con cualquier licencia copyleft, ya que sus requisitos no permiten que el programa combinado esté bajo la licencia copyleft. La Licencia Pública Mozilla permite relicenciar a la GPL de GNU, excepto cuando se deniege explícitamente este permiso. Finally, what about dual licensing?[5] A dual license is a disjunction: it means that the same program carries a choice of two or more different licenses. For instance, older versions of Perl carried a dual license: the disjunction of the Artistic License and the GNU General Public License. This meant that each user could choose to use and redistribute Perl under one license or the other, or under both in disjunction like the Perl release itself. A disjunction is compatible with a set of other licenses if any one of the license choices in the disjunction is compatible with that set. Por último, ¿qué sucede con las licencias duales?[5] Una licencia dual supone una disyuntiva: significa que un mismo programa ofrece una elección entre dos o más licencias diferentes. Por ejemplo, versiones antiguas de Perl llevaban una licencia dual: presentaban la disyuntiva entre la Licencia Artística y la Licencia Pública General de GNU. Esto significa que los usuarios podían elegir utilizar y redistribuir Perl bajo una licencia o la otra, o bajo ambas a elegir, como la propia edición de Perl. Una disyuntiva es compatible con un conjunto de licencias diferentes si alguna de las licencias presentes en la disyuntiva es compatible con ese conjunto. When you choose a license for your code, please choose GNU GPL version 3 or later, or some license compatible with that. This is the way to make your code combinable with nearly all the corpus of free software. Choosing GPL or AGPL, version 3 or later, will also do the utmost to defend freedom for all users of all versions of your code. Cuando elija una licencia para su código, elija la GPL de GNU versión 3 o posterior, o alguna licencia compatible con ella. Esta es la manera de hacer que su código sea combinable con casi todo el software libre. Elegir la GPL o la AGPL, versión 3 o posterior, también será lo óptimo para defender la libertad de todos los usuarios de todas las versiones de su código. Combining code Cómo combinar código When a set of licenses are compatible, that means you can legally combine or merge a number of programs each licensed under one of those licenses. How, then, is the combined program licensed? Cuando un conjunto de licencias son compatibles, eso significa que es legal combinar o mezclar programas cada uno de los cuales está bajo una de esas licencias. ¿Cómo licenciar entonces el programa combinado? Each free software license says you must keep the license with the code that is covered by it. So in a strict sense, the licensing of the combined program includes the licenses of all its parts. However, sometimes you want a summary answer to the question of how the combined program is licensed. Which licenses does someone using the combined program need to pay attention to? Toda licencia de software libre dice que el código cubierto por ella debe conservar dicha licencia. De modo que, en sentido estricto, la licencia del programa combinado incluye las licencias de todas sus partes. no obstante, a veces queremos una respuesta «simple» a la pregunta de cuál es la licencia del programa combinado. ¿A qué licencias tiene que prestar atención alguien que utiliza el programa combinado? To compute that, you start with a list of all the pertinent licenses. Then you can delete from the list any license which is subsumed by another in the list. Para determinarlo hay que partir de una lista de todas las licencias pertinentes. Luego se puede borrar de la lista toda licencia que esté subsumida por otra de la lista. We say that a license A subsumes license B when compliance with license A implies compliance with license B. Decimos que una licencia A subsume la licencia B cuando la observancia de la licencia A implica la observancia de la licencia B. For instance, the GNU GPL version N and the GNU Affero GPL version N both subsume the GNU Lesser GPL version N, and all three of those subsume the GNU Lesser GPL version 2.1. Por ejemplo, la GPL de GNU versión N y la GPL Affero de GNU versión N subsumen la GPL Reducida de GNU versión N, y todas y cada una de ellas subsumen la GPL Reducida de GNU versión 2.1. Any GNU license, version N, subsumes the Apache 2.0 license provided N is at least 3. Toda licencia de GNU, versión N, subsumen la licencia Apache 2.0, siempre que N no sea menor de 3. The GNU GPL, version N, subsumes all versions of the Mozilla Public License that are compatible with it. La GPL de GNU, versión N, subsume todas las versiones de la Licencia Pública Mozilla que son compatibles con ella. The Apache 2.0 license subsumes the BSD, Expat, X11, ISC and CC-0 licenses. BSD 3 clause subsumes BSD 2 clause. The BSD licenses subsume the Expat, X11 and ISC licenses and CC0. XXXXThe Apache 2.0 license subsumes the BSD, Expat, X11, ISC and CC-0 licenses. BSD 3 clause subsumes BSD 2 clause. The BSD licenses subsume the Expat, X11 and ISC licenses and CC0. This is not meant to be a complete list, but if we are informed of other cases worth mentioning, we will add them. When some license is subsumed, you still need to include a copy of it with all distribution of the combined program. Footnotes 1. It is not inconceivable that other legal issues might arise about a specific combination of programs, issues not related to the copyright licenses of the programs to be combined. We discuss only the implications of the licenses themselves. 2. The main license in actual use that isn't reasonably behaved is the license of TeX: if two programs are licensed just the way TeX is, there is no authorized way to distribute a merged version of them. The TeX license permits distribution of a modified version only in the form of the original version plus a differences file. If A and B are separately released that way, then merged, distributing the merged program as A plus a change file violates the license of B. Distributing this as B plus a change file violates the license of A. Distributing this in any other way violates both licenses. It is no coincidence that TeX was released in 1982: our community has learned, since then, to write reasonably behaved licenses. 3. When distributing in source code form, it is usually sufficient to leave the license notices in the source code as they stand; extra license notice requirements typically only come up for lax licenses when distributing binaries without the source code. 4. In addition, GPL version 2 still allows binaries to be made nonfree by hardware that rejects all but special signed binaries, and still does not allow distribution of binaries by torrent. We fixed those problems, and others, in version 3, but we can't change version 2. 5. Some use the term “dual licensing” to refer to selling exceptions, but that is a misnomer. See Selling Exceptions. Note that if the program on which the license is sold includes any code that is not in the free (libre) release, that's not selling exceptions, that's nonfree software.