downgrade


Siempre que sale una nueva versión en iOS/OS X (fíjese que no suelo oír lo mismo en Windows/Linux/Android, curiosamente), aparece la ya habitual conversación de turno en la que alguien se queja de lo mal que va su dispositivo con la nueva actualización.

Hay diversos factores a considerar, como es el hecho de que por norma general al instalar una nueva versión se quedan ficheros de la antigua que no son correctamente eliminados. Sin olvidar la necesidad de volver a cachear recursos que habitualmente utilizamos, y que al estar en una nueva versión, aún no están correctamente cacheados. O que también solemos de pronto recibir varias actualizaciones de aplicaciones y servicios que estaban esperando a que actualizásemos, generando por sí mismos más ficheros, mayor sobrecarga del sistema y, en el caso de dispositivos móviles, una reducción considerable de la autonomía de la batería.

A esto hay que juntarle dos efectos más que tienen más que ver con el factor humano, como es que una vez recibimos la actualización, tendemos a fijarnos más en los cambios, y por ello, a usar más el dispositivo, a sobrecargarlo más… Y que es casualmente esa fijación por descubrir las nuevas bondades, influenciados por la publicidad con la que durante semanas o incluso meses nos han estado martilleando, la que nos lleva a un estado de frustración aspiracional al ser conscientes de que la ficción marketiniana supera con creces la realidad humilde de nuestro dispositivo.

Todos estos elementos conforman lo que coloquialmente llamamos obsolescencia programada. Y digo coloquialmente, porque como bien señalaba Eduo en uno de sus últimos podcast (ES), no es una definición muy adecuada.

Hay obsolescencia programada, sí, pero no tanta como creemos

Dejando de lado sectores como el de las impresoras y los escáneres, cuyo negocio se basa precisamente en vender elementos aledaños al propio hardware (la tinta, por ejemplo), en la electrónica de consumo no siempre lo que denominamos obsolescencia programada es tal.

Para que haya una estrategia de obsolescencia programada, tienen que darse los dos factores:

  • El obsolescente: Esto es, que algo anterior funcione ahora peor. Más allá de lo esperable, quiero decir.
  • La programación: O lo que es lo mismo, que haya un interés explícito por parte de la compañía en que ese dispositivo vaya a peor.

¿Por qué una compañía iba a querer hacer que sus dispositivos funcionen cada vez peor? Para que compremos el nuevo, claro.


Pero con matices, siendo conscientes de que si de verdad no se cuida muy mucho esta estrategia, podríamos llegar a conseguir justo lo contrario (que nuestro cliente decidiese comprar otro… de la competencia).

¿Hay obsolescencia programada en Apple? Sinceramente creo que no. Hay obsolescencia, sí. Y de hecho, bastante más acusada que en otros entornos por la simple decisión de la compañía de romper (para bien y para mal) con la retrocompatibilidad.

En Windows solemos contar con herramientas más o menos sencillas de utilizar (accesibles casi para cualquier usuario) que nos ofrecen la posibilidad de volver hacia atrás (downgradear, si me permite la patada a la RAE) una vez hemos actualizado a una versión más moderna.

Y esto, como contaban los chicos de Hacía Falta, viene impuesto por la demanda del mercado corporativo, más dependiente de la retrocompatibilidad que lo que ha estado Apple en toda su vida.

¿En iOS y en OS X se puede hacer downgrade? También, pero sin lugar a duda la compañía no lo facilita, y queda solo en manos de gente con conocimientos la capacidad de realizar tamaña proeza. Es más, por estos lares Raúl Siles lleva tiempo realizando ataques para comprometer dispositivos de iOS mediante “viajes en el tiempo” que permiten instalarle a un dispositivo específico versiones anteriores vulnerables o nuevas versiones comprometidas.

Pero recalco, no es algo sencillo de realizar, y el propio sistema operativo no facilita que se realice.

Entra en juego la paradoja evolutiva del software y el hardware

Aquí es donde quería llegar.


Esa supuesta obsolescencia programada que hace que nuestros dispositivos de hace unos años cada vez vayan peor tiene un enemigo más, y ese es el que respecta a la distinta velocidad con la que evoluciona el hardware y el software.

He hablado en más de una ocasión de ello, al hilo de cómo la Ley de Moore se está rompiendo (o mejor dicho, lleva varios parcheos para que parezca que sigue vigente), y hoy me toca hablar de otras dos leyes: La de Page y la de Wirth, que al igual que la de Moore, tienen de ley únicamente el nombre, al referirse a conceptos que no tienen demostración, pero que más o menos se cumplen (hasta que dejan de cumplirse).

La Ley de Page, enunciada por Sergey Brin, viene a decir que “el software es el doble de lento cada 18 meses”.

Por su parte, Wirth llegaba a la misma conclusión años atrás asegurando que “el software se ralentiza más deprisa de lo que se acelera el hardware”.

Cosa que cualquier programador en la sala puede constatar. El desarrollo de estos últimos años ha tendido cada vez más a hacer uso de recursos externos (APIs, lenguaje orientado a objetos, bibliotecas…) que no hacen más que sobrecargar a los procesadores, que deben realizar más consultas para hacer aquello que antes se intentaba incluir en el mismo código.

Es algo que ocurre simplemente por el hecho de que podemos. De que al igual que en el hardware empezamos a encontrarnos con la horma de nuestro zapato, la economía de la optimización todavía no ha impactado con tanta fuerza en el software.

Pero todo llega, y tenemos ejemplos como el de la definición del HTTP/2 y la paulatina dictadura de las conexiones SSL como excusa (entre otras cosas) para forzar un consumo de recursos más óptimo, sin apaños de antaño como era la paralelización de carga de recursos en diferentes subdominios. O en el mercado de aplicaciones occidental, esa tendencia de hace unos años de pasar a apps especializadas, disgregando en diferentes apps servicios que anteriormente estaban solo en una.


Esta es una razón más que puede hacer que en efecto ese dispositivo que perfectamente podría seguir comportándose al nivel esperable, ahora ya funcione bastante peor con la nueva versión del sistema operativo, aplicaciones o servicios de turno.

No estrictamente porque la empresa detrás del producto quiera vender más dispositivos (que también), sino por el hecho de que toda la comunidad de desarrolladores está más interesada en hacer uso de las nuevas funcionalidades dirigidas al hardware que tienen los nuevos dispositivos que a desarrollar de la manera más óptima para el hardware “obsoleto”.

De ahí que me lleven los diablos cuando la aplicación de Youtube de mi iPad Mini 1 tarda tanto en actualizar una página, o de que pese a que supuestamente las nuevas versiones de OS X están más optimizadas, mi ordenador vaya cada vez más lento, hasta el punto de animarme hace unos meses a trabajar como ordenador principal con mi portátil.

Un peaje que tiene difícil solución (hasta que no haya de verdad una ruptura de la Ley de Moore drástica, raro será que la industria no intente expandir más el gasto de recursos de hardware), que tenemos que pagar, por cierto, a cambio de minimizar el riesgo que tiene la retrocompatibilidad.

Esa misma que, bien sea buscada o por pura despreocupación, está obligándonos a enfrentarnos a un entorno profundamente inseguro, como es el caso del Internet de las Cosas o los riesgos asociados a una fragmentación de hardware como la que sufre Android.