Blog - Jorge Rodriguez Flores
← Volver al blog

DMCA y Software: Cómo Proteger tu Código y Responder a Notificaciones de Copyright

dmca copyright software propiedad intelectual seguridad desarrollo
Compartir: X / Twitter LinkedIn
DMCA y Software: Cómo Proteger tu Código y Responder a Notificaciones de Copyright

La Digital Millennium Copyright Act (DMCA) es una ley de copyright de Estados Unidos promulgada en 1998 que tiene un impacto directo y profundo en el mundo del software: desde el código que publicas en GitHub hasta las APIs que consumes, pasando por los proyectos open source que mantienes. Entender la DMCA no es solo responsabilidad de los abogados — es una competencia esencial para cualquier desarrollador que publique, distribuya o consuma software en internet.

¿Qué es la DMCA y por qué importa a los Desarrolladores?

La DMCA implementa dos tratados de la OMPI (Organización Mundial de la Propiedad Intelectual) y modernizó la ley de copyright estadounidense para la era digital. Para los desarrolladores, tiene dos implicaciones principales:

  • Protección antipiratería: Prohíbe eludir medidas tecnológicas de protección (DRM, licencias, etc.) aplicadas al software.
  • Safe Harbor: Protege a plataformas como GitHub, npm, PyPI o cualquier hosting de responsabilidad por contenido infractor subido por usuarios, siempre que respondan diligentemente a las notificaciones.

Aunque es una ley estadounidense, su alcance es global en la práctica: GitHub, npm, Google Play, App Store y la mayoría de plataformas de distribución de software operan bajo jurisdicción estadounidense o adoptan la DMCA como estándar para sus políticas de contenido.

Tipos de Notificaciones DMCA en el Ecosistema de Software

Takedown Notice (Notificación de Retirada)

Es la acción más común. El titular de derechos envía una notificación formal a una plataforma (GitHub, npm, un CDN) exigiendo la retirada de contenido que infringe su copyright. Los casos más frecuentes en el mundo del software:

  • Código fuente propietario publicado sin autorización
  • Herramientas de bypass de DRM (ej. DeCSS para DVDs)
  • Clones de software comercial con código copiado
  • Keys de activación o generadores de licencias
  • Assets protegidos (sprites, música, fuentes) incluidos en repositorios
Anatomía de una DMCA Takedown Notice válida:

1. Identificación del titular de derechos
   └─ Nombre, empresa, datos de contacto

2. Identificación del material infractor
   └─ URLs específicas del repositorio/archivo

3. Identificación del material original protegido
   └─ Enlace o descripción del trabajo original

4. Declaración de buena fe
   └─ "Creo de buena fe que el uso no está autorizado"

5. Declaración de exactitud bajo pena de perjurio
   └─ Firma electrónica o física del titular/representante

NOTA: Una notificación incompleta puede ser rechazada.
NOTA: Declaraciones falsas tienen consecuencias legales.

Counter-Notice (Contra-Notificación)

Si tu contenido fue retirado por error o crees que el takedown es ilegítimo, tienes derecho a presentar una contra-notificación. La plataforma tiene la obligación de restaurar el contenido en 10-14 días hábiles si el denunciante no inicia acción legal.

Casos válidos para una Counter-Notice:

✓ El contenido es tuyo — eres el autor original
✓ Uso justo (fair use) — parodia, comentario, educación
✓ Licencia válida — tienes permiso del titular
✓ Dominio público — el material no está protegido
✓ Abuso del proceso — takedown competitivo o de mala fe

Casos en que NO deberías presentar counter-notice:
✗ Efectivamente usaste código ajeno sin licencia
✗ Incluiste assets propietarios sin permiso
✗ Redistribuiste software comercial sin autorización

La DMCA y GitHub: El Caso Más Relevante para Desarrolladores

GitHub es la plataforma que más DMCA takedowns procesa en el mundo del software. Tiene un proceso transparente y publica todos los avisos recibidos en github.com/github/dmca. Algunos casos históricos que todo desarrollador debería conocer:

