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.
A mi me gusta más que el concepto de obsolescencia, el que utiliza la industria actualmente “Vida útil” que define mucho mejor cuando este debe volverse inútil y esconde ese concepto feo de la obsolescencia. Así mismo, ayuda a entender como nos toman el pelo.
En general, cada vez que actualizo mi androide me encuentro con cosas que dejan de funcionar, con aplicaciones que ya no se actualizan y con conflictos entre aplicaciones funcionalidades.
Me parecen curiosas las leyes de Page y Wirth, que no conocía, al menos simpáticas, como la Moore, que siempre ha requerido de parches si queremos empeñarnos en que se cumple. Desde mi punto de vista, cosas para tener de que hablar.
Las compatibilidades hacia adelante o hacia atrás son cada vez más complejas, los mercados se segmentan, la programación se realiza a más alto nivel, hay más intermediarios y se pierde la posibilidad de abstraerse de todo el entorno para detectar que optimizar. Cada jugador del entorno quiere evitar que lo que hace afecte a otro, y que lo suyo funcione. Cada vez más sistemas deben hablar con otros, cada uno con sus bondades y defectos, con sus limitaciones y sus peculiaridades… Todo esto complica y mucho los entornos. Y… bueno, que siempre hay quien se resiste a los cambios, no es extraño ver que hay quien desactiva todas las medidas de seguridad que Microsoft ha implementado por que si no esto o aquello no funciona,
Pero por otro lado tenemos que los sistemas, para solo arrancar, requieren cada vez más y más recursos. Un equipo de hace cinco años que solo usa el navegador y no instala aplicaciones puede no tener recursos disponibles por todas las actualizaciones y parches que han aparecido. Abro el navegador con 3 pestañas y cada una ocupa en memoria medio giga… Pero pasas a cualquiera de esas pestañas y la página ni siquiera se ha cargado…. Ahora es inviable tener el navegador con más de 100 pestañas como hacía hace unos años con Firefox (probablemente versión 2) Por no decir que entonces todas las pestañas estaban cargadas…
¿Hablamos ahora de obsolescencia?
Las baterías de los móviles. Debido a la mala gestión que se hace de las baterías, estas ahora se agotan por que los recursos se gestionan bastante mal. ¿O cabe en alguna cabeza que teniendo en el móvil algo parecido que en el de sobremesa solo pueda tener una aplicación abierta por mi? El sistema abre una docena que no quiero abrir y me cierra las que yo abro… Solución: Matar moscas a cañonazos, más potencia, más batería, más memoria… Y así más cosas que no quiero que se ejecuten en mi máquina seguirán funcionando… Y eso en un sistema operativo joven, que no viene heredando compatibilidades hacia atrás como podría aludir Microsoft.
Al final, la situación buscada o no le viene bien a la industria, que en este caso no necesita poner fecha de caducidad en el software, y, por más inverosímil que parezca, para hacer lo mismo necesitamos más y más recursos, y no parece un problema de Microsoft, google o Apple, pues, todos parecen adolecer del mismo problema… ¿O es que se han puesto de acuerdo?
En cuanto a los trabajos de Raul Sites, creo que están muy alejados del gran público. No es que Apple no de soporte a proceso válido, Apple intenta impedirlo a toda costa. Raul entre otros expertos en la materia, buscan la forma de saltarse las limitaciones tecnológicas que los fabricantes imponen. Estas limitaciones que no son propias del hardware sino impuestas por el fabricante, darían para otro debate
Son impuestas, por supuesto. Y hay parte de intereses económicos en que sea así. Pero también, desde el punto de vista de la seguridad, es más adecuado tener un parqué de dispositivos a la última versión (casi como ocurre en iOS/OS X), que encontrarte con la fragmentación de Android/Windows).
Que vamos, todo tiene su punto bueno y su malo. Que todo el mundo debería poder elegir si quiere volver más inseguro su dispositivo a cambio de que quizás vaya mejor con una versión anterior. Pero de ahí a facilitarlo… No tengo del todo claro, como te contaba, que sea lo más acertado.
Máxime al ser conscientes de que uno de los mayores retos de seguridad al que nos estamos enfrentando en la actualidad se debe, precisamente, a estar rodeados de dispositivos incapaces de actualizarse y profundamente inseguros.