domingo, 18 de noviembre de 2007

¿Porqué no han podido hacerlo bien?

Esta vez me voy a quejar. Ya estoy cansado. Cansado de los sistemas operativos. Ninguno puede hacer las cosas bien, al menos en un equipo destinado al usuario final.

Hay unos mejores que otros, todos sabemos que linux (GNU/Linux para que no se enoje Stallman) es mejor que windows y que ubuntu ya se volvió una basura.

Esta bien, ya se que si le dedicas el suficiente tiempo y esfuerzo puedes tener un sistema linux/windows/loquesea funcional. Pero todo eso es impensable para una persona promedio o con escaso tiempo.

¿Realmente creen que una persona va a tener el tiempo necesario para mantener un sistema operativo en buen estado? mantener todos los parches, actualizaciones, antivirus, archivos de configuración, drivers, versiones de kerneles, firewalls, versiones estables, inestables, codecs, cracks, isos... todo esto es demasiado complejo, es de locos.

La otra vez me pidieron algo tan simple como quemar un dvd en vista. Estuve cerca de dos horas probando y no pude. Al final lo tuve que hacer en mi laptop con arch linux. ¿Porqué no puedo simplemente meter un dvd, darle copiar y listo?. De hecho en mi arch linux fue así.

Pero arch linux no se salva tampoco. Para mí es muy fácil instalarlo y configurarlo, pero es sólo gracias a que tengo años de experiencia en sistemas linux, para alguien nuevo sería algo muy tardado y complejo, casi seguro se daría por vencido. Al menos una vez instalado ya sigue funcionando por mucho, mucho tiempo.

La arquitectura PC lleva como 20 años de existir y aún no hemos podido crear el sistema operativo definitivo. Todos esos problemas de usabilidad ya deberían estar resueltos. El que sigan existiendo es absurdo.

Parece que en vez de ir evolucionando vamos involucionando. Al único que le veo esperanzas de resolver esto algún día es a Linux. De windows ni hablar, porque creo que ya está en las últimas.

El problema de Linux es que una distribución típica es que está hecho de miles de componentes independientes por gente que tiene sus propias ideas de cómo hacer las cosas. Esto también es una ventaja, si no me gusta gnome lo cambio por kde, si no me gusta nano lo cambio por vi.

Esto va unido con otra ventaja/desventaja de Linux: evoluciona a una velocidad increible. Pero que pasa, que de pronto un componente cambia y todos los que dependían de el truenan. Localizar el componente que lo provocó todo tarda días, horas cuando ya tienes experiencia.

Algunas distribuciones como debian han tratado de resolver esto manteniendo un control muy estricto sobre los paquetes de software que entran, sólo los paquetes que el equipo de debian determina que son seguros y estables se suben a los repositorios. Pero esto provoca que debian no evolucione a la misma velocidad que otras distribuciones y se va quedando vieja. Eso sí, en estabilidad no le gana nadie.

Lo que linux necesita es un pegamento efectivo entre sus diferentes componentes. Algo que pueda integrarlos en forma coherente y a prueba de errores. Ubuntu y otros fallaron en crearlo.

La cantidad de combinaciones posibles de configuraciones de hardware y software es asquerosamente grande y no se puede preverlas todas. De hecho, por pura probabilidad, un sistema que intenta adivinar la configuración correcta está condenado a fallar en algún punto. Puede que tu sistema corra más o menos bien, pero habrá siempre algún detalle que no quedará configurado correctamente.

Desde hace tiempo quiero crear mi propia distribución que se llamará einstein linux y quiero aplicar varias ideas que se me han ocurrido. No se si será suficiente para resolver estos problemas, la verdad creo que no, pero pienso que ayudaría bastante.

Primero introducirán el concepto de listas de comprobación. Cada programa va a tener una lista de comprobación asociada. Esta lista va a contener elementos a checar que son necesarios para que el programa corra: que las librerías de las que depende estén instaladas, programas de los que depende instalados, archivos de configuración existentes y con sintaxis correcta, permisos necesarios a los recursos a los que accede...

Así cuando un programa falle nada mas corres el comando checklist sobre el y ya te diria dónde está fallando. Como siempre, va a haber cosas que se escapen de la lista de configuración, pero creo que podría ser de ayuda.

Luego necesitamos una API de intercomunicación entre los programas y los archivos de configuración, algo que defina ciertas operaciones básicas y políticas para modificar los archivos de configuración y que sea portable e independiente de la sintaxis de cada uno.

Dentro de esta API también se van a definir ciertas operaciones básicas para aplicar sobre programas, librerías, usuarios y otras cosas. Esto todavía no lo pienso bien y me falta definirlo.

Después entra el concepto de las recetas. Una receta es un conjunto de comandos a ejecutar para lograr un fin específico. Por ejemplo quiero instalar un driver especial para mi tarjeta de video y para evitar recompilar y todo eso sólo bajo el archivo de receta, lo ejecuto y él se encarga de todo. Es verdad que esto se presta para hacer cosas maliciosas, pero las recetas también van a estar en los repositorios y van a tener su clave md5 para validar su autenticidad. Los cambios hechos por las recetas deberán poder ser reversibles hasta donde sea posible.