Caso youtube-dl (2020)

La RIAA envió un takedown contra el repositorio youtube-dl, una herramienta de descarga de video, alegando que eludía medidas de protección tecnológica de YouTube. GitHub inicialmente retiró el repositorio, pero tras revisión legal — y gracias a la Electronic Frontier Foundation (EFF) — lo restauró argumentando que la herramienta tenía usos legítimos sustanciales.

Este caso estableció un precedente importante: las herramientas de propósito general no pueden ser eliminadas solo porque algunos usuarios las usen para infringir copyright.

Caso Popcorn Time y similares

Aplicaciones de streaming de contenido pirateado han sido objeto de múltiples takedowns exitosos porque su propósito principal era facilitar la infracción, a diferencia de youtube-dl que descargaba contenido público legítimo.

Código generado por IA y DMCA

En 2025, ha emergido una nueva categoría de disputas: código generado por modelos de IA entrenados con repositorios protegidos. Aunque la jurisprudencia aún está en desarrollo, los puntos clave son:

  • El código generado por IA que reproduce verbatim fragmentos de código propietario podría infringir copyright
  • Las demandas colectivas contra GitHub Copilot, OpenAI y otros modelos están activas en 2025
  • La recomendación práctica: revisa el código generado por IA antes de usarlo en proyectos comerciales, especialmente fragmentos de más de 20 líneas

Protección DMCA para tu Propio Software

Registro de copyright

En Estados Unidos, el copyright existe automáticamente en el momento de crear la obra, pero registrarlo en la US Copyright Office otorga ventajas significativas en caso de litigio:

  • Presunción legal de validez del copyright
  • Derecho a daños estatutarios (hasta $150,000 por infracción dolosa) sin necesidad de probar daños reales
  • Posibilidad de recuperar honorarios legales
# Registro en copyright.gov (proceso simplificado para código fuente)
# Costo: ~$65 USD para registro electrónico
# Proceso:
# 1. Crear cuenta en copyright.gov
# 2. Seleccionar "Computer Program" como tipo de obra
# 3. Depositar código fuente (puede enviarse en formato digital)
# 4. Para software en desarrollo activo: registrar versiones mayores

# En la práctica, para proyectos open source,
# el registro formal es menos crítico que:
# - Commits con fecha en repositorios públicos
# - Licencia clara en cada archivo
# - CHANGELOG con historial de cambios

Licencias como herramienta de protección

La licencia de tu software es tu principal herramienta legal. Define exactamente qué pueden y no pueden hacer otros con tu código:

Espectro de licencias de software:

← Más restrictivo                    Más permisivo →

Propietary  BSL  AGPL  GPL  LGPL  MPL  Apache  MIT  Public Domain
    │         │    │    │     │    │      │      │       │
    │         │    │    │     │    │      │      │    Sin restricciones
    │         │    │    │     │    │      │    Attribution only
    │         │    │    │     │    │    Attribution + Patent
    │         │    │    │     │  Weak copyleft (solo archivos)
    │         │    │    │   Weak copyleft (linking OK)
    │         │    │  Strong copyleft (derivados = GPL)
    │         │  Copyleft + red flag para SaaS
    │       Business Source (convierte a OSS tras N años)
  Todos los derechos reservados

Implementar avisos de copyright correctamente

# Al inicio de cada archivo fuente:
# Copyright (c) 2025 Tu Nombre / Tu Empresa
# SPDX-License-Identifier: MIT
#
# Este archivo es parte de [nombre del proyecto].
# Licensed under the MIT License. See LICENSE file for details.

# En Python, usa SPDX identifiers para máxima claridad:
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: GPL-3.0-only
# SPDX-License-Identifier: LGPL-2.1-or-later
// Para JavaScript/TypeScript:
/**
 * @license
 * Copyright (c) 2025 Tu Empresa S.A.
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0;
 * you may not use this file except in compliance with the License.
 */

