← Licencias

Licencia Apache 2.0: permisiva, con protección de patentes

Apache 2.0 permite usar y cerrar el código como la MIT, pero agrega una licencia explícita de patentes y reglas sobre avisos y cambios. Qué exige en la práctica.

En este artículo
  1. Por qué existe si ya estaba la MIT
  2. La cláusula de patentes
  3. Qué exige al redistribuir
  4. Qué no concede
  5. Compatibilidad con la GPL
  6. Apache 2.0 frente a MIT
  7. Cuándo elegir Apache 2.0
  8. Cómo aplicarla
  9. Preguntas frecuentes

La Licencia Apache 2.0 es una licencia permisiva publicada por la Apache Software Foundation en enero de 2004. Como la MIT, permite usar, modificar, distribuir y vender el código, incluso dentro de software cerrado. Se diferencia en dos puntos: concede una licencia explícita sobre las patentes de quienes contribuyen y pide documentar los cambios y conservar un archivo de avisos llamado NOTICE.

Por qué existe si ya estaba la MIT

La licencia MIT es breve y no dice nada sobre patentes. Para una empresa grande eso es un riesgo: un contribuyente podría aportar código a un proyecto y después demandar por patentes a quienes lo usan. Apache 2.0 cierra esa puerta por escrito, y por eso es la licencia preferida de muchos proyectos con respaldo corporativo: Kubernetes, TensorFlow, Android (la mayor parte del espacio de usuario), Swift y la mayoría de los proyectos de la propia fundación Apache.

La cláusula de patentes

La sección 3 de la licencia dice, en resumen:

  • Cada contribuyente concede a todos los usuarios una licencia gratuita, mundial e irrevocable sobre sus patentes que cubran su contribución.
  • Si un usuario demanda alegando que el proyecto infringe una patente, pierde automáticamente las licencias de patentes que recibió por ese proyecto.

La segunda parte se conoce como cláusula de represalia. Funciona como disuasión: quien demanda por patentes pierde su propio derecho a usar el software sin riesgo.

Qué exige al redistribuir

Si distribuyes el código, original o modificado, tienes que:

  1. Entregar una copia de la licencia a quien recibe el código.
  2. Marcar los archivos modificados con un aviso visible de que los cambiaste.
  3. Conservar los avisos de copyright, patentes, marcas y atribución del código original.
  4. Incluir el archivo NOTICE, si el proyecto original tiene uno, en tu distribución. Puedes agregarle tus propios avisos, pero no quitar los existentes.

Tu propio código, o tus modificaciones, pueden ir bajo otra licencia, incluso cerrada, siempre que cumplas lo anterior para la parte original.

Qué no concede

Marcas. La sección 6 aclara que la licencia no da derecho a usar los nombres, logos o marcas del proyecto, salvo para describir de dónde viene el código. Puedes distribuir un fork de un proyecto Apache, pero no presentarlo con su nombre como si fuera el original.

Garantía. Igual que casi todas las licencias libres, el software se entrega sin garantía.

Compatibilidad con la GPL

Este punto genera confusión. Según la Free Software Foundation:

  • Apache 2.0 es compatible con la GPL v3: se puede incluir código Apache 2.0 en un proyecto GPL v3, y el conjunto se distribuye bajo GPL v3.
  • Apache 2.0 no es compatible con la GPL v2, porque la cláusula de represalia de patentes es una restricción que la v2 no admite.

En la práctica, un proyecto “GPL v2 o posterior” puede incorporar código Apache 2.0 usando la v3. Uno “solo GPL v2”, como el núcleo Linux, no puede.

Apache 2.0 frente a MIT

MIT Apache 2.0
Longitud 3 párrafos 9 secciones
Uso comercial y código cerrado Sí Sí
Licencia explícita de patentes No Sí, con cláusula de represalia
Marcar archivos modificados No Sí
Archivo NOTICE No Sí, si existe
Compatible con GPL v3 Sí Sí
Compatible con GPL v2 Sí No

Cuándo elegir Apache 2.0

  • Quieres una licencia permisiva y te importa la protección frente a demandas de patentes.
  • Esperas contribuciones de empresas, que suelen sentirse más cómodas con Apache 2.0.
  • No necesitas compatibilidad con proyectos “solo GPL v2”.

Si prefieres algo más simple, la MIT basta. Si quieres que las versiones distribuidas sigan siendo libres, mira la GPL. El resumen por objetivos está en qué licencia elegir.

Cómo aplicarla

  1. Copia el texto completo en un archivo LICENSE en la raíz del repositorio.
  2. Si quieres avisos de atribución, crea un archivo NOTICE breve con el nombre del proyecto y el titular.
  3. Agrega el encabezado recomendado por la fundación o el identificador SPDX en cada archivo:
# SPDX-License-Identifier: Apache-2.0

Preguntas frecuentes

¿La licencia Apache 2.0 permite el uso comercial? Sí. Permite usar, modificar, distribuir y vender el código, incluso dentro de software cerrado, siempre que conserves la licencia y los avisos.

¿Apache 2.0 es una licencia copyleft? No. Es una licencia permisiva: tus modificaciones y tu propio código pueden ir bajo otra licencia, incluso cerrada. Si buscas copyleft, mira la GPL.

¿Qué es el archivo NOTICE en la licencia Apache? Es un archivo con los avisos de atribución del proyecto. Si el proyecto original lo tiene, debes incluirlo al redistribuir; puedes agregarle tus avisos, pero no quitar los existentes.

¿Puedo usar código Apache 2.0 en un proyecto GPL? Sí, si el proyecto es GPL v3: el conjunto se distribuye bajo GPL v3. No es compatible con proyectos que son solo GPL v2, como el núcleo Linux.

Fuentes