La exportación no basta
Por qué un botón de descargar mis datos no equivale a propiedad: las tres pérdidas que sufre toda exportación y el criterio exacto que separa un formato de intercambio de un formato de trabajo.
El botón de descargar mis datos es la respuesta estándar del sector a la pregunta de la propiedad, y funciona porque desactiva la conversación: si puedes bajarte todo, parece que todo es tuyo. La tesis de esta lección es que esa inferencia no se sostiene, y no por mala fe de quien construye el botón sino por una diferencia estructural entre dos clases de artefacto que solemos llamar igual. Un formato de intercambio existe para ser leído una vez por otro sistema; un formato de trabajo existe para ser el sustrato sobre el que una aplicación opera de forma continua. Confundirlos produce el equívoco central del debate sobre propiedad de datos: te entregan un archivo cuando lo que hacía falta era un espacio de trabajo. Vamos a precisar la diferencia, a inventariar las tres cosas que toda exportación pierde y a definir qué tendría que cumplir una exportación para contar como propiedad de verdad, incluido por qué a un proveedor honesto le cuesta tanto ofrecerla.
- Separar el derecho a una copia del control efectivo sobre un sistema en funcionamiento.
- Distinguir formato de intercambio y formato de trabajo por sus propiedades técnicas.
- Inventariar las tres pérdidas: fidelidad semántica, continuidad e intérprete.
- Aplicar la prueba de ida y vuelta y la del espejo continuo como criterios verificables.
Qué prueba y qué no prueba un botón de descarga
Conviene empezar por lo que la existencia del botón demuestra, porque el argumento pierde fuerza si se presenta como una denuncia y no como una distinción.
Empecemos reconociendo lo que sí prueba, porque no es trivial. Que exista una exportación demuestra que el proveedor no ha diseñado una prisión deliberada, que existe algún camino de salida y que el contenido no está atrapado en un formato imposible de serializar. En términos regulatorios cumple con el suelo que fija la portabilidad: un formato estructurado, de uso común y lectura mecánica. Cualquier alternativa a eso es peor, y conviene no confundir la crítica al botón con un desprecio del botón.
Demuestra también algo cultural que no es menor: que dentro de esa organización alguien defendió la salida del usuario en una reunión donde nadie tenía incentivo para hacerlo. Los exportadores no se construyen solos, no producen ingresos y compiten por tiempo de desarrollo con funciones que sí lo producen. Que existan y funcionen razonablemente bien es, con frecuencia, la señal más fiable de que el equipo se toma en serio la relación con quien usa el producto.
Conviene además distinguir tres motivos por los que alguien exporta, porque el mismo artefacto sirve muy desigualmente para cada uno. La copia de seguridad solo exige que el contenido esté completo y sea legible por un humano en el peor de los casos: para eso, casi cualquier exportación vale. La migración exige además que otro producto pueda importarlo con una pérdida tolerable, lo que ya elimina a la mayoría. La operación paralela —seguir trabajando fuera del proveedor, o construir algo encima— exige identidad estable, actualización incremental y semántica completa, y ahí no llega prácticamente nadie. Discutir sobre exportaciones sin decir para cuál de los tres usos garantiza confusión.
Lo que no prueba es cualquier cosa relacionada con la continuidad. Una exportación es una instantánea puntual de un sistema vivo, y todo lo interesante de ese sistema está en el hecho de estar vivo: los índices que hacen que buscar sea instantáneo, las vistas que agregan, los permisos que gobiernan quién ve qué, las automatizaciones que reaccionan a los cambios, las referencias que otros mantienen hacia tus elementos. Nada de eso viaja. Lo que llega a tu disco es la sombra proyectada de una estructura, no la estructura. Y lo que se descarga empieza a envejecer en el mismo segundo en que termina la descarga, porque el sistema original sigue cambiando y tu copia no.
Hay una prueba mental que deja el punto claro de inmediato: imagina que el proveedor cierra esta noche y mañana solo tienes el archivo que descargaste. Cuánto tiempo pasaría hasta que pudieras volver a trabajar como trabajabas, con qué herramienta y con cuánta pérdida. Si la respuesta se mide en semanas, lo que tenías no era propiedad sino una copia de seguridad; y una copia de seguridad es una cosa razonable de tener, pero es una respuesta a un problema distinto del que la palabra propiedad sugiere.
flowchart LR subgraph Exportacion A[Sistema vivo del proveedor] -->|instantanea puntual| B[Archivo descargado] B --> C[Copia que envejece desde el primer segundo] end subgraph LocalFirst D[Formato de trabajo en tu disco] <--> E[Aplicacion que lo edita] D -.sincronizacion opcional.-> F[Servidor de replicas] end style C fill:#f38ba8,color:#11111b style D fill:#a6e3a1,color:#11111b
Intercambio frente a trabajo
La distinción se puede definir con precisión, y esa precisión es lo que convierte una intuición en un criterio. Un formato de intercambio es unidireccional, con pérdida asumida, pensado para una lectura única y sin obligación de identidad estable: su éxito se mide en que otro sistema pueda importarlo aproximadamente. Un formato de trabajo cumple seis propiedades que el de intercambio no necesita cumplir:
- Bidireccional. Se puede leer y escribir con el mismo grado de fidelidad, no solo generar.
- Sin pérdida. Todo lo que el sistema sabe está representado, incluidas las partes que no se muestran en la interfaz.
- Mutable en el sitio. Se puede modificar una parte sin regenerar el conjunto.
- Incremental. Se puede actualizar por trozos, lo que hace viable mantenerlo sincronizado de forma continua.
- Con identidad estable. Cada elemento lleva un identificador duradero entre versiones y entre exportaciones.
- Con invariantes explícitas. Las reglas que el contenido debe cumplir están declaradas y son verificables desde fuera.
Ninguna de las seis es un capricho de purista: cada una habilita una capacidad concreta que la otra clase de formato no puede ofrecer. Sin bidireccionalidad no hay vuelta atrás y la migración es un viaje de ida. Sin ausencia de pérdida no se puede confiar en la copia como sustituto. Sin mutabilidad e incrementalidad, mantener la copia al día exige regenerarla entera cada vez, lo que en volúmenes reales la vuelve impracticable. Sin identidad no hay comparación posible. Y sin invariantes explícitas nadie de fuera puede validar que lo que tiene está completo y es coherente.
De esas propiedades, la más subestimada es la identidad estable. Si los elementos exportados no llevan identificadores duraderos, no puedes comparar la exportación de hoy con la de la semana pasada, no puedes fusionar cambios, no puedes mantener enlaces desde otro sistema y no puedes construir nada encima. Sin identidad no hay diferencia; sin diferencia no hay proceso; sin proceso solo hay archivo. Un producto que exporta con identificadores aleatorios en cada descarga puede estar cumpliendo la letra de la portabilidad y anulando por completo su utilidad.
Y es una omisión que casi nunca responde a mala intención, lo cual la hace más instructiva. Los identificadores internos suelen considerarse un detalle de implementación que no debe filtrarse al exterior, y esa es una regla de diseño sensata en casi todos los contextos: exponerlos ata al equipo a no cambiarlos nunca. Pero en el contexto de la exportación esa misma prudencia produce un artefacto inservible para todo lo que no sea leerlo una vez. La solución habitual —publicar un identificador estable y público, distinto del interno y sin relación con él— es barata y poco frecuente, y su ausencia es un buen indicador de que nadie pensó la exportación como algo que alguien fuera a usar dos veces.
Intercambio
Instantánea con pérdida, lectura única, sin identidad estable. Su meta es que otro sistema pueda importar algo parecido.
Trabajo
Mutable, incremental, sin pérdida, con identificadores duraderos. Su meta es ser el sustrato sobre el que se opera de continuo.
Espejo
Proyección durable actualizada en cada cambio. No es un botón sino un proceso, y es lo que convierte la salida en una opción real.
Las tres pérdidas
Toda exportación pierde tres cosas distintas, y conviene no mezclarlas porque cada una se mitiga de un modo diferente.
La primera es la fidelidad semántica. Se conservan las palabras y se pierden las relaciones, y la lista de bajas es siempre parecida:
- Las referencias entre elementos se degradan a texto plano o a enlaces rotos hacia un dominio al que ya no tienes acceso.
- Las vistas filtradas y ordenadas desaparecen, porque eran consultas ejecutándose y no datos almacenados.
- Las fórmulas se sustituyen por los valores que producían, con lo que se conserva el resultado y se pierde el razonamiento.
- Los permisos, los comentarios y las menciones se omiten, por ser propiedades de la colaboración y no del contenido.
- La historia de revisiones se aplana a la última versión, y con ella se va la posibilidad de auditar quién cambió qué.
La prueba diagnóstica es brutal en su sencillez y casi nadie la pasa: exporta, importa en el mismo producto y compara. Si el propio importador del proveedor no consume sin pérdida la salida de su propio exportador, ningún tercero lo hará jamás.
La segunda es la continuidad. Una exportación es un evento, no un flujo. No hay exportación incremental, no hay suscripción a los cambios, no hay forma de mantener una copia al día sin repetir la descarga completa. Desde el instante en que se genera, tu copia y el sistema vivo divergen, y esa divergencia solo crece. Poseer una fotografía de tu trabajo de hace tres meses no es poseer tu trabajo.
Esta pérdida tiene además un efecto psicológico que conviene nombrar, porque explica por qué el botón funciona tan bien como argumento comercial. La exportación calma la ansiedad sin resolver el problema: quien descarga su archivo siente que ha recuperado el control y archiva la preocupación, aunque el archivo que guarda quede obsoleto en horas y nunca vuelva a abrirse. Es una garantía que casi nadie ejercita y que por eso casi nadie descubre insuficiente hasta el día en que la necesita de verdad.
Cuando alguien evalúa cambiar de herramienta suele estimar el esfuerzo como el tiempo de exportar e importar, y esa estimación se equivoca por un orden de magnitud. El coste real es reconstruir en el destino todo lo que no viajó: las vistas, las automatizaciones, los permisos, los enlaces, las convenciones que el equipo tenía interiorizadas. En organizaciones medianas ese trabajo se mide en semanas de varias personas, y es exactamente lo que hace que la migración se posponga indefinidamente aunque todo el mundo esté de acuerdo en que conviene. La barrera de salida no la construye el proveedor con malicia: la construye la acumulación de estructura que solo existe dentro de su producto.
La tercera, y la más decisiva, es el intérprete. Los datos sin el programa que los ejecuta no son un espacio de trabajo, son un archivo histórico. Puedes leer tus notas, no puedes seguir trabajando en ellas con las mismas capacidades. Esta pérdida no se arregla mejorando el formato, porque no es un problema de formato: es que la mitad del valor estaba en el software, y la exportación nunca incluyó el software. Aquí es donde la lección sobre longevidad y esta se cruzan: un formato durable sin intérprete reconstruible es una conservación a medias.
Y conviene ordenar las tres por dificultad de reparación, porque no todas admiten la misma respuesta:
- La fidelidad se mejora con trabajo del proveedor: es una cuestión de cuánto se decide representar en la salida, y es negociable.
- La continuidad se mejora con una interfaz de lectura incremental e identificadores estables: es un problema técnico bien delimitado y resuelto en otros dominios.
- El intérprete no se mejora desde dentro del producto: exige que exista un ecosistema con al menos dos implementaciones, y eso es un hecho del mercado y no una decisión de ingeniería.
Hay un contraejemplo honesto que conviene tener presente: los formatos que triunfaron como intercambio y acabaron siendo de trabajo. El correo electrónico se descarga entero por protocolos abiertos y se puede seguir usando con otro cliente sin pérdida apreciable. Los repositorios de código se clonan completos con su historia y quedan plenamente operativos fuera del alojador, hasta el punto de que cambiar de alojador es una tarde de trabajo y no un proyecto. En ambos casos la clave fue la misma: el formato de trabajo era el formato público desde el principio, y no una proyección generada para la salida. Cuando esas dos cosas coinciden, el problema de la exportación sencillamente no existe, y conviene notar que en ninguno de los dos casos fue el resultado de una regulación ni de una presión de los usuarios, sino de una decisión técnica tomada antes de que hubiera usuarios.
Qué haría que una exportación contase
Con lo anterior se puede escribir un criterio verificable, y prefiero enunciarlo como cuatro pruebas concretas antes que como un principio abstracto:
- Ida y vuelta. Exportar, importar en el mismo producto y obtener un sistema indistinguible del original. Es la prueba mínima y la que más productos suspenden.
- Espejo continuo. Que la exportación sea incremental, automatizable sin intervención humana y con identificadores estables, de modo que dos ejecuciones consecutivas se puedan comparar.
- Intérprete disponible. Que exista al menos un programa ajeno al proveedor capaz de abrir el resultado y permitir seguir trabajando, no solo leer.
- Cobertura declarada. Que el proveedor documente explícitamente qué campos no se exportan, porque una lista honesta de omisiones vale más que una promesa vaga de completitud.
Las cuatro son verificables por un tercero sin acceso al código del proveedor, y esa es su virtud: convierten una discusión sobre intenciones en una comprobación que se ejecuta en una tarde.
Aplicadas a productos reales, el resultado suele ser desigual de una manera muy reconocible. Los formatos de contenido puro —texto, imágenes, mensajes— pasan la primera prueba con soltura y suspenden la segunda. Los productos estructurados —bases de datos ligeras, gestores de proyectos, espacios de trabajo— suspenden la primera y aprueban a veces la cuarta, porque documentan sus omisiones. Y la tercera prueba, la del intérprete ajeno, la superan casi exclusivamente los formatos que nacieron públicos, lo que confirma que ese requisito no depende del esfuerzo del proveedor sino de la existencia previa de un ecosistema.
Conviene añadir una quinta prueba que no es técnica sino temporal: la exportación debe funcionar cuando ya no eres cliente. Muchos productos ofrecen una salida excelente mientras pagas y ninguna cuando dejas de pagar, o la ofrecen durante una ventana de gracia tan corta que es inútil para quien se entera tarde. La capacidad de recuperar tu trabajo el día en que más lo necesitas —tras un impago, un cierre o una suspensión— es la única que cuenta, y es también la que jamás se prueba antes de contratar.
Ahora la posición contraria, y es más sólida de lo que el discurso soberanista suele conceder. Exportar el formato de trabajo real es genuinamente difícil y a veces perjudicial. Ese formato codifica invariantes internas, desnormalizaciones, índices y decisiones de rendimiento que existen para servir a la implementación actual; publicarlo lo convierte de facto en una interfaz pública con obligaciones de compatibilidad, y a partir de ahí cada refactorización interna se convierte en una ruptura para terceros. Muchos proveedores ofrecen exportaciones pobres por cálculo estratégico, pero muchos otros las ofrecen pobres porque un exportador fiel es, literalmente, un segundo producto que hay que mantener y probar. Y hay una consideración de fondo: para servicios cuyo valor reside en la red de participantes o en el cómputo que ejecutan, y no en el contenido, el formato de intercambio es la respuesta correcta, porque exportar los bytes no exportaría nada de lo que hacía valioso al servicio.
La objeción tiene incluso una versión que va más lejos y merece considerarse. Publicar el formato de trabajo puede perjudicar al propio usuario a medio plazo, porque congela la capacidad del producto de mejorar: cada cambio en la representación interna rompe a los terceros que dependían de ella, y un equipo que ha asumido ese compromiso empieza a rechazar mejoras que antes habría hecho. Hay productos cuya calidad actual sería impensable si su formato hubiera sido público desde el primer año. Reconocer esto no invalida el argumento de la propiedad, pero sí obliga a formularlo con más precisión: lo que hay que exigir no es que el formato interno sea público, sino que exista alguna representación completa, estable y documentada del contenido, aunque no sea la que la aplicación usa por dentro.
El desplazamiento conceptual que ordena todo el capítulo es dejar de pensar la propiedad de datos como un estado que se tiene y empezar a pensarla como un proceso que se ejecuta. Un archivo descargado hace tres meses no te hace dueño de nada: te hace custodio de un recuerdo. Lo que constituye propiedad es que exista, en todo momento y sin intervención de nadie, una réplica operativa y actualizada del contenido bajo tu control, sobre la que un programa que no sea el del proveedor pueda seguir trabajando. Enunciado así se ve por qué el debate sobre exportación estaba mal planteado desde el principio: discutíamos la calidad de la salida cuando el problema era que hubiera una salida en vez de una presencia. Y se ve también la inversión que propone local-first, que es más radical de lo que parece: cuando el formato de trabajo ya vive en tu disco y la aplicación opera directamente sobre él, la exportación deja de ser necesaria porque nunca hubo nada que exportar. No es que el botón funcione mejor, es que el botón desaparece, y con él desaparece la asimetría entera. Ahora bien, esa inversión no regala nada: mueve una carga. Si el formato de trabajo es público, se convierte en un contrato que ata tu propia evolución, y la migración de esquemas sobre datos que viven en dispositivos ajenos que llevan meses sin abrirse pasa a ser tu problema y no el del operador de una base de datos central. Cambiar la exportación por la posesión es cambiar un problema de salida por un problema de compatibilidad perpetua, y hay que elegirlo sabiendo exactamente eso.
- Exporta tus datos de un servicio que uses y ejecuta la prueba de ida y vuelta reimportándolos en el mismo producto. Documenta con precisión qué se perdió.
- Compara dos exportaciones consecutivas separadas por unos días y comprueba si los identificadores son estables. Si no lo son, explica qué imposibilita ese hecho.
- Clasifica el resultado como formato de intercambio o de trabajo aplicando las seis propiedades del apartado segundo.
- Busca si existe algún programa ajeno al proveedor capaz de abrir esa exportación y permitir seguir trabajando. Si no existe, estima el coste de escribirlo.
- Diseña un espejo continuo para ese servicio: qué llamada usarías, con qué periodicidad y qué garantizaría que no se pierden cambios entre ejecuciones.
- Comprueba qué ocurre con la exportación cuando la cuenta caduca: busca en las condiciones la ventana de gracia y decide si sería suficiente para ti.
- Estima en semanas de trabajo el coste de reconstruir en un competidor todo lo que no viaja en esa exportación.
- Defiende el caso contrario para un servicio concreto: argumenta por qué exportar su formato de trabajo sería perjudicial y qué valor no viajaría en ningún caso.