Proceso para Enviar un DMCA Takedown: Guía Paso a Paso

Si encuentras código tuyo publicado sin autorización, este es el proceso para actuar:

Paso 1: Documentar la infracción

# Capturar evidencia antes de que el infractor la elimine
# Tomar screenshots con fecha
# Descargar el repositorio infractor
git clone https://github.com/infractor/repo-sospechoso

# Comparar con tu código original
diff -r mi-proyecto/ repo-sospechoso/ > diferencias.txt

# Herramientas de detección de plagio de código:
# - MOSS (Measure Of Software Similarity) — stanford.edu/~aiken/moss/
# - JPlag — jplag.github.io
# - Codequiry — codequiry.com (comercial)

Paso 2: Redactar la notificación

Para GitHub específicamente, la notificación debe enviarse a copyright@github.com o través del formulario web. GitHub requiere:

DMCA Takedown Notice — Template para GitHub

Fecha: [fecha]
Para: GitHub, Inc. (copyright@github.com)

1. TITULAR DE DERECHOS:
   Nombre: [tu nombre o empresa]
   Email: [email de contacto]
   Cargo: [si actúas en nombre de empresa]

2. TRABAJO ORIGINAL PROTEGIDO:
   Descripción: [descripción de tu software]
   URL/Repositorio original: [enlace a tu repositorio]
   Fecha de creación: [cuándo lo creaste]

3. CONTENIDO INFRACTOR:
   URL del repositorio: https://github.com/usuario/repo
   Archivos específicos:
   - https://github.com/usuario/repo/blob/main/archivo1.py
   - https://github.com/usuario/repo/blob/main/archivo2.js

4. DECLARACIÓN DE BUENA FE:
   Declaro de buena fe que el uso del material descrito arriba
   no está autorizado por el titular de los derechos, su agente,
   ni por la ley.

5. DECLARACIÓN DE EXACTITUD:
   Bajo pena de perjurio, la información de esta notificación
   es exacta y soy el titular/representante autorizado.

Firma: [nombre completo]
Fecha: [fecha]

Paso 3: Seguimiento

GitHub tiene la obligación legal de actuar en un tiempo razonable (típicamente 24-72 horas para casos claros). Puedes hacer seguimiento en github.com/github/dmca donde publican todas las notificaciones.

Sección 1201: La Parte Más Polémica para Desarrolladores

La Sección 1201 de la DMCA prohíbe eludir medidas tecnológicas de protección (TPMs). Esta sección ha sido la más controversial en el mundo del software porque puede criminalizar investigación legítima de seguridad y actividades de interoperabilidad.

¿Qué prohíbe la Sección 1201?

  • Saltarse el DRM de software (aunque seas el propietario del dispositivo)
  • Publicar herramientas diseñadas para eludir protecciones tecnológicas
  • Realizar ingeniería inversa de protocolos propietarios con fines de competencia

Excepciones relevantes para desarrolladores

El Registro de Copyright actualiza las excepciones cada 3 años. Las más relevantes en 2025:

  • Investigación de seguridad: Se puede eludir protecciones para identificar vulnerabilidades en software, con condiciones específicas
  • Interoperabilidad: Ingeniería inversa permitida para lograr interoperabilidad entre programas independientes
  • Software abandonado: Para preservación y acceso a software descontinuado
  • Reparación de dispositivos: Para reparar o mantener dispositivos electrónicos de tu propiedad
Zona gris: Actividades que pueden o no infringir la Sección 1201

⚠  Reverse engineering para debugging de tu propio software integrado
⚠  Analizar protocolos de red de aplicaciones propietarias
⚠  Crear clientes alternativos para servicios con API privada
⚠  Herramientas de backup que eluden protecciones de copia
⚠  Emuladores de consolas/software legacy

Consejo: En proyectos de seguridad/interop, documentar
el propósito legítimo de la investigación es crucial.

DMCA y Open Source: Consideraciones Especiales