También se va a definir un modo de instalación que he bautizado como "adición de capacidades por desbloqueo". El problema con los métodos de detección automática de hardware actuales es que no siempre adivinan bien y terminas con una configuración mal hecha. Gracias a eso tu sistema no arranca y no sabes ni como repararlo porque el instalador automático quien sabe qué hizo.

Este modo de instalación va a instalar por default un entorno a prueba de fallos. Aún ahí hay que hacer algo de detección y adivinación pero no es tan complicado. Nada mas te va a dejar con un entorno gráfico super sencillo, 800x600 de resolución en modo vesa, teclado y mouse. Algo así es difícil que falle. A partir de ahí si quieres agregarle nuevas funciones lo haces desde el administrador de capacidades que va a ser como un wizard y te va a ir guiando, probando y preguntandote si las cosas estan funcionando bien.

El administrador de capacidades va usar las recetas, que a su vez van a utilizar programas que van a usar la API que describí anteriormente.

Por ejemplo digamos que quieres agregar sonido. El wizard va y checa primero tu modelo de tarjeta de sonido, luego va y en su base de datos ve si esta soportada, si esta soportada que driver le pertenece, luego si el driver esta instalado, si esta instalado lo carga, revisa que se halla cargado correctamente, luego revisa que los volumenes esten correctos, canales unmuteados, hace una prueba de sonido y te pregunta si escuchaste o no, si no intenta otras cosas y si sí, ya tienes sonido.

Por ahora es todo lo que recuerdo que le iba a poner a einstein linux. Probablemente einstein linux no vaya a ser una distribución en sí, sino un conjunto de librerías, scripts y comandos.

Un proyecto paralelo a este sería linux4yourmobo.org. Este va a ser una página con una base de datos enorme sobre motherboards y su hardware. La idea es que tu le dices qué modelo de motherboard tienes + hardware adicional que le hayas conectado y te regresa un archivo .config y tal vez una receta. Luego con ese .config, la receta y un wizard te compilas un kernel a la medida ya con todos los controladores y todo lo necesario para que tu hardware funcione.

Esos son algunos de los proyectos que tengo en mente y creo que serían muy buenos. Bueno, ahora tengo que volver a la relidad y seguir trabajando en el proyecto de horrendira, pero algún día haré algo de eso.

Los japoneses son más listos, ellos ya se dieron cuenta de todo eso y mejor ya no usan computadora, todo lo hacen desde su celular o su consola. Google es todavía más listo, por eso sacó android.

3 comentarios:

Jeem, back again! dijo...

No han podido... ni podrán.

Mientras linux (y otros) son de y para freaks, gurus, ingenieros o por lo menos experimentados (un pobre mortal no puede con el)y cubre las necesidades de ese grupo en particular, GUIdos - Serie NT (XP, etc) se dedica, peor aun, a crear necesidades. De hecho, la migración a Vista fue y segun mi punto de vista sigue siendo innecesaria, pero crearon una necesidad para poder colocar un producto que la cubra. En fin, algun dia (espero tarde mucho) el hardware o software no podrá ser soportado por XP.

El verdadero futuro de los OS's es que se acople al pensamiento del usuario, que aprenda a comunicarse con él, no que el usuario tenga que aprender. Pero, para ello, requieres AI muy avanzada, o bien, alguna interfaz que se comunique con sistema nervioso central (no tipo matrix, pero ya veremos que hay en 70 años si seguimos vivos) y un profundo conocimiento de neurología y psicología. Mientras, tendremos que vivir con estas molestias, que esperemos por lo menos disminuyan (...lo dudo...)

makz dijo...

Interesante propuesta, la única pega que le veo es que tu computadora podrías usarla sólo tú y no podrías usar la de alguien más.

Claro, esto es lo primero que pensaría alguien que cree que las cosas se van a quedar como están.

En el futuro, el querer usar la computadora de otra persona podría no tener sentido, pues la tendencia va hacia la ultra movilidad y portabilidad.

En todo caso, podrías tener en un chip (o lo que sea que se use en el futuro) con tu interfaz personalizada y cuando quieras usar otra computadora, simplemente le pones el chip con tu interfaz y listo, como sucede con los celulares.

Incluso puede que ni necesites chip, a lo mejor esa información la puedes bajar directamente de la red.

Si todo falla, siempre puede existir una interfaz estándar para todas las computadoras que cualquiera pueda usar aunque sólo sea para tareas sencillas.

Sin embargo todo eso aún esta lejos. Entre lo que tenemos ahora y eso habrá sistemas intermedios.

Mi intención es participar en el desarrollo de esos sitemas de alguna manera.

Nick Synm dijo...

HUYYY, no me habia dado cuenta, criticar los SO va a ayudar a mejorarlos. Mueranse zoquetes.