30 de diciembre de 2008

Sobre como ATI afianza el liderazgo en Linux con soporte 3D para tarjetas ATI R600/700

Phoronix cuenta que AMD publicará en un mes documentación para hacer funcionar la "parte 3D" sus tarjetas con chips R600/700 en Linux. Pero además, hoy han publicado el correspondiente driver DRM. Está claro que el apoyo de AMD/ATI a Linux no era cosa de unos días, ni de publicidad, sino un apoyo real que día a día se materializa en más y más código real que resuelve los problemas de la gente...

Esto situa cada vez más a AMD/ATI en una posición privilegiada en el mundo Linux. Antes de que AMD/ATI empezara con esto, solo Intel tomaba una determinación de soporte de Linux igual de firme. Pero los gráficos integrados de Intel solo tienen potencia para mover un escritorio compiz, ver DVDs o jugar a juegos simples: más que suficiente para la mayoría de la humanidad, razón por la cual los chips gráficos de Intel son los que más vendidos y los que tienen mayor cuota de mercado, pero corto de potencia para los usuarios con más conocimientos informáticos y vicio jugón. Para bien o para mal los usuarios Linuxeros suelen ser de esos, y prefieren contravenir la tendencia general de la humanidad eligiendo potentes gráficas ATI o Nvidia.

Hasta ahora, muchos de ellos escogían Nvidia por la mejor calidad de sus drivers frente a AMD/ATI: Puestos a escoger un malvado driver propietario, mejor uno bueno que uno malo. En breve toda esa gente empezará a escoger gráficas ATI por razones obvias: buena potencia -además, tengo entendido que AMD/ATI ha hecho una jugada maestra y sus las últimas gráficas son mejores que las correspondientes de Nvidia- y drivers libres y capaces. ¿Teniendo esto, quien querría una Nvidia después de esto?

Un servidor, sin ir más lejos, a la hora de renovar su placa base, escogió una con gráficos Intel integrados. En aquel tiempo ya se oía de la aproximación de AMD/ATI al software libre, pero no había nada sólido, así que tiré a lo seguro: Jamás juego, y a pesar de poder ni tan siquiera uso ya compiz a diario. Aun así, compré esta placa base pensando en que algún día, cuando lo de AMD/ATI progresara, desactivaría los gráficos integrados de Intel y compraría una ATI bien soportada por drivers libres. Parece que ese día está a la vuelta de la esquina.

Al menos que Intel dé la sorpresa con Larrabe, claro está....

25 de diciembre de 2008

Lo que traerá Linux 2.6.28, parte II

