Cuál es la diferencia entre los directorios AppData Roaming, Local y LocalLow para en Windows 10?

Hay numerosas especulaciones al respecto. Según el propio tuit de Microsoft, es porque "7 se comió a 9" (¿lo pillas? 8 se pronuncia igual que ate), pero la opinión más popular parece ser que Microsoft intentó evitar romper la compatibilidad con algunas aplicaciones antiguas.

Verás, algunas aplicaciones tienen un comportamiento diferente programado para diferentes versiones de Windows. Por ejemplo, una aplicación puede depender de la característica "gadgets" de Windows Vista/7, pero si ejecutas la misma aplicación en Windows 10, esta característica ya no es compatible, por lo que esa parte de la aplicación no funcionará. ¿Y si utiliza este mecanismo de "gadgets" como interfaz de usuario principal? Simplemente no funcionará en Windows 10 porque el usuario no tendrá forma de interactuar con él. Por lo tanto, algunos desarrolladores podrían decidir crear una nueva interfaz de usuario para Windows 10, tal vez algo que se parece a los menús nativos de Windows 10 y se mezcla con el sistema operativo muy bien. Pero quieren mantener la antigua interfaz de usuario de Windows Vista/7, porque encaja mejor con el estilo del sistema operativo. So they will put a conditional statement in the program, which looks something like this:

  1. if(WindowsVersion == “Windows 7”) 
  2. // use old UI 
  3. else 
  4. // use new UI 

For non-programmers, this might look weird. Pero básicamente, si la aplicación se ejecuta en Windows 7, utilizará la antigua UI (que es incompatible con Windows 10), de lo contrario utilizará la nueva UI. En un escenario del mundo real esto sería un poco más complicado, pero creo que me entiendes.

Pero espera, ¿qué tiene que ver esto con Windows 9?

Lo sé, lo sé, perdón por la larga introducción. Pero tenía que poneros en antecedentes de lo que voy a escribir a continuación.

Volvamos a los tiempos de Windows XP. Olvídate de Windows Vista, 7, 8 y 10, aún no han sido anunciados y nadie sabe cómo se llamarán.

Ahora pensemos en cómo Microsoft nombra sus versiones de Windows: al principio era la vieja escuela, números de versión normales: 1.0, 1.1, 2.0, 3.0, 3.1, NT4.0, etc. Luego se pasó a los números de año: Windows 95 lanzado en 1995, Windows 98 lanzado en 1998, Windows 2000 lanzado en 2000... y de nuevo, lo cambiaron por letras aparentemente aleatorias: ¿Windows XP? Signifique lo que signifique...

Bueno, de todas formas, probablemente no vuelvan a nombrar por fechas, y aunque lo hagan, ya estamos en el siglo XXI y el año no empezará por 9 en breve. También creemos que ya han acabado con los números de versión. Hace tiempo que no lanzan ninguna versión de Windows que se nombre con un número de versión.

Así que, naturalmente, los desarrolladores empezaron a usar esto:

  1. if(WindowsVersion.StartsWith("Windows 9")) 
  2. ... 

¿Ves? Si comienza con Windows 9... significa que es Windows 98 o 95. Eso es muy conveniente, porque esas versiones son bastante similares y probablemente sean las más antiguas que nos interesan (en su momento nadie intentó siquiera hacer su aplicación compatible con una versión de Windows de hace 10 años porque los ordenadores y el software evolucionaban demasiado rápido).

¿Ves lo que viene? Ah, sí. Windows 9. Ahora imagina que lanzas una aplicación desarrollada inicialmente para Windows XP y que tiene el fragmento de código anterior (o similar). Mira alrededor, comprueba la versión de Windows.. "Windows 9". Comienza con Windows 9, así que obviamente es una versión antigua. Esa aplicación empieza a intentar utilizar alguna característica antigua de Windows (o incluso de DOS), y se bloquea. O trata de evitar el uso de cualquier característica "moderna" de Windows, por lo que funciona muy lentamente, no se ve bien, etc. Definitivamente no quieres eso.

Ahora, los desarrolladores podrían actualizar la aplicación y resolver este problema con bastante facilidad. Pero la verdad es que el soporte de las aplicaciones no dura una eternidad. Después de un tiempo, los desarrolladores pasan a otros proyectos, se retiran, incluso mueren 🙁 Así que hay muchas aplicaciones abandonadas que nadie actualiza. Pero la gente las sigue usando, porque pueden seguir siendo muy útiles.

P.S. Sé que hay mejores formas de comprobar la versión de Windows que comparar la marca de las mismas. Por ejemplo, Windows 7 tenía un número de versión 6.1, Windows 8 tenía 6.2 y así sucesivamente. Pero la triste verdad es que muchos desarrolladores utilizaron técnicas como las anteriores sólo porque les resultaba más cómodo. No todos los desarrolladores siguen siempre las mejores prácticas de codificación.