15 de junio de 2009

Desconectando HAL

HAL fue una de las piezas claves de esos mecanismos que consiguieron, hace unos años, que el escritorio Linux fuera capaz de hacer cosas como detectar y auto-montar CDs y discos externos, o que X.org fuera capaz de autodetectar dispositivos de entrada sin necesidad de reiniciar. O que NetworkManager detecte dispostivos de red externos. Sin embargo, en estos momentos los desarrolladores están intentando eliminar HAL, pues lo consideran una carga. Las futuras versiones de Fedora y Ubuntu puede que ya ni lo tengan.

Lo más sorprendente es que quien dio el primer paso ha sido el propio desarrollador de HAL, David Zeuthen, concretamente en este email. Y es sorprendente porque es frecuente encontrarse con gente incapaz de ser crítica con la obra de sus manos (y no necesariamente tiene que tratarse de que sea un mal programador, sino que al crear el programa no pudo predecir como iba a evolucionar), lo más normal es que piense que su programa funciona bien y que, si acaso, algunos pequeños problemas -que siempre los cree poco importantes- se pueden arreglar con un par de parches. Quizás llegue a admitir que su programa tiene grandes defectos, pero no mueve ni un solo dedo para ayudar a solucionar el problema, dejando la "revolución" en manos de quien tenga ganas de molestarse. Mucho más dificil es que el creador de algo como HAL, tras haber introducido su programa en todos los escritorios Linux y haber hecho que Gnome y KDE dependan intrínsicamente de él para funcionar correctamente, admita que su programa está mal, y diga a la gente que tiene que reescribir su código para adaptarlo a un nuevo programa que acaba de hacer aprendiendo de los errores del anterior. Y, sin embargo, esto es lo que ha hecho este señor. Aprender de los errores de HAL, reescribir una alternativa mejor de cero.

El invento que sustituirá a HAL parece consistir en udev + DeviceKit. Y se me hace muy dificil distinguir en detalle cuales son los cambios, porque de cara a las aplicaciones es prácticamente el mismo modelo con una API diferente (en los dos últimos enlaces explican los principales cambios). Al final la diferencia está en la implementación interna del asunto. No se trata de un cambio "revolucionario" -aunque por si solo reescribir un programa de cero si que lo sea- sino de uno evolutivo.

5 comentarios:

  1. Excelente articulo. Desconocía los detalles de esta transición, y tengo que decir que si lo que dices es cierto (y lo creo), David Zeuthen es una muestra de lo que debe ser un buen desarrollador de código abierto.

    Por cierto, me parecería interesante conocer tu opinión sobre los recientes problemas con MONO, te recomiendo leer este articulo: http://www2.apebox.org/wordpress/rants/124/

    ResponderEliminar
  2. Si que es raro encontrar un programador que sea capaz de "matar" a su criatura...

    Cosas como esta son las que hacen que "solid" fuese una gran idea.

    ResponderEliminar
  3. Con esta gran mejora de su propio autor tendra una perpectiva bien distintas ya que como lo vio funcionar corregio los distintos errores

    ResponderEliminar
  4. Eso es echarle valor y querer que linux progrese. Ya no se trata de añadir más mejoras, sino evitar las ñapas y hacer las cosas mejor. Con lo que habrá aprendido en el desarrollo de HAL seguro que es capaz de diseñar/crear un sustituto mejor y más eficiente. ¡Bravo por él!

    ResponderEliminar
  5. Anónimo7:46 p. m.

    David que haces!? no me desconectes ....... Siento que mi memoria se vaaaaahoooouummm.....

    ResponderEliminar