Esta familia estudia cómo conservar función, compatibilidad, comportamiento o interfaces mientras se sustituye una implementación. Su pregunta transversal es: ¿qué parte del sistema debe mantenerse para que siga cumpliendo su función ante otros componentes, y qué parte puede cambiar? La respuesta no es única porque “lo que se conserva” puede ser una salida, una API, una conversación de red, un entorno binario o la continuidad del mismo código en otra plataforma.

El mapa separa tres planos. Adquisición de conocimiento: ingeniería inversa y caja negra. Procedencia y organización: clean room. Artefacto o resultado: reimplementación funcional, de interfaz, de protocolo o plataforma compatible. Porting, rewrite y traducción conservan otro tipo de linaje; AFC pertenece al análisis jurídico posterior. Separar estos planos evita usar “clean room”, “clon”, “ingeniería inversa” y “reescritura” como sinónimos.

Alcance jurídico: las fichas comparan hechos técnicos, textos legales y decisiones judiciales. No ofrecen asesoría jurídica. Copyright, patentes, secretos empresariales, contrato, medidas tecnológicas, competencia y marcas pueden producir resultados distintos según jurisdicción y hechos.

Fichas

Relaciones principales

OrigenRelaciónDestinoSignificado
Black-box analysistechnique-forReverse engineering for interoperabilityLa observación externa puede descubrir requisitos de interoperabilidad.
Reverse engineering for interoperabilityenablesInterface and API reimplementationLos hallazgos pueden convertirse en un contrato de llamadas y datos.
Reverse engineering for interoperabilityenablesProtocol reimplementationEl análisis de mensajes y estados puede alimentar otro participante.
Clean-room implementationconstrains-provenance-ofFunctional reimplementationLa separación controla qué expresión llega a quienes implementan.
Interface and API reimplementationis-aFunctional reimplementationConserva una clase delimitada de comportamiento: la interfaz programática.
Protocol reimplementationis-aFunctional reimplementationConserva una clase delimitada de comportamiento: la conversación distribuida.
Interface and API reimplementationcontrasts-withProtocol reimplementationLlamada dentro de una plataforma frente a intercambio temporal entre agentes, con zonas híbridas.
Interface and API reimplementationenablesCompatible implementation and compatible cloneUna plataforma puede volverse sustituible al preservar interfaces consumidas por aplicaciones.
Protocol reimplementationenablesCompatible implementation and compatible cloneUn sistema puede ocupar el rol de otro sin reproducirlo entero.
Portingcontrasts-withCompatible implementation and compatible clonePortar cambia el programa para el entorno; compatibilizar cambia el entorno para programas existentes.
Rewrite and translationcontrasts-withClean-room implementationRewrite suele conservar acceso y linaje expresivo; clean room restringe ese acceso.
Abstraction–Filtration–Comparisonlegal-framework-forRewrite and translationAnaliza si una nueva redacción conserva expresión no literal protegible; no dirige la ingeniería.

Fronteras terminológicas

ElementoDistinción usada en estas fichas
FuncionalidadLo que el sistema hace para un usuario o componente. Puede describirse a varios niveles y no equivale al código que la realiza.
IdeaConcepción o principio general separable de su formulación. Decidir el nivel de generalidad es parte del problema, no un paso automático.
Método de operaciónMedio por el que una persona hace funcionar algo; en Lotus, la jerarquía de comandos concreta fue tratada así bajo 17 U.S.C. § 102(b). No toda interfaz queda clasificada automáticamente del mismo modo.
Interfaz / APIFrontera programática de nombres, tipos, llamadas y efectos. Puede contener hechos funcionales y elecciones expresivas; su régimen no se reduce a una regla mundial.
ProtocoloReglas de interconexión e interacción: mensajes, significado, orden y estado entre participantes. No es el código interno de ninguno de ellos.
AlgoritmoProcedimiento para obtener un resultado. Dos implementaciones pueden compartirlo y expresar sus pasos de manera distinta; copyright, patente y secreto hacen preguntas diferentes sobre él.
EstructuraOrganización de módulos, datos y flujo a distintos niveles. Parte puede venir dictada por función o entorno y parte puede reflejar elecciones; AFC obliga a filtrar antes de comparar.
Código fuente / código objetoRepresentaciones legible y ejecutable de un programa. Cambiar de una a otra no elimina el vínculo con la misma implementación ni convierte el código en mera funcionalidad.
Expresión literalTexto, instrucciones o datos copiados de forma directa. Es distinta de compartir un resultado o una idea.
Elementos no literalesOrganización o relaciones que pueden asemejarse sin líneas idénticas; su posible protección requiere un análisis como AFC en los tribunales que lo usan.
InteroperabilidadCapacidad de sistemas independientes para intercambiar información y usarla con sentido. Es una finalidad técnica; no es por sí sola una excepción jurídica universal.
Copia intermediaReproducción realizada durante observación, carga o desensamblado y no incorporada al producto final. Sega y Sony analizaron copias concretas como fair use; la calificación depende de hechos y jurisdicción.
Desarrollo independienteProducción sin copiar expresión protegida. Puede apoyarse en registros y separación clean room, pero la etiqueta necesita evidencia de procedencia y no responde por patentes, contrato u otros derechos.

