Saltar al contenido

La instalación que reaparece

Un usuario abre la aplicación tras dos años. Su base es de la versión 3, su sistema operativo ha cambiado dos veces y su testigo caducó. Qué debe pasar.

Qué se encuentra la aplicación

Las dos filas rojas son las que se olvidan, y las dos tienen la misma forma: código de compatibilidad que alguien quitó porque «ya nadie está en esa versión».

El orden del arranque

Cada cosa tiene que resolverse antes de que la siguiente pueda funcionar:

El paso 3 con progreso es el que cambia la experiencia. Una migración larga sin indicación es indistinguible de una aplicación colgada, y el usuario la mata a mitad — que es exactamente el momento en que no debe matarla, aunque la transacción proteja los datos.

Cuánto mantener el código de compatibilidad

La pregunta que hay detrás de las dos filas rojas, y merece una respuesta explícita:

  • Las migraciones de esquema, siempre. Son la lista inmutable del nivel 43.1 y no se quitan nunca. Cuestan unas líneas cada una y son lo que permite el salto de la 3 a la 27.
  • La migración de directorio, años. Es poco código y es lo único que separa a ese usuario de creer que perdió todo.
  • La lectura de formatos de fichero antiguos, mientras exista alguno. Y como no puedes saberlo, la respuesta práctica es mantenerla mientras cueste poco.
  • El código de compatibilidad complicado, ése sí se puede retirar — anunciándolo, y dejando una versión puente que los usuarios muy antiguos puedan instalar primero.

La asimetría que ordena la decisión: mantener el código cuesta unas líneas; quitarlo puede costarle a alguien todo su trabajo.

Leer lo viejo, escribir lo nuevo

El patrón para los formatos de fichero, que es distinto del de la base:

Rust
// el fichero lleva su versión dentro, y se lee la que seamatch version_del_fichero(&datos)? {    1 => convertir_v1_a_actual(datos),    2 => convertir_v2_a_actual(datos),    3 => leer_actual(datos),    v => Err(Error::FormatoDeVersionPosterior(v)),}

Y al guardar, siempre la versión actual. Con eso, un fichero antiguo se moderniza la primera vez que el usuario lo abre y lo guarda, y el código de conversión va quedando sin uso poco a poco sin que haya que quitarlo.