Linus se me ha adelantado, pero aquí está: La segunda parte del resumen de las principales novedades del aún no publicado Linux 2.6.28 (lista completa en ingles, aqui). La primera parte fue dedicada a Ext4, la principal novedad de esta versión. He aquí un resumen del resto:

  • GEM, el gestor de memoria gráfica: En la última década el hardware gráfico ha evolucionado a un ritmo asombroso. Las GPUs de hoy tienen una inmensa capacidad de cálculo que tradicionalmente (utilizar esta palabra al hablar de la evolución del mundo informático tiene cierta ironía) solo ha sido aprovechada por aplicaciones especializadas que hacen uso de opengl/directx, como juegos y el diseño 3D; los escritorios 2D que todo el mundo conoce y utiliza han seguido usando este hardware moderno del mismo modo que usaban el antiguo, el que inició la "revolución del escritorio" en los 80-90. Es decir, con métodos ineficientes. Hay mucha potencia de cálculo en las GPUs que no se utiliza al menos que uses un juego. Por otra parte, la arquitectura del subsistema gráfico de Linux está lejos de considerarse perfecta, incluso desde el punto de vista de la arquitectura gráfica del hardware antiguo. Para empezar, hay varios drivers luchando para conseguir acceso al mismo recurso (la tarjeta gráfica): La consola basada en el framebuffer, la consola VGA sin framebuffer, el driver DRM que está dentro del kernel, el driver 2D de X.org que funciona en espacio de usuario...esta situación provoca toda clase de problemas y proporciona un rendimiento subóptimo.

    Se ha trabajado mucho en los últimos años para modernizar la arquitectura gráfica de Linux de manera que esté bien diseñada y que sea capaz de utilizar toda la potencia de las GPUs modernas y futuras. En 2.6.28, Linux incluye una de las partes más importantes de esa arquitectura: Un gestor de memoria para la memoria de la GPU, llamado GEM ("Graphic Execution Manager"). El propósito es disponer de un gestor central para gestionar "objetos buffer", su localización, su cacheado, su mapeado y su sincronización. En los cimientos de GEM se están construyendo muchas otras mejoras : Kernel Modesetting, DRI2, UXA (una implementación de EXA basada en GEM).

    Todo este código ha sido retrasado durante bastante tiempo, debido a que había un gestor de memoria anteriormente, llamado TTM, que casi fue incluido en Linux 2.6.24, hasta que de repente la gente de Intel apareció con las primeras versiones de GEM. Se decidió que éste era mejor que TTM, y se consideró necesario retrasar la inclusión de TTM y la renovación de toda la arquitectura gráfica para estabilizar GEM. Esta es la razón por la que en esta versión GEM solo funciona con el driver i915, y el soporte de X.org solo está implementado en la versión 2.5.0 del driver Intel. Existen parches preliminares que ofrecen soporte para otros drivers que serán incluidos en futuras versiones.

  • Soporte de "Ultra Wide Band" (WB), USB inalámbrico y UWB-IP: UWB es una un protocolo de comunicación punto-a-punto de bajo consumo y alta velocidad, que utiliza un amplio espectro (3.1-10.6 GHz). Está optimizado para comunicaciones dentro den el espacio de una habitación (480Mbps a 2 metros, 110Mbps a 10). Sirve como capa de transporte a otros protocolos, como el USB inalámbrico, el protocolo de enlace WiMedia (Ethernet/IP sobre UWB) y, en el futuro, Bluetooth y 1394. Linux 2.6.28 añade el código necesario para implementar una pils UWB, así como drivers para los dispositivos más comunes

  • Escalabilidad de la gestión de memoria:
    • Mejoras al algoritmo de reemplazo de páginas: Los sistemas con mucha memoria tienen muchas (millones) de páginas. Cuando el algoritmo de reemplazo tiene que buscar una página candidata a ser enviada al swap, tiene que buscar entre todas las páginas, y en los grandes sistemas esta puede ser una tarea muy costosa. En 2.6.28, las páginas respaldadas por archivos (páginas correspondientes al cache de un archivo y que una vez descartadas de la memoria pueden volver a ser leidas de ese archivo) y las páginas anónimas (las que no corresponden a ningun archivo -por ejemplo las obtenidas a través de malloc()- y que, por lo tanto, tienen que ser escritas en el swap antes de ser descartadas de la memoria) son clasificadas en dos listas diferentes, en lugar de una sola, como sucedía anteriormente. Los algoritmos encargados de seleccionar una página pueden por lo tanto mirar en una de esas listas sin tener que mirar la otra. Tambien existen páginas que no pueden ser descartadas de la memoria en absoluto, por ejemplo, las que están mlock()eadas, o las pertenecientes a un sistema de archivos ramfs. Esas páginas se ubican en una tercera lista que no será consultada por ningún algoritmo de selección de páginas, por la simple razón de que no puede descartarse ninguna de ellas.

    • Reescritura de la capa vmap: En 2.6.28, se ha reescrito el asignador vmap utilizando rbtrees y flusheado "vago" de la TBL, para proporcionar una implementación rapida y escalable. Algunas comparativas que ejercitan este asignador se han acelerado por 20 o más.

  • Congelador de procesos de containers: El congelador de procesos de containers es un subsistema implementado como cgroup que utiliza el congelador de procesos de la suspensión por software para congelar y reiniciar grupos de procesos arbitrariamente escogidos por el usuario. Es inmediatamente útil para ir encolando scripts de mantenimiento. Será tambien útil en el futuro para implementar reinicio y checkpointing de containers.

  • Traceador de arranque: El proposito de este traceador es ayudar a los desarrolladores a optimizar los tiempos de inicio: guarda los tiempos de las initcalls. Su propósito es ser parseado por el script hallado en scripts/bootgraph.pl para crear gráficos que muestren las ineficiencias del proceso de arranque, dando una representación visual de los retrasos que hay entre las initicalls. Los usuarios tendrán que activar CONFIG_BOOT_TRACER, y arrancar el kernel con los parámetros "initcall_debug" y "printk.time=1" (este último si no se tiene activada las marcas de tiempo en cada mensaje de dmesg), y ejecutar "dmesg | perl scripts/bootgraph.pl > output.svg" para generar los gráficos.

  • Protección del disco contra golpes: El estándar ATA/ATAPI-7 especifica los detalles sobre el comando IDLE IMMEDIATE. Enviar este comando debería hacer que la unidad se pusiera en modo de reposo y descargara los cabezales del disco. Esta característica se utiliza en los portátiles modernos junto a acelerómetros y un software apropiado para implementar una herramienta de protección del disco. La idea es detener todas las operaciones de I/O del disco y aparcar los cabezales cuando se puedan anticipar situaciones criticas.

    Para cada dispositivo ATA, Linux 2.6.28 añade el archivo /sys/block/*/device/unload_heads. Escribiendo un valor entero a este archivo apartará los cabezales del respectivo dispositivo de los platos del disco durante el número especificado de milisegundos. Cuando el temporizador expira, las operaciones continuan normalmente. El máximo valor aceptado son 30.000 milisegundos (30 segundos). Sin embargo, existen algunos discos duros que solamente cumplen con una versión anterior del estándar ATA, pero que soportan esta característica de todos modos. Desgraciadamente, no hay una manera segura que Linux pueda utilizar para detectar esos dispositivos, asi que para ellos no se podrá escribir en su archivo unload_heads. Si sabes que tu disco duro verdaderamente lo soporta (por ejemplo, porque quien te vendió el portátil te lo ha dicho), entonces puedes ordenar al kernel que lo active escribiendo el valor especial -1 al archivo. Lee esta página para más información de como Linux soporta la protección de discos duros de los Thinkpads IBM/Lenovo.

  • Protocolo de red Phonet: El protocolo "Phone Network" (PhoNet) es un protocolo de comunicación orientado a paquetes que ha sido desarrollado por Nokia para ser utilizado en los módems de sus móviles tanto para IPC como RPC. Con la familia de sockets Phonet, los procesos pueden enviar y recibir y enviar mensajes de/hacia el modem, o de cualquier otro dispositivo externo conectado al modem; el modem se ocupa del ruteo. Los paquetes Phonet pueden ser enviados a través de diferentes conexiones hardware: USB con la interfaz CDC Phonet, infrarrojos, Bluetooth, un puert serie.... Este protocolo es un requisito para que Maemo pueda utilizar la conectividad de móviles; tambien puede usarse para controlar móviles Nokia.

  • Redes: Proxying transparente, nuevos drivers, DSA...
    • Soporte de la Arquitectura Distribuida de Switchs (DSA): DSA es un protocolo para gestionar los chips de los switchs. Los switchs que este driver soporta son los que se pueden encontrar embebidos típicamente en routers y puntos de acceso.

    • Soporte de proxying transparente: Esta característica (perdida hace 5 años) permite el proxying transparente, es decir, soporte para gestionar sockets IPv4 TCP y UDP no locales. Añade un target de iptables "TPROXY", que es algo parecido a "REDIRECT". Solo puede ser utilizado en la tabla "mangle" y es útil para redireccionar tráfico a un proxy transparente. No depende de NAT, a diferencia de REDIRECT.

    • Nuevos drivers de red: Esta version añade unos cuantos drivers nuevos: atl2, SMSC LAN9500 USB2.0 10/100, enic: Cisco 10G Ethernet, qlge: Qlogic 10Gb Ethernet, jme: JMicron Gigabit Ethernet

  • Tracepoint: Los tracepoints son otro mecanismo para insertar puntos estáticos de trazado, que es utilizado por herramientas como LTT (Linux Trace Toolkit).

  • Drivers -staging: Dentro del kernel Linux existe una controversia entre la gente que piensa que los drivers nuevos deberían ser incluidos lo antes posible en el kernel, siendo aun de mala debido a su corta edad; y la gente que piensa que solo deberían incluise drivers con ciertos niveles de alta calidad. Para solucionarlo, se ha creado un repositorio llamado "-staging", en el que se incluyen varios drivers de los que son muy nuevos y suelen encontrarse en sus propias páginas web y no en el repositorio principal de Linux. Estos drivers se ubican en drivers/staging y son mantenidos ahí mientras no tengan la calidad necesaria. En el log completo en inglés se puede leer la lista de drivers -staging incluidos en esta versión.

  • FIEMAP: Cuando una aplicación quiere saber como se ha almacenado un archivo en el disco (por ejemplo, un programa de copia de seguridad que quiere saber si un archivo es del tipo "sparse", para no tener que copiarle entero), utiliza la ioctl fibmap. Pero esta ioctl es subóptima - solo puede pedir información sobre un solo bloque cada vez, lo cual es demasiado ineficiente en el caso de grandes archivos. La ioctl FIEMAP sin embargo devuelve una lista de extents, permitiendo devolver la información de un archivo en una sola llamada

22 de diciembre de 2008

Ext4 (lo que traerá Linux 2.6.28 parte I)

Parte de la documentación de Linux 2.6.28 en el fascista y opresor idioma ejpañol (versión en inglés de este documento).

Ext4 es la evolución del sistema de archivos más utilizado en el mundo Linux, Ext3. En muchos sentidos Ext4 es una mejora más profunda de Ext3 que la que Ext3 fue de Ext2. Ext3 consistió básicamente en añadir journaling, pero Ext4 modifica ciertas estructuras críticas del sistema de archivos, como las destinadas a almacenar los datos de los archivos. El resultado es un sistema de archivos con un diseño mejorado, mayor rendimiento y fiabilidad. Las principales mejoras que ofrece son:

  • Compatibilidad: Cualquier sistema de archivos Ext3 existente puede migrarse a Ext4 con un sencillo procedimiento de dos comandos a ejecutar en modo de solo-lectura (procedimiento descrito más adelante). Es decir, que puedes mejorar el rendimiento, límites de almacenamiento y características de un sistema de archivos sin necesidad de reformatear y/o reinstalar tu SO y entorno de software. Si necesitas las ventajas de Ext4 en un entorno de producción, puedes actualizar el sistema de archivos. El procedimiento es sencillo y no pone en riesgo los datos (eso si, se recomienda hacer copia de seguridad de los datos críticos, incluso si no estás actualizandote el sistema de archivos :). Ext4 solamente utilizará sus nuevas estructuras en los nuevos datos que se escriban, los datos antiguos podrán continuar siendo leidos y modificados cuando sea preciso. Esto significa, por supuesto, que una vez que se convierte el sistema de archivos a Ext4, no se puede regresar a Ext3 (aunque hay una posibilidad de montar un sistema de archivos Ext3 con Ext4 de modo que no se utilize el nuevo formato de disco, y así poder volver a montarlo con Ext3, pero así se pierden muchas de las ventajas de Ext4)

  • Mayores tamaños del sistema de archivos y de los archivos: Ext3 soporta 16 TB como máximo tamaño del sistema de archivos, y 2 TB de tamaño máximo de cada archivo. Ext4 añade direccionamiento de bloques de 48 bits, y tendrá 1 EB de tamaño máximo de sistema de archivos y 16TB de tamaño máximo de archivo. 1EB = 1.048.576 TB (1EB = 1024 PB, 1 PB = 1024 TB, 1 TB = 1024 GB). ¿Por qué 48 bits, y no 64? Hay algunas limitaciones que necesitan ser solucionadas antes de que Ext4 sea capaz de soportar 64 bits, y esas limitaciones no han sido tratadas en Ext4. Las estructuras de datos de Ext4 han sido diseñadas teniendo esto en mente, de modo que una futura actualización a Ext4 implementará soporte completo de 64 bits. 1EB será suficiente (en serio :) hasta que llegue ese momento. (Nota: el código para crear sistemas de archivo mayores de 16 TB no está presente en ninguna versión estable de e2fsprogs)

  • Escalabilidad de subdirectorios: El número máximo de subdirectorios que puede contener un solo directorio en Ext3 es 32.000. Ext4 rompe ese límite y permite un número ilimitado de subdirectorios.

  • Extents: Los sistemas de archivo tradicionales derivados de Unix, como Ext3, utilizan un sistema de mapeo de bloques indirecto para llevar cuenta de cada uno de los bloques correspondientes a los datos de un archivo. Este sistema es ineficiente para los archivos grandes, especialmente a la hora de borrarlos o truncarlos, porque el mapeado mantiene una entrada para cada bloque, y los archivos grandes tienen muchos bloques -> mapeados gigantescos cuya manipulación es lenta. Los sistemas de archivo modernos utilizan un sistema distinto llamado "extents". Un extent es básicamente un montón de bloques físicamente contiguis. Básicamente dice: "Los datos están en los próximos n bloques". Por ejemplo, a un archivo de 100 MB puede asignarsele un solo extent de ese tamaño, en vez de tener que crear un mapeado indirecto para 25.600 bloques (4KB por bloque). Los archivos gigantescos son divididos en varios extents. Los extents mejoran el rendimiento y tambien ayudan a reducir la fragmentación, ya que animan a a utilizar rangos continuos en el disco.

  • Asignación multibloque: Cuando Ext3 tiene que escribir nuevos datos al disco, hay un asignador de bloques que decide qué bloques libres serán utilizados para escribir esos datos. Pero el asignador de bloques de Ext3 solo puede asignar un bloque (4KB) de una vez. Esto significa que si el sistema necesita escribir los 100 MB de datos mencionados anteriormente, tendrá que llamar al asignador de bloques 25600 (¡y solamente son 100 MB!). No solo esto es muy ineficiente, no permite al asignador optimizar la política de asignación porque no puede saber cuantos datos van a asignarse en total, solo sabe lo de un bloque. Ext4 utiliza un "asignador multibloque" (mballoc), que puede asignas muchos bloques en una sola llamada, en lugar de un bloque por llamada, evitando de ese modo sobrecarga. Esto mejora el rendimiento, y es especialmente útil con asignación diferida y extents. Esta característica no afecta el formato del disco. Tambien hay que tomar nota de que el asignador de bloques/inodos de Ext4 tiene muchas otras mejoras, descritas en detalle en este documento.

  • Asignación diferida: La asignación diferida, en inglés delayed allocation, es una mejora de rendimiento (no cambia el formato del disco) que se encuentra en sistemas de archivos modernos como XFS, ZFS, btrfs or Reiser 4; no es una técnica muy expandida por haber sido considerado hasta hace poco como "peligrosa", y que consiste en retrasar la asignación de bloques lo más posible, contrariamente a lo que los sistemas de archivo tradicionales (como Ext3, reiser3, etc) hacen: asignar los bloques tan pronto como es posible. Por ejemplo, si un proceso escribe con write() algo, el sistema de archivos asignará inmediatamente los bloques en los que se colocarán los datos - incluso si los datos no se están escribiendo al disco en ese mismo momento y se van a mantener en el cache algún tiempo. Esta aproximación tiene desventajas. Por ejemplo, cuando un proceso está escribiendo continuamente datos a un archivo que va creciendo, write()s sucesivos asignarán bloques para los datos, pero el sistema de archivos no puede saber si el archivo va a continuar creciendo. Sin embargo, la asignación diferida no asigna los bloques inmediatamente cuando el proceso usa write()s; en vez de eso, difiere la asignación mientras los datos del archivo se mantengan en el cache, hasta que se escriban definitivamente en el disco. Esta aproximación da la oportunidad al asignador de bloques de optimizar la asignación en situaciones en las que el antiguo sistema no podía. La asignación diferida encaja muy bien con las dos anteriormente mencionadas características, extents y asignación multibloque, porque en muchos tipos de carga, cuando el archivo se escribe finalmente al disco, puede asignarse en extents cuya asignación de bloques se ha llevado a cabo con el sistema de asignación multibloque. El rendimiento mejora, y la fragmentación se disminuye en ciertos tipos de carga.

  • Fsck rápido: Hacer un fsck es una operación muy lenta, especialmente el primer paso: comprobar todos los inodos del sistema de archivos. En Ext4, al final de cada tabla de grupo de inodos se almacena una lista de inodos no utilizados (junto a un checksum, por seguridad), de modo que el fsck no los comprobará. El resultado es que el tiempo de fsck mejora de 2 a 20 veces, dependiendo del número de inodos utilizados. Hay que notar es fsck, y no Ext4, quien construye la lista de inodos no utilizados. Esto significa que tendrás que pasar un fsck para que se construya la lista de inodos no utilizados, y entonces el próximo fsck será el que sea más rápido (necesitas pasar un fsck para convertir un sistema de archivos Ext3 a Ext4 de todos modos). Hay tambien una característica que toma parte en este aceleramiento del fsck - "flexible block groups" - que tambien acelera las operaciones normales del sistema de archivos.

  • Checksumming del Journal: El journal es la parte más utilizada del disco, lo cual hace que los bloques que forman parte de él sean más susceptibles a sufrir un fallo de hardware. Y tratar de recuperar un log de un journal corrupto puede inducir a una corrupción masiva. Ext4 hace un checksum del journal para saber si los bloques del journal están fallando o están corruptos. Pero el checksumming del journal tiene un bonus: permite convertir el sistema de dos fases de Ext3 a una sola fase, acelerando las operaciones del sistema de archivos hasta en un 20% en algunos casos - asi que en este caso se gana fiabilidad y rendimiento al mismo tiempo. (Nota: La parte de esta característica que mejora el rendimiento, el logging asíncrono, está desactivado por defecto y será activado en el futuro)

  • Defragmentación en vivo: (Esta característica no está disponible en 2.6.28, pero probablemente lo estará en la próxima versión). Aunque la asignación diferida, los extents y la asignación multibloque ayudan a reducir la fragmentación, con el uso los sistemas de archivos pueden fragmentarse. Por ejemplo: Escribes tres archivos en un mismo directorio y contiguamente en el disco. Algún día necesitas actualizar el archivo del medio, pero el archivo actualizado es un poco más grande, asi que no hay suficiente espacio para él. No queda otra opción que fragmentar el exceso de datos a otro lugar del disco, que causara movimiento de brazo extra en el disco y por tanto pérdida de rendimiento, o tambien puedes asignar para el archivo actualizado espacio contíguo en otro lugar lejano a los otros dos archivos, lo cual causará movimiento de brazo si una aplicación necesita leer todos los archivos de un directorio (por ejemplo, un gestor de archivos creando miniaturas de un directorio lleno de imágenes). Además, el sistema de archivos solo puede ocuparse de ciertos tipos de fragmentación, no puede saber, por ejemplo, que debe mantener todos los archivos relacionados con la carga del SO juntos, porque no sabe qué archivos están relacionados con la carga del SO. Para solventar este problema, Ext4 soporta defragmentación en vivo, y hay una herramienta llamada e4defrag que puede defragmentar archivos individuales o todo el sistema de archivos.

  • Características relacionadas con los inodos: inodos más grandes, marcas de tiempo con granularidad de nanosegundos, atributos extendidos rápidos, reserva de inodos...

    • Mayores inodos: Ext3 soporta la configurabilidad de los tamaños de inodo (mediante el parámetro -I de mkfs), pero el tamaño de inodo por defecto es de 128 bytes. Ext4 por defecto tendrá 256. Este aumento es necesario para hacer espacio a varios campos extra (como la granularidad de nanosegundos o el versionamiento de inodos), y el tamaño restante del inodo será utilizado para almacenar atributos extendidos que sean lo suficientemente pequeños como para caber en ese espacio. Esto hará que el acceso a esos atributos sea mucho más veloz, lo cual aumenta entre 2 y 7 veces el rendimiento de las aplicaciones que hacen uso de estos atributos extendidos apodados "rápidos".

    • Reserva de inodos: La reserva de inodos consiste en reservar varios inodos para futuros archivos cuando se crea un directorio, confiando que serán utilizados en el futuro. Esto mejora el rendimiento, porque cuando los nuevos archivos sean creados en ese directorio podrán usar esos inodos que habían sido reservados. Por tanto, se mejora el rendimiento de la creación y eliminación de archivos.

    • Marcas de tiempo con granularidad de nanosegundos: Esto significa que los campos como mtime (modified time) o atime (access time) podrán usar una resolución de nanosegundos, en vez de la que hace uso Ext3, que tan solo alcanza una granularidad a nivel de segundo.

  • Preasignación persistente: Esta característica (disponible en Ext3 en las últimas versiones del kernel, y emulada la por glibc de no estar disponible) permite a las aplicaciones preasignar espacio de disco: El sistema de archivos asigna el espacio libre y los bloques necesarios, pero no hay ningún dato en ellos hasta que la aplicación verdaderamente se decida a escribirlos en el futuro. Esto es lo que las aplicaciones P2P hacen cuando preasignan espacio para descargas que tardarán horas o días en completarse, pero implementado con más eficiencia por el sistema de archivos y con una API genérica. Tiene muchos usos: en primer lugar, para evitar que las aplicaciones (como los P2P) lo hagan ellas mismas ineficientemente llenando un archivo de ceros. Segundo, para mejorar la fragmentación, ya que los bloques se asignarán de una sola vez para todo el archivo lo más contiguamente posible. Tercero, para asegurarse de que las aplicaciones tienen el espacio que ellas creen que van a necesitar, lo cual es importante para las aplicaciones tipo RT, ya que sin preasignación el sistema de archivos podría llenarse en la mitad de una operación importante. Esta característica está disponible mediante la interfaz de glibc posix_fallocate().

  • Barreras activadas por defecto: Esta opción mejora la integridad del sistema de archivos a costa de algo de rendimiento (se puede desactivar con "mount -o barrier=0", recomendado si estás haciendo benchmarks). De este artículo de LWN: "Antes de escribir el registro de commit [en el journaling], el código del sistema de archivos debe estar totalmente seguro de que todos los datos de las transaciones ha llegado al disco. Escribir los datos al disco en orden no es suficiente; los discos hoy en día tienen grandes caches y reordenarán las operaciones para mejorar el rendimiento. Asi que el sistema de archivos debe ordenar explicitamente al disco que escriba todos los datos del journaling antes de escribir los datos del registro de commit; si el registro de commit se escribe antes, el journal podría corromperse. El subsistema de E/S del kernel facilita esta tarea a travñes del uso de barreras; en esencia, una barrera prohibe la escritura de cualquier bloque tras la barrera, hasta que todos los bloques que se hayan escrito antes de la barrera estén realmente escritos en el disco. Utilizando barreras, los sistemas de archivos pueden estar verdaderamente seguros de que su estructura se mantiene siempre consistente en el disco"


Cómo usar Ext4:

Esta es la primera versión estable de Ext4, asi que aunque todo el desarrollo y lanzamiento final de este sistema de archivos se ha enlentecido y retrasado mucho para garantizar el mismo nivel de estabilidad que podría esperarse de las actuales implementaciones de Ext3, no dejan de aplicarse las mismas reglas que se aplican a todo software ".0".

Algo muy importante que hay que tener en cuenta es que NO hay soporte de Grub para Ext4. Bueno, eso no es del todo cierto: Hay soporte, pero no en las versiones utilizadas por las distros estables. Hay soporte en la rama de desarrollo de GRUB2, pero solo desde este commit. Hay paquetes de grub2 disponibles en Ubuntu y distros derivadas de Debian bajo el nombre "grub-pc". En la rama estable 0.9x, no hay soporte oficial, pero hay un proyecto de Google SoC que lo desarrolló, y Google encuentra parches. Asi que escoje. Las próximas distros basadas en Linux 2.6.28 probablemente tengan el soporte de un modo u otro. La opción segura es dejar tu directorio /boot en una partición Ext3.

Tambien necesitas una version de e2fsprogs actualizada, se recomienda la última versión estable, 1.41.3.

Migrar a Ext4 es muy sencillo. Hay tres métodos diferentes:

  • Creando un sistema de archivos desde cero: La opción más fácil, recomendada para las nuevas instalaciones. Simplemente actualiza el paquete e2fsprogs a Ext4, y crea el sistema de archivos normalmente.

  • Migrar un sistema de archivos Ext3 existente a Ext4: Tienes que utilizar la herramienta tune2fs en el sistema de archivos deseado, y ese sistema de archivos DEBE estar desmontado. Ejecuta:

    # tune2fs -O extents,uninit_bg,dir_index /dev/tusistemadearchivos

    Despues de ejecutar esto, DEBES pasarle un fsck. Si no lo haces, Ext4 NO MONTARÁ el sistema de archivos. Este fsck es necesario para devolver el sistema de archivos a un estado consistente. Te dirá que se han encontrado "checksum errors in the group descriptors". Es normal, eso es exactamente lo que tiene que reconstruirse para poder ser montado con Ext4, asi que no te sorprendas al verlos. Dado que para a preguntarte cada vez que encuentra uno de esos fallos, siempre responde que SI. Si no quieres que te pregunte, pásale el parámetro "-p" a fsck, significa "reparación automática":

    # fsck -pf /dev/tusistemadearchivos

    Hay otra cosa que debe mencionarse. Todos los archivos existentes continuarán utilizando el formato antiguo de mapeo indirecto para mapear todos los bloques de los datos. La herramienta de defragmentación en vivo permitirá migrar cada uno de esos archivos al formato de extents (utilizando una ioctl que ordena al sistema de archivos que reescriba el archivo en el formato de extents; puede utilizarse con seguridad mientras se usa el sistema de archivos con normalidad)

  • Montar un sistema de archivos Ext3 con Ext4, sin utilizar, de entre las nuevas características de Ext4, las que cambian el formato del disco. Podrás volver a montar el sistema de archivos con Ext3 de nuevo: Puedes montar un sistema de archivos existente con "mount -t ext4 /dev/tusistemadearchivos /mnt". Hacer esto sin haber hecho el proceso de conversión descrito en el punto de arriba forzará a Ext4 a no utilizar las características nuevas que utilizan el nuevo formato, solamente se utilizarán las características que no lo cambian, como mballoc o la asignación diferida. Se podrá, de este modo, volver a montar el sistema de archivos de nuevo como Ext3. Pero obviamente así te pierdes muchas de las ventajas de Ext4...

18 de diciembre de 2008

Si eres legal, COMPARTE

Como co-propietario de propiedad intelectual musical disponible a la descarga en redes P2P (cuyo nombre no pienso revelar, asi que no pregunten), me uno a la campaña: Si eres legal, comparte.

No pido sin embargo la dimisión del ministro: tan solo pido que se retracte de las campañas "antipiratería" y de futuras leyes que intenten penalizar el P2P, y que anule el canon de la SGAE (no necesita prohibirlo por la simple razón de que no es legal). No es mucho pedir, me parece. Si me permiten citar a Rosa Díez: tan solo pido que aplique la ley, no acepto demagogia.

17 de diciembre de 2008

Motorola se pasa a Android

...definitivamente. Incluso afirman que van a parar el desarrollo en 2009 para adaptar toda su línea de productos a Android...es decir, se cambian de forma total y absolutamente radical.

He de confesar que aunque en un principio Android me pareció una cosa interesante, con el tiempo (cuando Google cerró el desarrollo al público temporalmente, y despues de ver ciertas chapucerías como la de reiniciarse el móvil tecleando cuando escribias "reboot" con el teclado) me pareció que no tenía muchas posibilidades reales, pero el tiempo está demostrando que va pisando fuerte...

11 de diciembre de 2008

Exijamos la gratuidad de licencias en el software de la educación pública

Parece ser que una profesora estadounidense se ha puesto como un basilisco debido al proselitismo linuxero de uno de sus alumnos. El chaval enseñó Linux en su portátil y regaló CDs de muestra a sus compañeros, y la profesora, que parece tener una extraña fobia Linuxera, se los ha requisado y ha enviado un correo de protesta al creador de la distro en cuestión, HeliOS. Razonando que "ningún software es libre y es dañino que esa falsedad se extienda", y que vivimos en un mundo Windows, y no se cuantas tonterías más....

Al margen de la estupidez de la profesora -que "curiosamente" pertenece a un sindicato en el que Microsoft ha hecho su propio proselitismo monetario-, nunca ha de desaprovecharse la oportunidad de denunciar la importantísima colaboración de los colegios públicos en el mantenimiento de Windows como SO monopolístico.

El problema está en las clases de informática, que se suelen hacer con productos de Microsoft. ¿Cuantos millones se gastan los Gobiernos anualmente en formar a los estudiantes desde la más tierna edad en el uso de estos productos? O dicho de otra manera: ¿Cuantos millones se ahorra Microsoft con este sistema de formación masiva pagada por los contribuyentes? Luego se dice que todo el mundo sabe usar Windows, pero lo cierto es que aunque no sepan, se lo enseñan en la escuela pública...

Pero no acaba todo ahí. El estado TAMBIEN se gasta dinero en licencias de software para los equipos de enseñanza. Es decir, que el estado se gasta millones en licencias de productos Microsoft....para luego encima formar gratuitamente a nuestros niños en el uso de esos productos. Es un negocio por partida doble, muy lucrativo para Microsoft y con cargo a los bolsillos del contribuyente.

Y no me vengan con que es que Microsoft regala muchas licencias a los colegios y a las universidades. Es cierto: Microsoft hace ofertas y regalos especiales al sistema educativo. Pero 1) suele hacerlo como parte de negociaciones multimillonarias con el organismo político de turno en los que sale ganando de otro modo 2) no regala TODO el software (a menudo tan solo hacen descuentos)

Según entiendo yo las cosas es lo mínimo que debería hacer, regalar. Ya que la escuela pública va a formar con dinero público a los niños en el uso de esos productos, lo mínimo que se debería exigir desde el gobierno es que la empresa que va a salir beneficiada por esa formación regale todas las licencias de software. Todas, y si no están dispuestos, se da oportunidad a otra empresa que si que lo esté. Es un trato justo: El sistema educativo enseña a los alumnos a utilizar las nuevas tecnologías, y la empresa gana usuarios. De hecho la empresa sale favorecida, deberían aceptarlo sin quejas.

Por eso, me parece que es un noble fin exigir a la Administración -sea del partido que sea- que en la escuela pública el software escogido para la enseñanza informática -y tengan en cuenta que no he mencionado para nada en este razonamiento al software libre- se haga así por ley: Prohibido enseñar software que exija a las escuelas pago de licencias. Y por eso, creo que más de una persona comparte conmigo este bonito punto que tan bien encajaría en un programa electoral:

EXIJAMOS LA GRATUIDAD DE LAS LICENCIAS DE SOFTWARE EN LA EDUCACIÓN PÚBLICA (*).

(*: No tengo ningún odio particular contra la educación privada, pero la educación privada es asunto de quien la contrata y debe buscarse la vida por su cuenta)

4 de diciembre de 2008

Python 3.0

Acaba de anunciarse la publicación de Python 3.0. Una gran noticia. Además de por el magnífico lenguaje, la gente de python merece un aplauso por como han afrontado la enorme dificultad que supone sacar una nueva versión incompatible con la anterior y que no va a funcionar con la enorme masa de código python ya existente: En python 2.6 añadieron una opción que advertía a los programadores de las partes del código que no iban a funcionar en esta nueva versión, permitieron usar la funcionalidad de la futura versión 3.0 mediante "from __future__ import...", han escrito un programa que intenta (en la medida de lo posible, supongo) parchear código 2.x para que funcione en 3.0...lo han organizado todo perfectamente, minimizando al máximo el coñazo de tener que portar todo el código python disponible en el mundo a la nueva versión.

Mientras tanto, en perl empiezan a preocuparse seriamente sobre la viabilidad futura del lenguaje. No me extraña en absoluto: comparen el circo en el que se ha convertido Perl 6 con la magnífica estrategia y prontitud de Python 3.0...

29 de noviembre de 2008

Cita del día

"When you let the FSF define what Freedom is, you've already lost it." - un tipo en slashdot

La economía de la Cancamusa

Via Ramon Rey me encuentro con este artículo: Mobuzz, Dans y la economía de la cancamusa, sobre el cierre de Mobuzz y la economía de las startups en general. Es uno de los mejores artículos que he leido en la blogosfera en mi puta vida.

28 de noviembre de 2008

¿Qué fue de Knoppix?

¿Se acuerdan? Igual alguno la sigue usando. Yo no, y hace mucho que no oigo nada de ella, asi que asumo que ustedes, igual que yo, se han olvidado completamente -y sin duda, ¡ay!, injustamente- de ella. A mi me ha venido a la cabeza ahora mismo no sé por qué. Me pongo a pensar y muchas distribuciones han acabado o acabarán adoptando el modus operandi de Knoppix -que muchos seguiremos escribiendo erroneamente "Knoopix"-, probablemente por eso ha dejado de tener la importancia que tuvo en su día. Pero su importancia fue vital en la Historia de Linux.

Recuerden bien. Por alguna razón, los linuxeros tendemos a olvidarnos del pasado muy rápido. Pero hubo un día, aunque cueste creerlo, en que no existía Ubuntu, ni su ola de renovación y aire fresco que afectó a todas las distros (lo reconozcan o no). Eran días en los que el kernel 2.6 no existía o acababa de salir y no tenía mucha difusión. Eso implicaba que no existía udev o era tan nuevo que aun no se usaba demasiado, y por lo tanto era necesario que las distros usaran "detectores de hardware" en la instalación para hacer fácil el proceso. Muchas no los usaban, y en las que se usaban se podría decir que lo de "detectar hardware" era algo muy metafórico: fallaba más que las retransmisiones desde el extranjero del telediario de Antena 3, y había que recurrir a la consola y /etc/modules a la mínima. Además, aparte del kernel estaban las X. Recomendar Linux a quienes eran tus amigos era a veces una manera de que dejaran de serlo...

Para completar el cuadro, los instaladores de muchas distros eran en modo texto, y en las que no lo era los instaladores eran a veces tan malos, que como si lo fueran. Y lo que es aun más importante, amigos: No existía Firefox. Mucha gente ha olvidado como era el mundo antes de Firefox, pero aquello si que fue un cambio radical. Antes de Firefox se usaba Mozilla, Galeon, Konqueror, Opera...pero debido a que ninguno de ellos podía desafiar a IE, había muchas, muchísimas páginas que simplemente no funcionaban con nada que no fuera IE. Solo por eso, Linux no podía ser utilizado por personas normales. Así de duro. Fíjense en lo muchísimo que hemos avanzado. Ni tan siquiera se había acuñado en la lengua popular el palabro "Web 2.0" (algo positivo tenían que tener aquellos tiempos).

Volviendo a Knoppix, recuerdo perfectamente el bombazo que supuso. La idea de los LiveCD no era nueva, pero no era un concepto que estuviera precisamente popularizado entre la gente, informáticos o no. Poder usar un SO decente completo desde un CD fue una verdadera revolución. Ya no tenías que instalar todo el SO para ver si Linux soportaba tu máquina, recomendabas usar Knoppix para ver si arrancaba y punto. Knoppix tenía el mejor sistema de autodetección de hardware. Pero su punto fuerte de la autodetección estaba en.....¡configurar las X automáticamente! Aquello fue una auténtica conmoción cerebral, especialmente para el mundo Debian (Knoppix era un derivado de Debian).

Al mismo tiempo, con Knoppix se podía probar -e incluso usar- Linux tal y como es en el mundo real. Para un mundo muy reticente a particionar solo para instalar y probar otro SO, aquello fue una revolución. Recuerdo que hasta las personas más ignorantes informáticamente reconocían que eso de usar un SO desde un CD era una puta genialidad. Además, luego se añadió un instalador que funcionaba desde el propio LiveCD, lo cual fue genial y una gran innovación en el mundo de los SO de propósito general. Todo buen friki linuxero tenía el CD de knoppix a mano, pues además de todo eso, tambien servía de CD de recuperación. Luego llegó Ubuntu, que batió a todos en términos de facilidad, y que desde que añadió LiveCD como método principal de arranque a su ISO consiguió que las LiveCD alternativas (¿recuerdan aquel proyecto de "metadistros" de hispalinux?) quedaran bastante relegadas a un rincón...

¿Qué ha sido de Knoppix? Sigue existiendo, obviamente -nunca he pretendido decir lo contrario-, mucha gente fijo que se la sigue bajando, pero tambien es evidente que está en declive. Sus foros oficiales tienen poquísimo tráfico de mensajes, tardan un año en lanzar una nueva versión...acabará desapareciendo con el tiempo, pues no puede competir con el LiveCD de Ubuntu, Fedora o Suse. Pero es justo reconocer la enorme importancia que tuvo para Linux. Gracias a maravillas como Knoppix es como Linux ha conseguido evolucionar. Reconozcamos el valor de los guerreros caidos en batalla.

23 de noviembre de 2008

Caso real II

En el anterior post no han faltado quien me critique por no hacer las cosas "correctamente". Pero dejemos de un lado a quienes ven una especie de desafio por mi parte en atreverse a copiar y borrar archivos, y pasemos a una nueva parte de estos divertidos episodios. Me temo que no es igual de buena, pero ya saben lo que se dice sobre las segundas partes.

Me dispongo a instalar Windows XP. Pero antes, quiero integrarle el SP3 al CD con XP SP2 impoluto que poseo siguiendo el procedimiento perfectamente documentado por Microsoft - que inexplicablemente requiere la utilización de programas de terceros, por cierto. Pero, puestos a crear un CD de instalación de Windows razonablemente actualizado, parece absurdo no integrar tambien IE 7 y WMP 11, que por razones que escapan a mi control no vienen incluidos en el SP3. Además, como el SP3 viene con IE6, he de integrarlo despues de integrar el SP3, porque si integro antes el IE7, el SP3 me lo "desactualiza" al IE6. Y aquí empiezan los problemas.

Resulta que al intentar integrar el IE7, me da un error absurdo que no me permite ni saber qué pasa ni si se puede solucionar. Googleando, advierto que no soy el único que sufre ese error. Parece que simplemente no puedo integrar IE7 en el XP SP3 en mi caso, y les juro por mis muertos que el CD de XP SP2 era bueno, y que la integración con el SP3 ha sido perfecta. La herramienta nLite si que me lo integra, pero el resultado es un XP al cual le faltan archivos y se detiene la instalación a la mitad, y además no me gustan las soluciones extraoficiales. El WMP es peor: directamente no se puede integrar. Existe una herramienta de integración creada por la comunidad de Internet para suplir este vacio absurdo, pero paso de soluciones extraoficiales: Derrotado, paso de integrar y comprendo que no me queda más remedio que instalar el XP SP3 con su IE6 y su WMP viejo y, una vez instalado, actualizar a IE7 y WMP 11 a mano. No me gusta hacerlo así, porque IE y WMP son partes vitales del sistema -o eso dice Microsoft para evitar sentencias antimonopolio- y no me gusta andar toqueteando en ese tipo de sitios. ¡Porca miseria!

Una vez instalado Windows, IE7 y WMP11, procedo a instalar el messenger. Como el ordenador en cuestión no está conectado a Internet, ni ganas que tengo de conectarlo aun, gugleo para buscar el instalador. La teoría es que yo busco el instalador en Internet, lo bajo, lo copio a una memoria USB, lo paso al otro ordenador, hago doble click y el programa se instala. ¿Fácil, verdad? Quien iba a decir que lo que antaño fue algo sencillo iba a devenir en un intrincado vericueto de complicaciones.

Buscando en Internet, no tardo mucho en notar algo raro: Es imposible encontrar un instalador de la última versión de messenger. Los instaladores que hay son todos de versiones antiguas. Busco una explicación, y la encuentro: resulta que desde que Microsoft centró su estrategia en la marca 'Live', y el messenger pasó a ser 'Live Messenger' -aunque por dentro sea el mismo programa-, dejaron de publicar instaladores independientes del messenger. En su lugar, existe un 'Live Installer', de 2 MB, que a su vez te deja seleccionar los programas 'Live' que quieres instalar: Messenger, Writer, etc. Una vez seleccionados, se los baja y los instala. Eso está muy bien, pero,¿no puedo bajarme alguno de ellos independientemente y copiarlo a un disco? No, no puedo, estás obligado a usar el instalador Live y bajártelos a través de Internet. La razón oficial es que estos productos no están orientados a distribuciones en entornos empresariales multiusuario...oiga, pero yo no soy una empresa. Tan solo quiero bajarme un programa y copiarlo a un disco porque tengo que instalarlo en un ordenador que no está conectado a Internet aun. "Pues te jodes y lo conectas".

Calma, no nos desanimemos. Investigando aun más, encuentro que existe un Live Installer de 50 y pico MB con todos los programas Live dentro. "¡Salvado!", pienso. Lo bajo, lo llevo al otro ordenador, y hago doble click. Cabría esperar que se instalara, ¿verdad? Falso. Un nuevo error: Necesita Microsoft Agent versión blah blah blah. Váyase usted a Windows Update e instálelo. En fin, tampoco es un gran problema: vuelvo al ordenador con Internet, me bajo la dichosa actualización -esta si que puedes bajártela independientemente-, regreso, la instalo, y vuelvo a intentar instalar el messenger. Ya no tengo el error...¡pero me pide que me conecte a Internet! Como lo oyen: Me sale una ventanita pidiéndomelo con dos botones: Reintentar y Cancelar. ¿Y por qué necesito conectarme a Internet, si estoy utilizando el instalador de 50 MB que ya lo tiene todo? Resignado, me doy cuenta de que no voy a tener más remedio que conectar el ordenador a Internet. No tenía pensado conectarle porque, en mi ingenuidad, pensé que para instalar un puto messenger no iba a necesitarlo, pero Microsoft logra una vez más romperme los planes.

Ya que voy a tener que conectarme inesperadamente a Internet, decido utilizar esta vez el Live Messenger normal, no el pack de 50 MB, porque éste último te instala automáticamente todos los programas Live sin darte opción a otra cosa, y yo solo quería el Messenger. Yo no esperaba hacerlo así, pero Microsoft me obligó a cambiar de planes. Voy a messenger.msn.es y me lleva a la página de descarga, donde además de mostrarme un botón de descarga, me da la opción de poner Live Search como buscador por defecto, de instalar la bárra "Live" en el navegador de internet, de mandar a Microsoft información anónima, etc etc. Las desactivo todas y le doy a bajar. Comienza el instalador, y me vuelve a preguntar las mismas putas preguntas que ya había desactivado: Se nota que tienen ganas de "incitar" a la gente a usar Live Search.

Lo segundo que hace el instalador es escanear todo el disco duro en búsca de productos Live. ¿Para qué necesita escanear todo el sistema, no deberían registrarse los productos Live en el registro o estar en alguna ruta definida del disco duro? Se ve que no, porque se pasa 5 minutos escaneando todo y enlenteciendo el resto del sistema una barbaridad (solo hay 256 MB de RAM). Para mi que es una excusa para buscar porno en el disco duro. Una vez terminado el absurdo escaneo de productos live o porno, el instalador se da cuenta de que si estoy utilizando el instalador Live es porque no hay programas Live instalados, y comienza a bajarse los 17 MB del messenger. Desde los 0 MB hasta los 16.99 el indicador de porcentaje de descarga marca invariablemente un 99% (lo destaco porque no saber hacer un indicador de descarga correctamente me parece un crimen), y cuando se baja el último byte salta al 100%, y el messenger comienza a instalarse.

Llegados a este punto, me veo obligado a hacer un comentario estético. El instalador Live tiene un "look Vista" -barras de progreso verdes, etc-, el instalador de IE7 tiene tambien su look propio, y el del WMP 11 idem, y además son instaladores claramente distintos, al menos en el caso de Live. ¿Tan mal se llevan los departamentos en Microsoft que no pueden usar un instalador común en vez de reinventar cada uno el suyo? Además, el WMP11 tiene una apariencia Vista con botones del gestor de ventanas diferentes a las de XP, el Messenger idem, el IE7 tiene una interfaz diferente tanto del XP como de Vista, el Office tiene su propia interfaz Ribbon...¿y luego dicen que Linux no puede conquistar el escritorio por la dualidad de interfaces de usuario de las aplicaciones Gnome/KDE? Válgame Dios, quien dijo eso nunca se fijó en Windows...al final, resulta que Firefox cumple las guías de la interfaz mejor que la propia Microsoft.

Ya que me han obligado a conectarme, me dispongo a entrar en Windows Update (WU) para instalar las actualizaciones críticas. Lo primero que me dice WU es que antes de ver mis actualizaciones tengo que instalarme una actualización. La instalo. Ahora, un popup me pregunta que si quiero enviar información a través de internet, con la opción de "No volver a preguntar" activada por defecto. Digo que si, que mande lo que quiera. Ahora, WU me dice que antes de ver mis actualizaciones tengo que instalarme una actualización. O sea, me dice lo mismo que antes, solo que se trata de otra actualización distinta, expresada con otras palabras y con otra apariencia. Llegados a este punto recuerdo que estamos ante una instalación de XP SP3, es decir, más que razonablemente moderna, y no entiendo porque a estas alturas del Lifecycle de XP los de Microsoft andan haciendo cosas que son incompatibles con las anteriores. En fin, le digo que vale. No recuerdo si una de estas dos actualizaciones me mandó reiniciar, aunque todo podría ser. El caso es que ahora vuelvo a abrir WU. Ahora me piden que instale un ActiveX. Otra actualización antes de empezar a actualizar: Y van 3. Lo instalo, y WU me da un error, un error sin código. Reintento mil veces, y nada. Miro el log de WindowsUpdate en C:\>Windows\, y no veo un error definido.

Me voy a dormir, y al dia siguiente el WU funciona perfectamente. Francamente, me parece increible que algo tan simple como actualizar el sistema sea TAN enrevesado. ¿Les parece que exagero? Pues no soy el único: Hace unos meses se reveló en un juicio un email de 2003 del mismísmo Bill Gates en el que se quejaba internamente de lo dificil que era usar Windows Update. 5 años despues, la compañía de software más grande del mundo no solo no ha hecho nada para solucionarlo, sino que ha seguido sacando nuevas actualizaciones incompatibles que complican aun más la situación.

Sin que sirva de precedente, déjenme terminar este post con una frase suya: "The lack of attention to usability represented by these experiences blows my mind".

21 de noviembre de 2008

Caso real

  • Necesito reinstalar Windows en una máquina. Por pura precaución y a pesar de que en principio no voy a formatear el disco, decido que voy copiar todos los datos -todo: eso de ponerse a seleccionar lo qué se copia y lo qué no es una pérdida de tiempo- del disco duro en otra máquina con XP. Conecto, pues, el disco a la máquina XP que hará de copia de seguridad del Windows a reinstalar.

  • Voy al explorador de Windows. Selecciono la unidad, cliqueo, le doy a copiar, voy al escritorio, cliqueo, pegar. Sencillo, intuitivo. Los archivos empiezan a copiarse.

  • Despues de media hora de copiar archivos, veo una ventana: "No se ha podido copiar el archivo noseque.dll". No me muestra la ruta ni me describe claramente el error, solo me da el nombre del archivo. El disco duro ha pasado previamente el chkdsk sin problemas, por cierto. Y es NTFS, no FAT.

  • El diálogo de error solo tiene un botón, con lo cual al pulsarle se detiene la copia. ¿Donde están esos diálogos con la opción de "ignorar y seguir copiando el resto de los archivos" cuando lo necesitas?

  • Si vuelvo a intentarlo es previsible que me vuelva a saltar ese mismo error, asi que en principio no puedo hacer una copia de ese disco duro. Para solucionarlo, decido borrar a mano el archivo que provoca el fallo de copia para que así continue copiando el resto de archivos. Como hay que reinstalar Windows, todos los programas van a ser reinstalados de cero, asi que me da exactamente igual borrar una dll o todas. Podría no haberlas copiado, tanto las dll como todos los programas, claro. Pero como he dicho, cuando las cosas funcionan bien eso es una pérdida de tiempo. Solo los errores de Windows me obligan a modificar mi modus operandi. Borrar el archivo que da el error no me garantiza que no voy a volver a tener fallos con otros archivos que despues de media hora detengan de nuevo la copia, pero es la única opción que me deja el explorador de Windows a estas alturas.

  • Como el diálogo de error no me informó de la ruta del archivo que dió el problema, tengo que usar el buscador de archivos para localizarle. Salen dos con el mismo nombre, en distintas rutas. ¿Cual de los dos dió el problema? No lo se. No puedo saberlo. Decido borrarlos ambos, ¡qué remedio! El caso es que me deja, asi que queda demostrado que el origen del error no es de permisos.

  • Decido dejarme de juguetes de niños y tiro esta vez con el XCOPY, con opción de continuar la copia aunque se encuentren errores. Pero se detiene a la mitad de la copia. ¿Razón? "No hay suficiente memoria". Se trata de un XP SP3 recien instalado sin ninguna aplicación aun y que ni tan siquiera ha sido conectado a internet y que tiene 1 GB de RAM. ¿Qué demonios pasa? ¡Increible!

  • Decido volver a intentarlo con el juguete explorer. Antes de volver a intentar la copia, decido borrar los datos que ya había copiado, para que no me salgan las advertencias de "¿desea sobreescribir el archivo x?" cuando yo no esté delante, porque aunque cuando te lo pregunte la primera vez respondas "si a todo", te lo puede volver a preguntar otras dos o tres veces con otro tipo de archivos que no tenga la misma extensión que el primero (no me pregunten por qué, pero es así).

  • ¡No puedo borrar la carpeta con los datos copiados hasta ahora! Me da un error: "No se ha podido borrar Archivo". ¡No me dice el nombre del archivo que no se puede borrar, no hay ningún archivo llamado "Archivo", se trata de un diálogo de error erroneo (curiosa paradoja)! Tampoco me deja continuar con el borrado del resto de archivos: igual que al copiar, solo hay un botón y el único resultado posible es detener el borrado. Reintento y reintento: Imposible. ¡No podía copiar y ahora no puedo borrar!

  • Decido ir borrando las carpetas principales una a una hasta encontrar la que no se puede borrar, posteriormente entrar en esa carpeta e ir borrando sus subcarpetas hasta encontrar la que no se puede borrar, etc. Siguiendo el método, averiguo que la carpeta que no se puede borrar es la que almacena los datos de configuración de messenger de un usuario, que tiene mil subdirectorios organizados de una forma demencial. Quien iba a decirnos que hacer un programa que consiste primordialmente en enviar cadenas cortas de texto a través de un socket iba a complicarse tanto con el tiempo.

  • Poco a poco voy borrando carpetas y descendiendo cada vez más a las profundidades de la jerarquía...hasta que llego a una carpeta a la que ni tan siquiera puedo entrar. ¿Razón? ¡La ruta es demasiado larga! Ese es el error que me da el juguetexplorer. Avidino el problema: en el sistema original el disco duro es la raiz, pero al estar copiando ahora todo en el escritorio de otro sistema, a la ruta de cualquier archivo copiado hay que añadirle además la ruta del lugar donde lo estoy copiando, "C:>\documents and settings\usuario\Escritorio\Carpeta-donde-estoy-copiando-las-cosas\". Esa cadena hace que se llegue el límite de ruta máxima y no puede acceder a las zonas más profundas de la jerarquía de carpetas.

  • Pero lo que no puedo dejar de preguntarme es: ¿Como puede haberse llegado a copiar un archivo cuya ruta es inaccesible? Es decir: vale, hay un límite de ruta máxima...pues bien, cuando se llegue a él al intentar copiar un archivo, que haya un error que impida la copia. ¿Por qué eso no ha ocurrido cuando copié estas carpetas? ¿Por qué no hubo un error? ¿Por qué he podido crear una ruta a la que ahora no puedo acceder? ¿Quizás el explorer tiene un tamaño de ruta máxima menor que la del sistema de archivos, y lo que XCOPY acepta como ruta normal para explorer puede ser algo que se pasa del máximo? En cualquier caso, sería una chapuza: señores, esto es un bug como una casa. Si un archivo no va a poderse acceder, como mínimo no debería haberse permitido su copia en primer lugar.

  • Si fuera un usuario normal, me tendría que quedar con esta terrible realidad: No puedes borrar la carpeta. Ahí se quedaría para siempre. ¡Increible! Afortunadamente, un servidor conoce los comandos de Windows, y sé además que cada carpeta o archivo de más de 8 dígitos en Windows tiene un equivalente en el antiguo formato de nombres "8.3" de MSDOS. "Documents and Settings", por ejemplo, es tambien "docume~1". Esto me permite acceder a las mismas rutas utilizando esos nombres cortos, lo cual me ayuda a llegar a jerarquías más profundas sin tocar el límite. Tiro de RMDIR /S, y finalmente logro borrar la carpeta maldita.

  • Decido que en vez de copiar el disco al escritorio, lo copiaré en la raiz del disco (C:\>carpeta-donde-lo-copiaré\, aunque en realidad he usado un nombre más corto, de un solo digito), para hacer las rutas mas cortas. Uso XCOPY, ya no me fio nada del juguetexplorer. Funciona, se copia todo. ¡Asi que lo que hizo fallar el XCOPY la primera vez con el error de que no había memoria suficiente fueron las rutas demasiado largas! Tal vez si el error hubiera sido lo suficientemente descriptivo, o si ese programa tuviera gestión de memoria y errores decente, me hubiera ahorrado mucho tiempo. Tambien podrían arreglar el explorer para que pueda hacer operaciones NORMALES. Solo han tenido más de una década con un monopolio de facto y miles de millones para hacerlo, pero se ve que andan muy ocupados preparando anuncios que nos convezcan de que, joder, Vista no es tan malo. Y de que merece la pena comprar una licencia de Windows 7 para tener una imitación barata del Dock de OS X.

Ya ven. Y no estaba haciendo algo complejo. He intentado copiar una puta carpeta. Conclusión no precipitada: Windows no me sirve ni tan siquiera para hacer tareas tan rutinarias como copiar y borrar archivos. No me vengan contando cuentos de que si es usted un radical linuxero y bla bla bla: He visto su sistema, lo he usado, me he tragado su mierda y no me ha gustado, vayan a venderselo a otros que soporten el olor. Sé que hay herramientas de copia de terceros que hacen maravillas, pero me parece un insulto que un sistema que pretenda ser serio necesite recurrir a terceros para hacer algo tan sencillo como copiar y borrar archivos. He gastado demasiado tiempo enfrentándome a límites y situaciones totalmente absurdas en Windows, mientras que en Linux copio y migro sistemas enteros a diferentes particiones o discos de otros sistemas con una órden de 4 dígitos. Una orden que no va a fallarme ni sacarme popups absurdos jamás al menos que no se haya corrompido el sistema de archivos. Es la diferencia entre un sistema bien construido y uno mal hecho, y al que no le guste que se arrasque, porque así están las cosas y así se las hemos contado.

18 de noviembre de 2008

Nueva lista de Los 500 Principales...

...supercomputadores. Aquí está la lista.

Linux crece hasta el 87.80%, casi ya tocando la línea del 90%: casi 9 de cada 10 ordenadores de la lista son Linux. Windows, por su parte, pasa de 3 a 4 superordenadores con Windows HPC 2008, pero como uno parece ser actualización de un Windows HPC 2003, el número total de sistemas Microsoft respecto a un año no varía: 5, un 1%.

Hay que mencionar que Sun vuelve a la lista con un equipo OpenSolaris, lo cual era de esperar y probablemente aumentará teniendo en cuenta que Lustre, el sistema de archivos que utiliza más del 50% de los ordenadores de la lista bajo Linux y que tambien funcionaba con Solaris, fue comprado por Sun. OS X, por otro lado, pasa de 2 sistemas a 1, al borde de salirse de la lista, lo cual no creo que quite el sueño a Steve Jobs.

14 de noviembre de 2008

¿Exactamente en qué es mejor Office que OpenOffice?

El otro día, el gran poeta, escritor, pintor y ahora comentarista de blogs, el famoso Anónimo, decía esto:

"sí, el openoffice va bastante por detrás del office, aunque no nos guste reconocerlo"

En primer lugar, debe ser usted a quien no le gusta reconocerlo. En este blog ya se ha dicho mil veces que OpenOffice está, por regla general, por detrás de Office. La mejor prueba es la interfaz: el último Office tiene la interfaz "Ribbon" que, buena o mala idea, es en cualquier caso definitivamente mejor que la anterior. OpenOffice sigue con la anterior.

Ahora, que bien mirado, ¿en qué supera realmente Office a OpenOffice? En las primeras versiones, lo superaba en muchas cosas. Pero a día de hoy, solamente en aspectos avanzados. La realidad es que para un usuario normal y corriente, para un amplísimo porcentaje de usuarios profesionales de Word y para la práctica totalidad de ciudadanos normales y corrientes de la calle, OpenOffice es más que suficiente.

Quiero decir con esto que a la hora de la verdad, las suites ofimáticas no son ningún GRAN problema para quienes migran a Linux. Sin duda lo será para algunos, pero no para la mayoría, que es quien más importa. Además, OpenOffice está mejorando más rápido de lo que Office añade nuevas funcionalidades, con lo que en cada nueva versión, se queja menos gente. Esto viene a significar que el valor de Office como factor determinante para quedarse con Windows (y como forma de negocio) se está esfumando cada día un poquito más.

Pero que digo esfumarse, ¡ha desaparecido completamente, si tenemos en cuenta las últimas noticias! Como ustedes quizás sepan, Microsoft ha anunciado hace poco que va a centrar todo su desarrollo de aplicaciones en la "nube" de Internet: Azure. Si, la mayor empresa de software del mundo ha decidido girar radicalmente hacia la dirección de internet. Y ya tienen un "Office Web" al estilo de Google docs. Un Office que es el futuro de Office. Es decir, no es un experimento: El futuro desarrollo de Office se hará a ese Office.

¿Pero saben lo mejor? Ese Office va a funcionar en Firefox.

¿Pero saben lo mejor? Ese Office no está hecho con Silverlight (excepto algunas pequeñas funcionalidades).

¡Eso significa que cualquier máquina Linux podrá usar Office, y no una imitación sino el Office de Microsoft, el verdadero, sin emulación ni trucos raros!

En otras palabras, Microsoft acaba de hacer que sea más fácil migrar a Linux. Está pasando lo que Joel On Software dijo que ocurriría en su memorable artículo "How Microsoft lost the API war". Win32 ya no importa, ni tan siquiera .NET importa demasiado (al menos que Silverlight tenga un éxito radical, que de momento no). Microsoft acaba de dejar de lado a Windows como producto estrella. Lo hacen porque saben que su imperio Windows mengua y necesitan reconstruirlo sobre la web, porque si no lo hacen ellos, lo harán otros. ¿Para qué se molestarían, si no? Y las demás empresas del mundo software le seguirán: algunas, como Google y Adobe, ya se le han adelantado.

Por lo tanto, ya no importa que Office sea mejor o peor que OpenOffice. Tampoco importa qué programa funciona o no funciona en Linux: A largo plazo, casi todo -y eso a largo plazo puede incluir hasta los juegos- funcionará en Linux como lo haría en Windows.

3 de noviembre de 2008

La malvada Ubuntu ataca de nuevo

Ubuntu ha tenido desde sus inicios un gran éxito, y como consecuencia inevitable de ese éxito muchos la han visto siempre con malos ojos. Empezaron con ello los talibanes debianitas, quienes la acusaron -y acusan aun- de "no jugar limpio", a pesar de que cumplían todas las reglas existentes, incluidas las de la propia Debian. Ahora, en este artículo, un trabajador de Mandriva acusa a Canonical básicamente de "competencia desleal": El argumento es que mientras que Mandriva tiene que trabajar duro y sacar dinero para subsistir, Canonical vive del bolsillo de Shuttlework, por lo tanto la manera de funcionar de Canonical dañaría a Linux en su conjunto porque impide que otras empresas prosperen.

En primer lugar hay que decir que no hay duda que Canonical lleva perdiendo demasiado dinero desde hace tiempo, y si no mejora sus finanzas a largo plazo es posible incluso que Ubuntu simplemente acabe desapareciendo. Shuttlework asegura que en 2-3 años la empresa puede empezar a dar beneficios, pero dada la trayectoria de Canonical, y la carencia absoluta de cifras de ventas y gastos -no está en bolsa y no necesita dar explicaciones a nadie- que permitan respaldar esas afirmaciones me lo hacen poner en duda. Hasta el día de hoy, Canonical se ha comportado más bien como una especie de proyecto de I+D.

Y es ahí donde la afirmación de que Canonical daña a otras empresas Linux empieza a perder sentido. Desde un punto de vista económico no tiene sentido, porque parte del supuesto de que el mercado de clientes de Linux es limitado, y lo que gane uno se lo lleva otro. Ojo, a corto plazo sin duda si que es así: si una empresa quiere usar Linux y contrata a Canonical en vez de a Mandriva, habrán perdido un cliente debido a que Shuttleworth"subvenciona" las pérdidas de Canonical y que eso les permite tener unos precios más bajos. Mandriva no podría competir en precios porque entraría en pérdidas.

Sin embargo, a largo plazo las cosas son muy distintas. La base de clientes potenciales de Linux procede en gran medida de anteriores usuarios de Windows. Y hay suficiente mercado Windows en el mundo para que Mandriva pueda tener éxito. Si no lo tiene, tal vez deberían plantearse que su producto no es lo bastante bueno, porque llegados a ese caso el problema sería la falta de competitividad de Mandriva frente a Microsoft,. Además, no creo que sea del interés de Shuttleworth perder dinero eternamente, sino al contrario, ganarlo, y ganar mucho, por lo que no creo que esté "subvencionando" a propósito precios bajos para luchar contra otras empresas Linux, sino más bien lo contrario: debe estar interesado en que su empresa prospere y recupere el dinero perdido, y para ello no puede dedicarse a ofrecer precios con márgenes demasiado endiablados.

Pero además, se trata de que estamos ante un negocio basado en software libre. Todo el dinero que Shuttleworth se gasta en mejorar Ubuntu está inmediatamente disponible para Mandriva, aumentando de ese modo las posibilidades de que Mandriva gane cuota de mercado a costa de Windows...

En resumen, que las crítica a Canonical me parecen absurdas e infundadas. Sin Canonical, Linux estaría un poco más atrás de lo que está hoy, y cuantas más Canónical, más adelantará Linux. Cuantos más millonarios locos se gasten sus fortunas en empresas como Canonical, mejor para el software libre y peor para Microsoft.

Linus apoya a...Obama

Aunque supongo que a nadie le sorprende que un tipo como Linus Torvalds le de por decir que apoya a Obama -aunque no tiene derecho a voto-, como lo hace la mayoría de la gente del entorno del software libre, si que es interesante como justifica su elección, que creo que merece una mini-traducción:

"Nunca hay solo dos puntos de vista respecto a un problema, casi siempre hay un abanico de respuestas, y para cualquier pregunta importante, la respuesta correcta es, casi siempre"depende". Y no ser capaz de tan siquiera intentar comprender el otro punto de vista hace tomar malas decisiones

No me malinterpreten - me encanta ver a gente que se apasiona con lo que hacen. Es solo que cuando eso se vuelve algo exclusivo, empieza a tener mala pinta. Ya no es solo pasión por algo, se convierte tambien en pasión contra algo. Esta es, por ejemplo, una de las razones por las que intento evitar demasiado sobre Microsoft - me apasiona Linux (obviamente), pero francamente, creo que toda esa historia de "Linux contra Microsoft" es estúpida [...] Eso es tambien por lo que no me gustaba (y no me gusta) la GPLv3 - creo que muchos de los cambios no fueron hechos debido a ser "pro-software-libre", sino más bien una reacción absurda contra cosas como TiVO [...] La razón por la que menciono este tema es que a pesar de que no puedo votar, quería decir publicamente que espero que Obama sea el próximo presidente de EEUU el próximo martes. [...] Si alguien quiere una razón, simplemente mira (o escucha) el discurso de Obama "Call to Renewal" del 2006. [...] Merece la pena, simplemente para observar algo raro: que alguien mencione la religión en EEUU sin ser "blanco o negro" [...] Hay otras razones, pero esa es la que originalmente me hizo confiar en que Obama ganara la nominación demócrata. Y lo que ha hecho desde entonces no ha cambiado eso. Es obviamente inteligente y reflexivo, y tiene un historial interesante que me hace creer que puede ver el lado de otros puntos de vista no solo en religión, sino tambien en lo que respecta a decisiones internacionales" - pueden leer el post completo en el enlace de arriba.

Personalmente, he de decir que cada vez Obama me gusta más. En las nominaciones demócratas manifesté mi total apoyo a Hillary Clinton, pues el programa de Obama era básicamente retórica. Por ejemplo, su posición respecto a Irak era una vaga promesa de "sacar las tropas", mientras que Hillary tenía un plan, así como lo tenía para montar un sistema de salud público, para gestionar la economía, etc. Obama no tenía nada. Revisando lo que pensaba de él, pienso que no me equivoqué, pues mi valoración era totalmente cierta, y opté por Hillary por conservadurismo, en el contexto en que lo ponía Borges: "Ser conservador es una forma de ser escéptico".

Sin embargo, una vez ganada la nominación, su vacuidad retórica se fue concretando en un programa, y es ahí donde Obama me ha sorprendido: Como dice Linus en ese post y se ha dicho en muchos sitios, incluido un magnífico artículo en The Economist, Obama muestra la suficiente inteligencia como para dejar atrás las tonterías de las ideologías, y centrarse en las ventajas y desventajas de las cosas, e intentar escoger la que tiene menos desventajas.

Eso fue lo que le llevó a cambiar de opinión en muchos aspectos de su programa, como por ejemplo el plan de retirada de Irak, que es básicamente el mismo que el de Hillary, el de Mc Cain e incluso que el de Bush, es decir, es el único plan posible: Retirarse poco a poco y con cuidadín. Esos cambios le valieron muchas críticas, pero rectificar es de sabios. El caso es que al final parece que Obama va a ser lo que al principio no parecía muy claro: un nuevo JFK.

28 de octubre de 2008

Windows 7: Una humilde opinión

Bueno, Microsoft está celebrando su PDC, y han presentado públicamente por primera vez Windows 7, asi que ya están empezando a salir capturas del sistema operativo que los informáticos tendrémos que arreglar gratis cada dos por tres a nuestros amigos y familiares dentro de unos años, a pesar de que, como todo el mundo sabe muy bien, Windows es muy fácil de usar por un usuario normal y corriente (lo que pasa es que las aplicaciones de terceros son muy malas, claro). Afortunadamente no han decidido rediseñar nada de cero, asi que la compatibilidad está asegurada, lo cual significa que no tendremos que dedicarnos a reinstalar XP en máquinas nuevas que traigan Windows 7 incorporado, como a mi me ha tocado hacer un par de veces con Vista.

La primera cosa que me llama la atención es que los "gadgets" de la "sidebar" de Vista se ponen en el escritorio, la sidebar desaparece. Es decir, que los gadgets pasan de ser un "extra" a ser un componente fundamental en el escritorio, cambiando radicalmente la concepción del escritorio utilizada en las últimas 2 décadas. Esto es exactamente lo mismo que hizo KDE que, a pesar de todas las críticas que se hicieron y se pueden hacer a KDE 4.0, han sido capaces de aquello de hacer camino al andar, a pesar de contar con poquísimos recursos. Es más, en KDE hasta se ha rediseñado todo para acomodarlo a esa idea, no es un simple "parche".

En segundo lugar, cambia la barra de tareas, otro de los elementos básicos de los escritorios no-Mac, que por alguna razón Gnome y KDE utilizan a pesar de ser completamente odiosos (al menos para mi). En su lugar tratan de imitar al Dock de Mac, aunque sin abandonar la barra de tareas: En vez de estar representado cada item de la barra por un miniicono+texto, pasa a ser un solo icono de gran tamaño. Como el Dock, vamos, solo que con la limitación de tratarse de iconos que representan a procesos en ejecución, y no sirve de icono para lanzar procesos nuevos. Además, cuando tienes varias instancias de un mismo programa abiertas, al hacer click en ese icono se te abre una representacion de las miniaturas de esas instancias en una imitación del gridview de OS X 10.5.

Aparte de esas dos mejoras, y de la aplicación del la interfaz Ribbon a algunas aplicaciones de Windows, no he visto aun nada sustancial que me llame la atención (es una de las cosas que más odio del software propietario, que dicen poco y no puedes adivinar mucho más). Aunque he de reconocer que me hace muchísima gracia que han puesto como sistema de configuración del UAC una ventana con un slider que puedes bajar o subir para que te salgan más o menos ventanas de petición de permiso de UAC.

23 de octubre de 2008

"Estatificador" de ejecutables

Una de esas herramientas geniales que nunca se te pasan por la cabeza, pero que una vez conocidas pueden volverse indispensables: ELF Statifier.

¿Que qué hace? Coge un ejecutable enlazado dinámicamente, y lo vuelve estático, es decir, le empaqueta dentro todas las librerías dinámicas que utilize (no se si las de dlopen tambien). De manera que puedes llevarte el ejecutable donde quieras, sin preocuparte de las dependencias de librerías. Interfiere con las medidas de seguridad incorporadas en los últimos kernels, pero aun así parece muy útil.

Se anima la fiesta en OpenOffice.org

Me entero vía LWN de que uno de los cargos de opensource de Sun dice, tachan tachan, que el proyecto http://go-oo.org es un fork maligno esponsorizado por Novell para competir contra la comunidad Openoffice.org, y que tiene como objetivo promover controlar el mercado Linux de OpenOffice, promover tecnologías de Microsoft y otras cosas.

Recapitulemos. OpenOffice, al igual que OpenSolaris, no son entidades independientes al estilo kernel.org, apache.org o gnu.org. Dependen en pequeña o gran medida de Sun Microsystems, y, como ya se ha dicho aquí varias veces, su comunidad tiene reglas que favorecen a dicha empresa, en concreto el tema de la asignación de copyright. Para conseguir que un parche sea incluido en el repositorio oficial de esos proyectos, tienes que firmar un acuerdo por el cual cedes o compartes con Sun tus derechos de copyright. Sun argumenta que eso es necesario para defender al proyecto legalmente, cambiar licencias y etc, pero resulta muy sospechoso que Sun utilize ese copyright para luego sacarse de la chistera sus propias versiones de OpenOffice.org, OpenSolaris y Java con código propietario añadido, código que Sun no necesita publicar porque, al poseer todos los derechos de copyright, puede saltarse las reglas que exigen las licencias. Es como si Red Hat albergara el proyecto de kernel.org, pidiera que le asignaran el copyright para incluir código en su repositorio, y luego en su RHEL sacara una versión del kernel con el código contribuido por otros, más código propietario que añadiera por si mismo pero no publica porque no necesita hacerlo.

A empresas como Novell, Red Hat o IBM no les gusta estas cosas y si, quieren contribuir código a OpenOffice, pero no quieren perder su copyright en manos de una empresa que lo utiliza en su contra, lo cual es muy lógico y comprensible. Por eso exigen que, como mínimo, el proyecto OpenOffice pase a ser una fundación independiente como GNU o Apache, las cuales piden la asignación de copyright, pero al no ser dependientes de ninguna empresa tienes la garantía de que no lo van a utilizar en favor de nadie.

Simon Phippsse se queja por tanto de que Novell, que ha estado aceptando el acuerdo de copyright durante años, haya dejado de hacerlo ahora. Se queja de que go-oo.org va por su lado y de que aunque niegan que go-oo.org sea un fork, técnicamente ya lo es. Todo ello lo mezcla con un sospechoso tonillo de que de "Novell es malo", y de que el propósito de go-oo.org es que OpenOffice sea controlado por Novell.

Pero si uno va a go-oo.org, resulta que parece más bien lo contrario: Están en contra de la asignación de copyright a una empresa, de las políticas de licencia impuestas desde esa empresa al proyecto, de la burocracia necesaria para hacer efectivo ese control. En suma, go-oo.org parece cualquier cosa menos un intento de controlar nada: Al contrario, reniegan a un control análogo al que existe en openoffice.org. Sun haría bien en abandonar sus absurdas prácticas "comunitarias", y establecer a OpenOffice.org como un ente independiente que agrade a todos los que contribuyen en el proyecto, antes de que el código de ambos sitios alcance diferencias irreconciliables y la única solución sea el enfrentamiento mutuo, algo que sin duda agradaría a Microsoft.

19 de octubre de 2008

Una versión que promete

Hace casi nada que salió Linux 2.6.27, pero en este tiempo ya ha dado tiempo a que en el repositorio de Linus entren la gran mayoría de cambios importantes que formarán parte de la versión final de 2.6.28. Entre esos cambios hay dos que, por su importancia, harán de esa versión una gran versión, más notable que una versión normal. Si uno echa un vistazo crítico a la lista de novedades de 2.6.27, en realidad no hay absolutamente nada que afecte de forma directa a un usuario normal de escritorio: como mucho drivers para la webcam. Lo que pasa es que el marketing hace mucho. 2.6.28 no necesitará marketing: Tiene ext4 y GEM.

GEM es el nuevo gestor de memoria para tarjetas gráficas. Se trata de la primera pieza del impresionante esfuerzo que se han estado haciendo todos estos años para modernizar el subsistema gráfico de Linux y dará paso a muchas otras mejoras, entre ellas la de unificar el acceso de todos los drivers gráficos en uno solo (en vez de los 3 que hay ahora: X.org, DRI, consola vga del kernel). En este artículo hacen un buen resumen de todas las partes implicadas y el gran avance que supone GEM como pieza central alrededor de la cual se irán añadiendo otras: DRI2, kernel "modesetting", una implementación de EXA basada en GEM...los juegos 3D son más rápidos (según benchmarks publicados) tan solo con la implementación de GEM presente (eso si, en 2.6.28 solo lo soportarán los drivers Intel)

Ext4 es una grandísima novedad que, en mi opinión, no recibie la atención que algo tan fundamental se merece. Es cierto que ZFS es mejor, y que debido a ello todo el mundo considera todo lo que no sea ZFS -con razón- como inferior, especialmente en el tema de la gestión de volumenes (que es algo que en el mundo del escritorio no tiene casi importancia, y en el mundo empresarial está LVM, que aunque es claramente inferior a ZFS, siempre puede utilizarse), pero de no haber existido ZFS, ext4 sería sin duda uno de los mejores sistemas de archivos de sistemas operativos de propósito general, compitiendo cara a cara con XFS, igualándole en muchos aspectos, incluso pasándole en algunos. Sin duda sería el mejor sistema de archivos de escritorio. Y algo así no es malo en absoluto, al contrario. Teniendo en cuenta que Linux se ha abierto paso y ha ganado benchmarks con ext3 en grandes sistemas (Red Hat siempre usa ext3 por defecto, por ejemplo), las mejoras de rendimiento que suponen ext4, unido a la facilidad de transición, son muy, muy relevantes. Es imposible tener semejante mejora de rendimiento con la actualización de una sola parte de un SO, exceptuando rarísimas ocasiones como esta.

(En mi blog de política, "¿Alguien ha visto a algún neocon?", que sorprendentemente casi ha sido portada de meneame)

10 de octubre de 2008

¿OO.org en peligro?

Michael Meeks, conocido desarrollador de OpenOffice.org, ha escrito un sustancioso post sobre los problemas de contribución de código en OpenOffice.org. La conclusión viene a ser que OpenOffice.org tiene escaso apoyo entre las corporaciones que suelen apoyar y colaborar con el software libre y el poco que tiene está declinando, que el históricamente principal contribuidor, Sun, está disminuyendo los recursos que le dedica (y probablemente lo seguirá haciendo mientras su situación financiera siga empeorando) y esos recursos perdidos no están siendo sustituidos con otros nuevos, que las contribuciones externas son escasas...en resumen: que OpenOffice como proyecto se está estancando, a diferencia del otros proyectos como el kernel.

Parte de las conclusiones del post son las mismas que un servidor contó aquí criticando el modelo de comunidad que Sun utiliza en OpenOffice.org, OpenSolaris y Java: Sun abusa de su posición de control del proyecto madre para pedir a la gente que les ceda el copyright a ellos. Eso, y los controles burocráticos que han implementado para gestionar ese tipo de requisitos, están ahogando a los proyectos, la gente no se siente animada a contribuir.

Especialmente reacias a compartir el copyright con nadie son las grandes corporaciones de software libre. Red Hat, Novell, IBM y compañía apoyan OpenOffice.org, pero les sienta como el culo tener que ceder el copyright a Sun para que luego vaya vendiendo una versión propietaria del proyecto. Este aspecto es especialmente crítico: El software libre no puede competir con el propietario sin el apoyo de esas corporaciones.

9 de octubre de 2008

-1, Irrelevante

Leo que Google añadirá en breve feeds RSS en los resultados del buscador. Lo leo, y sigo leyendo, y leo toda una explicación de como en el campo de proporcionar feeds de búsquedas Google va por detrás de los demás buscadores, y no se qué cosas sobre los servicios de notificación de variaciones en el resultado de búsquedas.

Y entonces me pongo a pensar en la mucha importancia que la gente y por lo tanto la prensa, o la prensa, y por lo tanto la gente, da a cosas que en realidad son completamente irrelevantes, y que los que tenemos una segunda vida en internet nos tragamos como tontos. Porque, contéstenme ustedes: ¿Para qué carajo necesita una persona normal un feed de una búsquedas? En serio. No se me ocurren muchos usos razonables para semejante invento. ¿Que en los primeros 10 resultados de Google ha aparecido una nueva página de fans de Rosa de España? Gracias al MSV (de Monstruo del Spagueti Volador: no confundir con Movimiento Stalin Vive) que tenemos feeds de las búsquedas, si no, podríamos no habernos enterado.

Se me ocurre otra teoría: un feed de las búsquedas es algo tan completamente irrelevante para la mayoría de la gente, que Google no lo ha hecho hasta ahora simplemente porque tenía cosas más importantes que hacer. Como por ejemplo, el "universal search". Porque, si nos ponemos a pensar, ¿cuanto tiempo podría tomarle a Google implementar algo así? Del mismo modo que el buscador actual coge los resultados de la búsqueda y formatea una página HTML de resultado, no parece excesivamente complicado para una compañía cargada de genios coger esos mismos resultados y formatear un documento RSS. De hecho un documento RSS es bastante más simple que su página HTML de las búsquedas.

Que buscadores como Live o Yahoo se centren en implementar semejantes tonterías, en vez de dedicarse a implementar cosas que la mayoría de usuarios quiera usar, explica las variaciones de cuota de uso de buscadores.

A diario en la blogocosa vemos noticias de este tipo, centradas a veces en cosas que en realidad no son tan relevantes. Incluso hay blogs que, como no, aprovechan estas tonterías supremas para hacer sesudos análisis de esas tonterías e intentar así atraer visitantes despistados. ¿Es que no tienen un mínimo de dignidad periodística?

7 de octubre de 2008

¡OMG, Linus Torvalds tiene un blog!

Gracias al anuncio de Linux 2.6.27-rc9 el mundo se ha enterado de que Linus Torvalds tiene un blog: http://torvalds-family.blogspot.com/

Este blog promete. Los admiradores de Linus no podemos contener la angustia en la espera de posts donde se desprecie a tal o cual cosa, software, persona u organización, donde se afirme con rotundidad que tal cosa es una puta mierda: de blogs con contenido correctamente político ya andamos sobrados, gracias.

2 de octubre de 2008

Cargando Linux en cinco segundos

En la "Linux Plumber Conference" -que ha sido una conferencia sobre toda la "fontanería" de bajo nivel que hace funcionar a un sistema Linux y que, según lo que dicen muchos de los que han asistido, ha sido la conferencia linuxera más interesante que jamás se ha celebrado- los desarrolladores de Linux de Intel han mostrado al público una cosa sorprendente: Un sistema Linux -concretamente un EEE PC de asus- que tarda en cargar tan solo cinco segundos. Por cierto, eso con un disco duro flash, con un disco duro tradicional el tiempo se eleva a 10 segundos.

Puede parecer el típico hackeo radical que no tiene mucha utilidad para las distros normales, pero no lo es, aunque sin duda muchas de sus conclusiones son algo radicales. Por ejemplo, no se utiliza initrd (al parecer, el 95% de los sistemas de escritorio, que es en quien en teoría se deberían centrar el desarrollo, pueden soportarse con un kernel con unos cuantos módulos compilados estáticamente. El 5% restante puede soportarse con un kernel alternativo que tenga initrd). Y se salta GDM, y utiliza XFCE. Pero no se salta udev, ni HAL, ni DBUS. Aunque quizás las distros no van a cargar en 5 segundos, sin duda podrían hacerlo en muy poco tiempo más.

Es muy recomendable leer el artículo original. Me quedo con esta cita: "We hate splash screens. By the time you see it, we want to be done. The development time that distributions spend on splash screens is much more than the Intel team spent on booting fast enough not to need one."

24 de septiembre de 2008

Segun Microsoft, usar Linux en paises emergentes NO es mas caro que Windows

Esa es la conclusion de un estudio financiado por Microsoft (enlace directo al estudio), aunque ellos no lo presentan de ese modo, sino de este otro: "Windows y Linux tienen el mismo coste al utilizarse en grandes cantidades en las escuelas de los paises emergentes". Que Microsoft haya tenido que recurrir financiar un estudio que dice que Linux cuesta lo mismo que Windows en paises emergentes me ha parecido tan divertido, que no he podido evitar hacer telecinquismo, digo amarillismo, sobre el tema. Y dedicarle una entrada.

Y es que cuando una compañia financia uno de esos estudios, suele ser para decir que, por supuesto, es mas barato que el competidor, ofrece mas rendimiento y encima las secretarias mejoran su aspecto fisico usandolo mientras que otras alternativas las hacen envejecer mas rapidamente. ¿Cual sera el TCO real de Windows en paises emergentes (por alguna razon esa expresion me suele recordar a la creacion de la isla de Numenor) para que Microsoft no haya podido financiar un estudio que les deje en mejor lugar y tenga que recurrir a decir: "No, oiga, tengo el mismo precio que mi competidor, puede darme las mismas oportunidades que le da a el". Ni tan siquiera pueden arriesgarse a decir "soy tan barato como Linux", porque eso daria la impresion de que Linux es barato; ni decir "Linux es tan caro como Windows", porque daria la impresion de que Windows es caro. Tienen que decir que el precio es el mismo.

El principio en el que fundamentan su ecuacion de igualdad es que si, las licencias de Windows son mas caras e implican un mayor TCO inicial, pero segun el informe es mayor el coste de la mano de obra de Linux y el coste de la mano de obra termina influyendo mas que lo que se gasta en hardware y software. Algo que es cierto pero...el informe no da datos muy claros. Simplemente tiene una cajita amarilla, muy destacada, donde cuentan que segun los informes de otras compañias que no son ellos, los salarios de profesionales linuxeros en China son un 30-43% mejores que los de profesionales microsoifties, en India el doble, en Pakistan un 12% y en paises occidentales un 20-30%. Pero no cuentan que calculo es el que aplican ellos en sus formulas...en resumen...

...¿soy el unico al que le parece algo sospechoso que el mayor coste de mano de obra en Linux sea la cantidad precisamente necesaria para equilibrar el mayor coste en licencias de Windows? Es decir, no me extrañaria que Linux costara mas. No me extrañaria que Windows costara mas. Pero que cuesten lo mismo....¿casualidades de la oferta y la demanda? ¡Caray!

Sospechemos aun mas: ¿No es raro que, segun las tablas del informe, el coste en hardware de un ultraportatil tipo OLPC sea exactamente el mismo tanto para Linux como para Windows, cuando sabemos que la version de Windows para OLPC no cabia en la memoria flash de 1GB con la que funciona el dispositivo en su version de Linux, y han tenido que añadir tarjetas de memoria de mayor tamaño para poder hacerlo funcionar? Vale, pongamos que el progreso tecnologico de las tarjetas de memoria ha hecho posible tener almacenamiento suficiente para windows y linux sin tener que aumentar el precio, pero aun asi...

En cualquier caso, aun cuando me parece un informe mas que parcial, la conclusion sigue siendo positivo: Los paises emergentes pueden utilizar Linux, y no les saldra mas caro. No lo digo yo, lo dice Microsoft, que aprueba este informe. Lo que es mas, si me lo permiten diria que hasta favorece a Linux: los costes totales son los mismos pero la version de Windows requiere mandar el coste en licencias a un pais extranjero, mientras que con Linux una cantidad equivalente se invierte en mano de obra nacional. El mercantilismo es una completa estupidez cuando se trata de proteger productos nacionales caros frente a alternativas extranjeras baratas, pero cuando el coste total es el mismo...¿que sentido tiene mandar divisas al extranjero? Ademas, apoyando la demanda de mano de obra linuxera local, se genera mas oferta, lo cual a largo plazo equilibra los precios.

Llegados a este punto es cuando ustedes corren a poner en los comentarios que soy un radical linuxero que no atiende a razones.

(En mi blog de farfulleo politico: Una medida simple que nadie propondra: Eliminar el ICO)

23 de septiembre de 2008

Lo que traerá Linux 2.6.27

Falta poco tiempo (una semana o asi) para que salga Linux 2.6.27. He aqui un resumen de las principales novedades (lista completa en ingles, aqui):

  • page cache y get_user_pages() sin bloqueos (lockless): El page cache es el lugar (de la RAM) donde el kernel pone copias de los archivos que estan en el disco para acelerar el rendimiento. Cada instancia de la estructura "mapping" almacena la informacion de cada archivo que tiene copias de sus datos en el page cache. Esa estructura tiene un bloqueo para evitar problemas de concurrencia cuando se accede a ella. Si hay varios procesos que estan accediendo a esa estructura simultaneamente -lo cual, para ser sinceros, no es algo muy comun ni es por lo general un problema- puede formarse cierta contencion en ese bloqueo. Para resolverlo, en Linux 2.6.27 las operaciones de lectura de las estructuras del page cache se haran sin necesidad de adquirir ese bloqueo. Debido al diseño, en el que se evitan tambien ciertas operaciones costosas, tambien se ha mejorado el tiempo de lectura y modificacion del page cache en sistemas monoprocesador.

    get_user_pages(): Existe una tecnica llamada Direct I/O, que consiste en hacer operaciones de I/O saltandose completamente el page cache y todo tipo de gestion de memoria del kernel. Las grandes bases de datos son quienes suelen utilizar estas cosas, porque ellas mismas hacen su propia gestion de memoria a su gusto. get_user_pages() es una funcion interna del kernel encargada de copiar los datos de la memoria del proceso a la memoria del kernel cuando se hace Direct I/O para posteriormente escribirlo en el disco. Sin embargo, esta funcion requiere adquirir un par de bloqueos importantes, que hacen que se forme cierta contencion cuando hay varios threads usando get_user_pages() en un mismo espacio de direcciones. En 2.6.27 se ha añadido la funcion get_user_pages_fast(), cuya funcion basica es la misma, pero esta diseñada para gestionar los casos mas comunes y por tanto puede prescindir de 4 de los 8 argumentos que toma la otra funcion, y puede hacer Direct I/O sin tomar ningun bloqueo. Eso hace que las operaciones de Direct I/O se aceleren considerablemente - un 10% en un benchmark OLTP sobre DB2 en una maquina Intel Quadcore.

  • Ext4: delayed allocation: Esta es una de las grandes promesas de ext4. Se trata de algo que no afecta al formato del disco, es un mero problema de implementacion. En los SO modernos, cuando una aplicacion escribe algo al disco no lo escribe inmediatamente, sino que lo guarda en buffers que seran escritos posteriormente. Sin embargo, por comodidad, la mayoria de sistemas de archivos implementan esta funcion como un caso particular de la funcion general "escribir los datos en el disco". Me explico: en la mayor parte de sistemas de archivos, cuando la aplicacion hace write(), lo que suele hacer el sistema de archivos es llamar a las rutinas de asignacion de bloques libres a los nuevos datos, actualizar el contador de espacio libre, etc....a pesar de que los datos aun no se estan escribiendo y van a pasar un rato en los buffers. Esto es suboptimo por muchas y variadas razones; por ejemplo, un archivo puede consistir de varios write()s y el algoritmo de asignacion de bloques no puede saberlo cuando recibe el primer write(), y por tanto no puede encontrarle un lugar adecuado. La tecnica "delayed allocation" consiste, simplemente, en no llamar a esas rutinas de asignacion de bloques, solo la de actualizar el contador de espacio libre. La asignacion del espacio que los datos van a ocupar en el disco se realiza solamente cuando los datos se van a escribir verdaderamente en el disco. Esta tecnica, utilizada por sorprendentemente pocos sistemas de archivos -XFS, ZFS, reiser 4 y btrfs-, mejora el rendimiento en muchos tipos de carga -en algunos las mejoras son astronomicas- y disminuye la fragmentacion.

  • UBIFS: UBIFS es un sistema de archivos diseñado por Nokia para dispositivos de almacenamiento flash puros. Cuando digo puros, me refiero a que no puede utilizarse en los tipicos lapices USB o discos externos USB hechos con memoria flash. Ese tipo de dispositivos tiene una capa de emulacion que los hace parecer, al exterior, como un dispositivo de bloques normal y corriente. UBIFS esta diseñado para los sistemas que no tienen esa capa. Es mejor que JFFS2 en varios aspectos: rendimiento, el montaje inicial es rapido, resistencia a reinicios a lo bruto...

  • Kexec jump: hibernacion basada en kexec/kdump: Kexec es un sistema que permite cargar un kernel Linux en memoria y ejecutarlo directamente desde el kernel que estas corriendo, sin necesidad de reiniciar. Kdump es un sistema de volcado de memoria del kernel basado en kexec: Se carga al principio del sistema un kernel a prueba de fallos en memoria, y si hay un fallo en el kernel, el codigo de OOPS llama a kexec, ejecuta el kernel a prueba de fallos, se carga ese kernel, y se copia el resto de la memoria del sistema a un archivo - el volcado de memoria. En 2.6.27, estos sistemas se han extendido para una nueva funcion: hibernar el sistema. Se carga un kernel, se ejecuta, ese kernel guarda el contenido de la memoria en un archivo, y se apaga el sistema. Al encender de nuevo el sistema, se carga el archivo con la memoria y se sigue ejecutando.

  • Soporte de integridad de datos en la capa de bloque: Hay sistemas de archivos capaces de usar checksums para detectar corrupcion en un archivo. Sin embargo, esto se detecta solamente al leerlo. SCSI y ATA estan preparando especificaciones y dispositivos que junto a los resultados de las operaciones de escritura devuelven al kernel un CRC de cada sector escrito para que se verifique si no ha habido errores.

  • ftrace: ftrace es un sistema de instrumentalizacion del codigo muy simple nacido en el seno de los parches -rt: se utiliza una extension de gcc para dejar 5 bytes de NOPs en el principio de todas y cada una de las funciones del kernel (no tiene ningun efecto en el rendimiento, incluso en microbenchmarks: las CPUs modernas han optimizado este tipo de secuencias muy bien). Cuando ftrace se activa, esos NOPs se modifican con instrucciones que llaman a ftrace para tomar nota de las funciones que se van llamando. Es muy util para analizar el rendimiento de diferentes partes del codigo. Pero la parte mas util es que ftrace tiene una infraestructura de plugins que ha permitido desarrollar todo tipo de funciones: se pueden analizar los cambios de contexto, la latencia que sufre un proceso desde que es "despertado" por el gestor de procesos hasta que finalmente empieza a ejecutarse, tiempo maximo que se pasa con las interrupciones desactivadas, el tiempo gastado en porciones de codigo donde se deshabilita preempt...ademas de soporte de sysprof.

  • mmiotrace: Instrumentalizacion de las operacion de mmio (memory-mapped I/O: I/O que se hace mapeando parte de la memoria a un dispositivo y escribiendo en la misma). Por lo visto es muy util para hacer ingenieria inversa de los drivers de nvidia^W^Wpropietarios.

  • Capa de red multicola: En las tarjetas de red modernas, especialmente las wireless, estan apareciendo multiples colas, en vez de la tradicionalmente unica: Una para voz, otra para video, otra de baja prioridad para P2P^W"trafico de fondo". En 2.6.27 la capa de red tiene soporte para este tipo de dispositivos.

  • Firmware externo: El firmware de los drivers ha sido extraido de los mismos y centralizado en el directorio firmware/. Este firmware puede ser instalado en /lib/firmware, de manera que cuando los drivers lo necesiten, se llamara al programa que carga firmware externo desde un archivo del disco duro, algo que apreciaran los enfermos de GNUitis. Tambien se puede optar, para quien no les guste esto, por meter todo el firmware en la imagen del kernel.

  • Soporte de webcams mejorado: Se ha incluido el driver gspca, que incluye soporte para la mayor parte de las webcams que quedaban por soportar en Linux.

  • syscalls que crean descriptores de archivo extendidas: UNIX no fue perfecto. Por ejemplo, muchas de las diversas rutinas que crean descriptores de archivo no permiten crear descriptores de archivo con ciertas propiedades que hoy en dia se utilizan. Resulta que poder hacerlo no es un simple capricho - tambien existen ciertos aspectos de esta carencia que pueden vulnerar la seguridad. Para solucionar este problema no habia otro remedio que añadir un porrillo de syscalls nuevas que aceptaran los parametros necesarios. Aunque parezca algo sucio tener que añadir estas nuevas syscalls, lo cierto es que añadirlas es bastante "barato" y no se ha añadido casi nada de codigo.

  • Soporte de chips intel wireless 5000, chips wireless Atheros AR5008 y AR9001, soporte de tarjetas de red Realtek RTL8187y de Atheros L1E Gigabit, muchos otros drivers, soporte mejorado de drivers ya existentes, muchas otras mejoras y pequeños arreglos. Lista completa de cambios aqui.