lunes, 21 de mayo de 2007

Linux: 10 cosas que Linux podría mejorar

  1. Dejar de utilizar X11 como el Entorno Gráfico de Usuario -Desktop- ya que no fue creado con ese fin. La filosofía original de X-Window como servidor de un entorno gráfico para aplicaciones dista demasiado de la idea de un Desktop (Sistema de escritorio) personal. El protocolo X, base del sistema X-Window, no está pensado para soportar de forma habitual contenido multimedia. X-Window se ha convertido en un macro-sistema que no debería seguir utilizándose como soporte para las aplicaciones gráficas por la gran cantidad de recursos que consume y la ineficacia con que gestiona determinados contenidos. No olvidarse de que el sistema gráfico sólo es una funcionalidad más del sistema operativo y no debería intentar reemplazar ninguna de sus funcionalidades.
  2. Pasar de un kernel monolítico a un sistema de microkernels. Se ha venido comprobando en los últimos años, en diversos laboratorios de investigación, que un sistema basado en microkernels, además de dotar al sistema operativo de una mayor modularidad, puede ser mucho más robusto ya que se minimiza la dependencia entre componentes. imagínense por ejemplo, poder cambiar el sistema de gestión de procesos (scheduler) en tiempo de ejecución para poder priorizar tareas de Tiempo-Real, o tener varios y elegir entre ellos según el tipo de tarea o la relevancia para el usuario…
  3. Relegar a una parte del sistema operativo la gestión de todos los dispositivos y ofrecer al usuario una visión unificada de los mismos. Esto ya se viene haciendo en parte… Es cierto que gracias a kudzu, podemos detectar cambios en la configuración de los dispositivos, y que determinadas aplicaciones de X11 permiten detectar cuando se conecta una unidad USB y montarla de forma automática, o una cámara, etc. Toda esta funcionalidad actualmente se encuentra desperdigada en distintas partes de Linux. Unas son funcionalidad del sistema operativo (generalmente vía kudzu), y otras lo son de aplicaciones bajo X11… En mi opinión una interfaz de usuario no debería tener que hacerse cargo de la gestión de dispositivos.
  4. Incluir un mecanismo para crear clústers de forma sencilla, y dar al usuario una imagen de que existe una sola máquina, pudiendo utilizar los recursos de todos los componentes de cluster de una forma transparente balanceando de una forma equilibrada la carga. OpenMosix es un parche para el kernel que permite hacer este tipo de cosas. De esta forma se podría multiplicar la potencia de cómputo de forma exponencial en los centros de investigación sin necesidad de recurrir a equipos específicos, a la vez que permitiría sacar partido de los equipos que se van quedando obsoletos en todas las casas.
  5. Utilizar un sistema interno común de representación de la información, y relegar a ciertos componentes incluidos en el sistema operativo las tareas de conversión entre formatos de intercambio. Por ejemplo, para trabajar con imágenes, el sistema operativo podría utilizar una estructura de datos tipo BMP sin compresión para intercambiar la información entre aplicaciones. El propio Sistema operativo podría facilitar librerías para la manipulación de las imágenes en este tipo de datos, y él mismo daría soporte para poder guardarlas o leerlas desde otros formatos de intercambio (jpeg, png, etc). De esta forma se eliminaría la redundancia de código que casi todas las aplicaciones tienen a la hora de abrir/convertir distintos formatos. Eliminar la redundancia de código siempre mejora la coherencia y por supuesto la fiabilidad del código.
  6. De forma similar a lo anterior, utilizar un sistema interno para la gestión de protocolos de forma transparente. Por ejemplo, el propio sistema operativo implementaría el protocolo FTP/BitTorrent/etc. y gestionaría el intercambio de ficheros con otras máquinas de forma transparente al usuario. El desarrollador no necesita implementar los protocolos de comunicaciones en sus aplicaciones, si no que los relega al sistema operativo, mientras que el usuario no tiene por qué saber cómo se está realizando la transferencia. Esto no sólo se tiene que ver como protocolos de transferencia de ficheros, sino para todos los protocolos que se utilizan actualmente.
  7. Intentar seguir una filosofía KISS (Keep It Simple, Stupid!) en todos los niveles del sistema operativo. Muchas distribuciones intentan seguirla, pero habría que llevarla a la práctica más en profundidad. Pensemos que tras esta filosofía se encuentra el principio de la Navaja de Occam: “La solución más simple que resuelve un problema suele ser la mejor”. Intentar reducir la complejidad de las aplicaciones eliminando código redundante o frecuente en ellas, siempre es una ventaja. Intentar unificar código y posturas similares!!!
  8. Tomando como referencia el sistema de scripting que posee MacOs X, desarrollar un lenguaje de scripting para el sistema operativo y sus aplicaciones, que permita definir ciertos eventos y actuar ante ellos de forma automática. Cuanto más sencillo y visual sea este lenguaje de scripting mejor (sin dejar de perder potencia).
  9. Muchas distribuciones ofrecen paquetes precompilados (Ubuntu, etc) para que el usuario no tenga más que instalarlos y poder empezar a funcionar con ellos. Otras prefieren distribuir el código fuente para optimizarlo (Gentoo) a la arquitectura final, pero el proceso de compilación suele ser demasiado largo. Quizá fuese mejor una solución mixta que incluyese los paquetes precompilados para su uso inmediato, y el código fuente para su compilación (en caso de que se quiera optimizar). La compilación se haría de una forma transparente al usuario y en un modo background que no interrumpiese el funcionamiento normal de la máquina.
  10. Utilizar un sistema centralizado para la gestión de contraseñas a modo “llavero” de una forma similar a la que lo implementa MacOS X para facilitar la organización de la ingente cantidad de contraseñas y permisos que se necesitan para trabajar en red.
Tomado del blog de Maverick

No hay comentarios: