31 de octubre de 2013

"De propósito general" es algo más que una definición

La mayoría de sistemas operativos predominantes que utilizamos a diario son considerados "de propósito general", es decir, no están diseñados y optimizados para una tarea específica, sino que intentan abarca un rango muy amplio de funcionalidades, a diferencia de los de propósito específico, diseñados para tareas muy concretas.

El hecho de que un sistema operativo sea "de propósito general" es algo que se suele pasar por alto, pero que a veces tiene un coste, aunque por la regla general es muy positivo. Y no todos entienden o se acuerdan de que pensar en el "propósito general" fuerza a pensar los problemas de una manera diferente: recuerden los flamewars en los que se ha acusado a Linux de centrarse demasiado en servidores y estar condenado por ello a no ser óptimo en el escritorio, por ejemplo.

El caso es que hoy nos encontramos con un ejemplo de libro de las ventajas de un diseño de "propósito general": Acaba de publicarse Android 4.4 "Kitkat". En su esfuerzo por reducir la patética y negada hasta la saciedad brutal fragmentación de Android y por adaptar a relojesotro tipo de formatos con hardware menos potente, Google se ha esforzado por reducir los requisitos de memoria del sistema operativo. Y la lista de técnicas que han usado para lograr reducción de uso de memoria es curiosa:
OEMs building the next generation of Android devices can take advantage of targeted recommendations and options to run Android 4.4 efficiently, even on low-memory devices. Dalvik JIT code cache tuning, kernel samepage merging (KSM), swap to zRAM, and other optimizations help manage memory
"Kernel Samepage Merging (KSM)", es desduplicación de memoria, es decir, si dos páginas de memoria tienen el mismo contenido, el sistema operativo borra una copia y referencia a sus usuarios a la otra. Fue introducido incluido en 2.6.32, hace casi 4 años. Pero lo curioso es que es una técnica típicamente de virtualización que fue desarrollada en Linux por Red Hat. Cuando se tienen en memoria varias VMs virtualizadas de un mismo sistema operativo, la desduplicación puede ahorrar cantidades de memoria considerables.

Lo bueno de que Linux sea un sistema operativo de propósito general es que Android puede usar ahora ese mismo sistema de desduplicación. ¿Quien podría haber predicho hace cuatro años que un sistema pensado para servidores acabaría siendo utilizado en teléfonos móviles de última generación?

29 de octubre de 2013

La buena estrategia de exigir que todos los drivers sean de código abierto

Desde sus inicios se ha criticado a Linux el hecho de no facilitar la creación de drivers propietarios. No sólo porque la propia licencia hace que cualquier driver propietario sea probablemente ilegal, sino por el hecho de no tener una API/ABI estable. Desde sus inicios hay gente que ha predicho que Linux no conseguiría buena compatibilidad de hardware hasta que abandonara esa senda de despreocupación de aficionados y espíritu hacker y se pusieran a hacer las cosas en serio, con profesionalidad, preocupándose por las peticiones de los fabricantes de hardware.

Sin embargo, tras tantos años sin hacer ni caso a esas exigencias, el soporte de hardware es cada vez mejor y más completo, un curioso hecho fácil de constatar al que que los críticos rara vez prestan atención.

Hasta Nvidia está cediendo últimamente y publicando cada vez más información sobre sus tarjetas para ayudar a los desarrolladores del driver libre Nouveau, a pesar de que es el mejor driver propietario para Linux. Los drivers para tarjetas gráficas de AMD cada vez tienen mejor rendimiento, e Intel sigue invirtiendo tiempo y dinero en los suyos. Mesa va a introducir soporte de OpenGL 3.2 y 3.3 en la próxima versión. Se ha tardado, pero están ahí, y una vez que se ponga al día -ahora mismo Mesa tiene que desarrollarse con rapidez sólo para ir disminuyendo la distancia-, soportar hardware de última generación será más fácil.

La guinda del pastel puede ponerla Steam OS: Al igual que ocurrió con los servidores, una vez que Linux se populariza en un sector, los fabricantes de hardware de ese sector tienen la necesidad de que su hardware funcione sin problemas en Linux.

Al final, tras tantos años, no facilitar la creación de drivers propietarios no sólo no ha causado los problemas que muchos predecían, sino que además ha traído ventajas. La ventaja de la portabilidad, o de que los drivers tengan tiempos de soporte y mantenimiento mucho más largos (mucho hardware antiguo que funcionan sobre Linux sin problemas dejaron de hacerlo hace años en versiones modernas de Windows). La ventaja de que no se eliminen características por capricho de un directivo. Y, sobre todo, la ventaja de que no mantener una ABI interna ha permitido a Linux evolucionar con flexibilidad todos estos años para llegar a todos los rincones donde ahora llega.

Y es que los críticos de la ausencia de una ABI de drivers estable, como por ejemplo, Miguel de Icaza, olvidan que los drivers no son un especie de programa que utiliza el kernel como quien utiliza una librería, sino que son parte misma del kernel; y olvidan que los drivers no deberían ser un asunto de fabricantes de hardware, que por definición sólo piensan en vender hardware nuevo y siempre les pesa gastar dinero en soportar el viejo, sino de programadores, a quienes les pagan por soportarlo lo máximo posible.

11 de octubre de 2013

Noticias Wayland (II)

El 11 de Agosto hice una lista de noticias recientes relacionadas con Wayland. Con la publicación de Wayland/Weston 1.3 hoy se hace necesaria otra recopilación de noticias nuevas aparecidas desde entonces:

Se ha insistido mucho aquí que el cambio de X.org a Wayland no consiste tanto en que Wayland/Weston evolucionen, sino en que otros proyectos adopten Wayland. Como puede comprobarse, Wayland está en plena efervescencia.