Licencias copyleft y la DMCA

Si distribuyes software bajo GPL, AGPL u otras licencias copyleft, y alguien incorpora tu código en software propietario sin cumplir los términos de la licencia, tienes dos vías:

  • Vía contractual: Incumplimiento de licencia (no es DMCA, es contrato)
  • Vía DMCA: Si el uso excede el copyright, puedes enviar un takedown

Organizaciones como la Software Freedom Conservancy o la FSF se especializan en enforcement de licencias GPL y pueden apoyar a proyectos open source con violaciones.

Proteger dependencias de tu proyecto

# Auditar licencias de dependencias antes de distribuir
# Para Node.js:
npx license-checker --production --summary
npx license-checker --failOn 'GPL-2.0;GPL-3.0;AGPL-3.0'

# Para Python:
pip install pip-licenses
pip-licenses --format=markdown --with-urls

# Para Java/Maven:
mvn license:aggregate-third-party-report

# Para Go:
go-licenses check ./...
go-licenses report ./...

# Para Rust:
cargo license --json | jq '.[] | select(.license | test("GPL"))'

Mejores Prácticas para Desarrolladores

Para proteger tu código

  • Añade un archivo LICENSE en la raíz de cada repositorio — sin él, el código es "todos los derechos reservados" por defecto, lo que puede dificultar contribuciones legítimas
  • Incluye avisos de copyright en los archivos principales (Copyright (c) 2025 Tu Nombre)
  • Usa un CONTRIBUTING.md con un CLA (Contributor License Agreement) si el proyecto puede comercializarse
  • Mantén commits con mensajes descriptivos — establecen la historia de autoría
  • Para software crítico, considera registrarlo en la US Copyright Office

Para evitar infringir copyright ajeno

  • Verifica las licencias de todas las dependencias con herramientas automáticas antes de cada release
  • Nunca copies código de Stack Overflow, foros o blogs sin verificar la licencia del fragmento
  • El código generado por IA puede incluir fragmentos de código con copyright — revisa especialmente bloques largos
  • Si usas assets (imágenes, fuentes, sonidos), documenta su origen y licencia en un archivo ATTRIBUTION.md
  • Para proyectos comerciales, considera una revisión legal de las dependencias críticas

Si recibes un DMCA takedown sobre tu código

Árbol de decisión ante un DMCA Takedown:

¿Usaste código del denunciante?
├── SÍ, sin licencia válida
│   └── Retira el contenido, corrige el problema
│       └── Contacta al titular para resolver amistosamente
├── NO, el contenido es tuyo
│   └── Presenta Counter-Notice en 10-14 días
│       └── El contenido se restaura si no hay demanda
└── PARCIALMENTE (uso mixto)
    └── Retira la parte infractora
        └── Presenta counter-notice para el resto

SIEMPRE: Documenta todo, guarda toda comunicación.
EN CASO DE DUDA: Consulta a un abogado especializado en IP.

Conclusión

La DMCA es una realidad del ecosistema de software moderno que todo desarrollador debe comprender, independientemente de su ubicación geográfica. No se trata solo de protegerte de demandas — es entender los derechos que tienes sobre tu propio código, cómo usar legalmente el trabajo de otros y cómo operar responsablemente en plataformas de distribución global.

Los puntos clave: añade siempre una licencia clara a tus proyectos, audita las dependencias de terceros regularmente, documenta la autoría de tu código desde el primer commit y, si alguna vez recibes o necesitas enviar un takedown, sigue el proceso formal con declaraciones precisas. Las consecuencias de declaraciones falsas bajo la DMCA son legalmente significativas en ambas direcciones.

El panorama legal del software en 2025 está evolucionando rápidamente con la llegada del código generado por IA, los litigios sobre scraping de datos de entrenamiento y las disputas sobre APIs. Mantenerse informado sobre estos desarrollos no es optativo — es parte del oficio de un desarrollador profesional.

Artículos relacionados