¿Por qué tarda tanto en actualizarse Windows? Puede llevar más de una docena de viajes a Windows Update y otra docena o más de reinicios antes de que mi Windows recién instalado esté actualizado. Por qué no puede Microsoft encontrar una mejor manera de hacer esto?

Esta es una gran pregunta. Lo suficientemente grande como para que deba responderla en dos partes.

¿Por qué una nueva instalación de Windows 7 tarda tantos reinicios en actualizarse?

En el modelo de actualización que se utilizaba para Windows 7 y versiones inferiores, las actualizaciones se lanzaban generalmente de forma individual, parche a parche. En otras palabras, "Oh hey, hemos encontrado un problema en el componente X. Hemos desarrollado una solución para ese problema. Lanzaremos una actualización que incluya los nuevos archivos para el componente X". Mientras tanto, en el mismo mes, probablemente se lanzaron parches para los componentes U, V, W, Y y Z, todos los cuales se arreglaron en parches individuales.

En el modelo de Windows Update, cada actualización que se lanza tiene un conjunto de "reglas de aplicabilidad". Las reglas de aplicabilidad son un conjunto de condiciones que dicen "soy instalable si (este archivo está presente o no está presente, este valor del registro está establecido de esta manera, este idioma está instalado, etc., etc...)", y ya estoy instalado si (este archivo está presente, etc., etc...)". Estas condiciones pueden ser muy complejas. Por ejemplo, ese parche para el componente X diría obviamente "Estoy instalado si los binarios del componente X están presentes pero al menos uno de ellos es más antiguo que la versión del parche, y estoy instalado si todos los binarios del componente X están presentes y son al menos tan nuevos como la versión del parche". Pero el nuevo código puede introducir una nueva dependencia del Componente P, así que ahora tenemos que añadir "sólo soy instalable si tal y tal versión del Componente P está presente". Ni me preguntes por las reglas de aplicabilidad de las actualizaciones de Office. No es bonito.

Así que cuando instalas Windows 7 desde un disco, y escaneas en busca de actualizaciones por primera vez, las únicas actualizaciones que se ofrecerán para su instalación son aquellas cuyas reglas de aplicabilidad dicen "Soy instalable en un sistema recién sacado del disco - no tengo ninguna dependencia de nada más que haya sido entregado como actualización"

Así que Windows Update descarga e instala esa primera ronda de actualizaciones, y te dice que reinicies para completar la instalación. A continuación, vuelve a buscar actualizaciones, y ahora hay otro lote de actualizaciones que son de nueva aplicación - las que tienen reglas de aplicabilidad que dicen "soy instalable en un sistema que tiene esa primera ronda de actualizaciones instaladas." Por ejemplo, puede haber algún Componente J completamente nuevo que fue instalado por la primera ronda de actualizaciones; ahora todas las actualizaciones que dicen "Sólo soy instalable si el Componente J está presente" son potencialmente instalables ahora cuando antes no lo eran.

Así que descargamos e instalamos ese nuevo lote de actualizaciones, y reiniciamos, y volvemos a escanear, y ahora hay otro lote de actualizaciones que son instalables porque ahora se cumplen sus dependencias, y así sucesivamente.

Puedo oírte decir "¿Por qué Windows Update no mira hacia adelante y dice 'Bien, este lote de actualizaciones está haciendo este conjunto de cambios, así que también debería seguir adelante e instalar las otras actualizaciones que serán instalables una vez que se haga ese conjunto de cambios'? Hay factores técnicos que dificultan esta tarea (ya es bastante difícil evaluar algunas de las reglas de aplicabilidad en el sistema-que-es, por no hablar de decidir cómo se evaluarían en un hipotético sistema-que-será). Pero la respuesta real, esto-no-es-sólo-difícil-es-imposible, probablemente le sorprenderá. Windows Update realmente no sabe lo que las actualizaciones que está a punto de instalar harán realmente. Por eso necesita esas reglas de aplicabilidad separadas en primer lugar. Windows Update sabe cómo asegurarse de que la actualización no ha sido manipulada en tránsito, y sabe cómo lanzar la tecnología de instalación apropiada para aplicar la actualización. Más allá de eso, es una caja negra. Esta es una parte realmente poderosa del diseño de Windows Update; permite que Windows Update aplique actualizaciones que utilizan tecnologías que ni siquiera eran un destello en los ojos de un desarrollador en el momento en que se diseñó Windows Update. Pero también significa que Windows Update simplemente no puede ser predictivo de la manera que sería útil para parchear rápidamente un nuevo sistema. Tiene que instalar un lote de actualizaciones, ver cómo ha cambiado el sistema, luego instalar las actualizaciones aplicables a ese sistema cambiado, y así sucesivamente.

Adelante a...

¿Por qué Windows 10 no toma todos esos ciclos de reinicio? Y, además, ¿por qué las actualizaciones de Windows 10 son tan jodidamente grandes?

La respuesta a ambas preguntas es básicamente la misma.

Para Windows 10, respiramos profundamente y cambiamos por completo la forma de publicar las actualizaciones. En lugar de decir "Aquí hay un trillón de parches separados que contienen correcciones y características individuales, cada uno con sus propios requisitos", dijimos "Aquí hay una sola actualización que es (normalmente) instalable en todos los sistemas de Windows 10 desde los albores del tiempo, y que contiene todos los cambios que se han hecho desde entonces. Esta actualización es aplicable a (normalmente) todos los sistemas. Aplícala en cualquier sistema y Windows estará actualizado"

Esto tiene grandes ventajas. Elimina (o al menos reduce drásticamente) la necesidad de múltiples ciclos de escaneo-descarga-instalación-reinicio para poner al día un sistema, lo que significa que es mucho menos probable que un sistema recién instalado sea pwned en el tiempo que se tarda en instalar las actualizaciones. Hace que el soporte y la compatibilidad de las aplicaciones sean mucho más manejables, porque el número de posibles permutaciones de Lo que hay en el sistema se reduce radicalmente - es sólo "¿Qué actualización acumulativa del mes es la más reciente instalada?", en lugar de "¿Qué combinación de los miles de parches individuales disponibles está instalada?" Hace que la administración de dominios y redes sea mucho más sencilla.

También tiene sus inconvenientes. Esas actualizaciones acumulativas son, efectivamente, jodidamente grandes. (Aunque no siempre son tan grandes como parecen, ya que sólo descargamos las partes que realmente se necesitan en un sistema determinado). Y significa que los usuarios avanzados ya no pueden elegir qué parches aplicar, lo que es una mierda cuando una determinada corrección introduce un nuevo problema en tu PC. Pero yo diría que el conjunto de problemas que resuelve este modelo es mucho mayor y más común que el conjunto de problemas que causa.

Espero que esto te ayude a entender mejor Windows Update.