Casos y proyectos conectables

  • IBM PC BIOS — frontera firmware que el software compatible esperaba encontrar.
  • Columbia Data Products — MPC de 1982; el Computer History Museum lo identifica como primer clon de IBM PC y documenta una BIOS equivalente creada en clean room.
  • Compaq Portable — compatibilidad IBM PC convertida en propuesta comercial portátil; anunciado en 1982 y distribuido en 1983.
  • Phoenix ROM BIOS — implementación limpia licenciable desde mayo de 1984; permitió que otros fabricantes compraran la frontera firmware compatible en vez de reconstruirla por separado.
  • Computer Associates v. Altai — copia literal en OSCAR 3.4, reescritura 3.5 y formulación de AFC para elementos no literales.
  • Sega v. Accolade — desensamblado y copias intermedias para descubrir requisitos de la interfaz Genesis; fair use bajo los hechos del caso.
  • Sony v. Connectix — observación y desensamblado de BIOS durante la construcción de una plataforma nueva para juegos PlayStation.
  • Lotus v. Borland — compatibilidad de comandos y macros; el Primer Circuito calificó la jerarquía como método de operación.
  • SAS Institute v. World Programming — reproducción de conducta y lenguaje SAS; resultados jurídicos distintos en Europa, Reino Unido y Estados Unidos según norma y pretensión.
  • Google v. Oracle — reuso de parte de la API Java en Android; la Corte Suprema decidió fair use sin resolver la protegibilidad general de la API.
  • Oracle v. Rimini Street — límite útil: interoperabilidad no basta para una obra derivada, pero copias efectivas, licencias y procesos de soporte siguen requiriendo análisis propio.
  • Samba — análisis de red y reimplementación de SMB para que sistemas Unix ocuparan roles en redes heterogéneas.
  • Wine — capa que reimplementa APIs Windows y traduce llamadas a POSIX, sin reproducir un sistema Windows completo.
  • GNU Classpath — biblioteca estándar Java libre con reglas estrictas de procedencia y fidelidad a especificaciones públicas.
  • ReactOS — sistema compatible con aplicaciones y controladores Windows, con política documentada de propiedad intelectual y un episodio de auditoría clean room.

Incertidumbres y límites documentales

  • Origen del término. 1982 es un hito comercial bien documentado para BIOS compatibles, no una “fecha de invención” demostrada de clean-room implementation.
  • “Primer clon”. El Computer History Museum llama a Columbia el primer clon IBM PC; otras narraciones reservan “primer clon totalmente compatible” o “primer clon legal de gran éxito” para Compaq. Las fichas conservan esas proposiciones estrechas en vez de fabricar un único ganador.
  • Equivalencia funcional. No existe un umbral universal para declarar que dos sistemas tienen “la misma función”. Cada proyecto debe indicar versión, dominio de entradas, tolerancias, errores y dependientes cubiertos.
  • API frente a protocolo. RPC y APIs web mezclan llamadas y conversaciones de red; los nodos se separan por el tipo principal de frontera, no porque toda tecnología caiga limpiamente en uno.
  • Compatibilidad dinámica. Wine y ReactOS evolucionan. Aquí son casos para entender mecanismos, no certificaciones actuales de que una aplicación concreta funcione.
  • Diferencias jurídicas. Altai, Sega, Sony, Lotus y Google aplican derecho estadounidense en tribunales y cuestiones diferentes; C-406/10 y la Directiva 2009/24/CE pertenecen al marco europeo. Ninguno permite una frase mundial como “las APIs no tienen copyright” o “clean room hace legal copiar”.
  • Contrato y copyright. Los litigios SAS y Oracle/Rimini muestran que una conducta puede recibir análisis diferentes bajo copyright, contrato, licencia o remedios. El resultado técnico no debe confundirse con una conclusión jurídica única.

Fuentes troncales