No es tan simple!

En los comentarios de mi artículo anterior sobre el video de Xgl, mi amigo Sebastian Beeche plantea algunas dudas que son muy frecuentes entre los usuarios de Linux y que muchos se autoresponden en forma equivocada o simplemente no consiguen respuesta. Lo que voy a comentar aqui lo hago desde lo que me ha tocado conocer, tanto desde el punto de vista de desarrollador, como el de un simple mortal suscrito a listas de desarrollo, asi que no lo tomen como «la verdad», solo como lo que he observado.

Seba: «Para que Linux sea realmente LA alternativa, además de mejorar la gráfica, hay que hacer que el sistema sea más amable con todo tipo de periféricos».

Esto NO es posible asi como estan las cosas. Linux no va a tener soporte de todo el hardware sin la cooperación de los fabricantes de hardware. Para que un dispositivo pueda ser soportado en Linux se necesita de un driver, y para que exista un driver se debe cumplir una de las siguientes condiciones

  • El fabricante desarrolla el driver para Linux
  • El fabricante entrega las especificaciones del hardware para que un tercero desarrolle el driver para Linux
  • Un tercero, mediante ingeniería inversa, deduce las especificaciones del hardware y escribe su driver para Linux

Salvo honrosos casos, los fabricantes no desarrollan drivers para Linux. Esto tiene diversas explicaciones, una de ellas es no contar con los recursos y/o el know-how de cómo escribir un driver para Linux… y hay que decirlo.. con suerte hacen el driver para Windows, no es raro que el driver para Windows sea muy malo, con mayor razon poco les queda para otros sistemas. Otra explicacion es la masa critica : muchos de ellos esperan que hayan mas usuarios utilizando Linux, mientras que los usuarios esperan a que el fabricante desarrolle los drivers, en esas condiciones es muy dificil que el fabricante desarrolle el driver.

Ok, si el fabricante no desarrolla el driver, entonces por que no entrega las especificaciones? Aqui siempre es el mismo caso, hay un temor del fabricante de revelar «los secretos» de su hardware, estos secretos consideran tanto tecnología que no desean publicar asi como tambien mejoras que se hacen en los drivers para que el hardware se comporte mejor en ciertos tipos de benchmark conocidos. Otro motivo para no entregar las especificaciones es el licenciamiento de tecnologías de terceros, que impide a un fabricante revelar como funciona el 100% del hardware.

Queda entonces una sola alternativa, tratar de adivinar cómo funciona el hardware, pero esta es tan costosa como imposible, ademas que es muy poco el beneficio versus el esfuerzo. Te puedes demorar 1 año en aprender como funciona el 5% de un cierto tipo de hardware, que despues sera desplazado por otro. Por eso si el hardware no tiene driver, es mejor botarlo a la basura o prenderle fuego.

Seba: «No se xq Linux se ha demorado tanto en ese paso final, cuando la gente de Jobs lo sacó en un plazo de un par de años siendo que son un grupo pagado pero MUCHO más reducido que la comunidad total de gente que aporta a Linux»

No es tan asi. Si bien el grupo de gente involucrada con el desarrollo de Linux es muy grande, esta distribuido en muchos proyectos, por lo tanto cada proyecto cuenta con un grupo no tan numeroso de gente (kernel, gcc, Xorg, GNOME, KDE, OpenOffice, etc). Por ejemplo los desarrolladores principales de OpenOffice no son mas de 15, el resto son personas que contribuyen ocasionalmente. Si quieren ver la gente que trabaja en GNOME, y donde viven, pueden ver el mapa de desarrolladores de GNOME, ahora dividan por el número de proyectos que conforman GNOME. Por eso se hace tanto énfasis en las RFDG.

El hecho de que sea un grupo pagado también cambia harto las cosas, te aseguras de que puedan dedicarse 100% al tema. Actualmente en Linux los principales desarrolladores son pagados, pero todos son independientes entre si, no hay una «orden superior» que señale una senda a seguir, sino que todo se debe discutir y acordar, y ponerse de acuerdo no es tan facil. Es quizas una de las principales complicaciones cada vez que se quiere hacer un cambio grande, por lo mismo los grandes avances a veces se han desarrollado sin preguntar mucho a los demas, de paso se evita el fenómeno de Stop Energy.

Si lo llevamos al tema de los drivers, para Apple es un tema mucho mas facil de resolver, simplemente si quiere incluir un tipo determinado de hardware a su propio hardware, puede financiar el desarrollo negociando directamente con el fabricante del hardware y listo. Total el fabricante de hardware se esta jugando la venta de su hardware como parte de las maquinas de Apple, o por ultimo como periférico compatible.

A nivel de software, algo similar esta haciendo Novell mediante una encuesta para saber que aplicación podría portarse a linux llegando a un acuerdo directamente con sus desarrolladores originales.

Seba: «Ahora, siendo super honestos, hay 3 tarjetas de video en el mercado (Ati, Nvidia e Intel) y con eso de más que se puede dar un soporte digno»

Actualmente Nvidia desarrolla un driver para Linux ocultando su código fuente para evitar problemas legales como los mencionados arriba. Su driver es 100% funcional y el soporte es tan bueno como en Windows. Ellos anteriormente habian donado un driver opensource pero esta bastante recortado, por motivos legales solo implementa lo que se podia publicar, además que está intencionalmente ofuscado. El problema es que hasta no hace mucho, nvidia era muy bueno haciendo hardware, pero muy malo escribiendo drivers para Linux, lo que causaba que a muchos usuarios se les colgara el sistema por bugs del driver. Y como no son open source, nadie los puede corregir salvo nvidia. Hoy en dia la situación es muy distinta, y si alguien me pregunta por qué tarjetas de video son las mejores soportadas en Linux, mi respuesta es nvidia. Por ejemplo, su driver propietario con aceleración de la extensión RENDER por hardware hizo posible que xcompmgr funcionara super bien desde el principio, y no me extrañaría que los videos de la demo estén utilizando hardware de nvidia, o bien otro hardware pero con driver que utilice EXA.

En ATI no me queda muy clara la situación. Ellos también tienen una mezcla entre propietario y open source. Hay un driver propietario, que aprovecha casi el 100% el hardware pero que tiene problemas con bugs. También han cooperado para que se puedan escribir drivers open source aunque no se aproveche 100% su funcionalidad. Según entiendo, ellos han ayudado en la construcción del driver open source para sus chips, mediante acuerdos directos entre ellos y algunos (o un) desarrollador(es).

El caso de intel es similar, pero sin driver binario. No puedo decir mucho de esos drivers, mi notebook los usa pero no tengo como compararlo con el de windows (tarea para mas adelante).

Seba: «El sistema de apple de como maneja la data, las instalaciones, los programas y las opciones de usuarios son realmente buenas, en las que hasta un diputado podría hacer uso de ellas (bueno.. no se si tanto 😀 )»

No puedo comentar mucho, porque no conozco como funcionan estas cosas en MacOSX. Pero si puedo decir que al menos en una buena distribución (como Ubuntu), el tema de la instalación de aplicaciones es lo mas sencillo que he visto, siempre y cuando sean aplicaciones open source. Y cuando no son open source, la responsabilidad es unicamente del desarrollador de software, ya que las herramientas para empaquetar, instalar y publicar existen, son de libre uso y son simples de utilizar, si «hasta el Bruno las sabe usar» ;). En Linux cualquier aplicación es simple de instalar siempre y cuando exista un paquete para ella.

Sobre el manejo de «la data» no se a que se refiere exactamente Sebastián, y sobre las opciones de usuario tampoco se que calificaría como «buena», como para ver en que estado esta Linux.

Videos de Xgl en demostración de Novell Linux Desktop

Ayer hizo noticia una demostración que hizo Novell de su próxima versión de Novell Linux Desktop. Mostraron cosas que no son tan nuevas para los seguidores de GNOME como Evolution, F-Spot y Banshee, pero lo que causo mayor sorpresa fue la presentación del estado actual de Xgl, la implementacion de X sobre OpenGL.

Xgl junto a otros avances como la extension Composite significarán un cambio radical en lo que se conoce hoy en dia como el entorno gráfico de Linux. Las personas que han ido a mis charlas, han podido ver algo, pero los videos de la demostración de Novell muestran que ya se ha avanzado bastante y es impresionante ver que los usuarios de Linux podremos disfrutar de cosas que ya se habían experiementado en MacOSX y seguramente incluirá Windows Vista.

En linea se pueden encontrar los videos que muestran Xgl, y también encontre uno en YouTube para verlo directamente.

Imagen de previsualización de YouTube

Home sweet home

Durante los últimos días he estado viajando harto a Santiago, no he podido usar mucho mi computador, ni menos habia tenido tiempo de escribir un poco. Hoy volvi a viña, durara solo 5 días pero algo es algo. Sin darme cuenta creo que escribir este blog se ha convertido en una especie de necesidad, no se si eso sera sano o no 😉
Aprovecho de saludar a «mi amiga virtual» que hoy esta de cumpleaños… si si, me acordé pero no en el momento en que debía acordarme.. desde este rincón : FELIZ CUMPLEAÑOS!

Charla en DUOC

El jueves pasado estuve en Duoc sede Antonio Varas realizando un remake de la charla «Nueva generación de gráficos en Linux». No habia mucha gente, pero de todas formas lo pase muy bien, al principio un poco nervioso como siempre, pero salio todo bien.

Hay dos cosas que me han llamado la atención últimamente, una es que ya no es necesario hablar sobre qué es Linux, la mayoría entiende un poco de que se trata, y es normal que en la audiencia haya gente que tiene bastante experiencia en el tema. Otra cosa que me llama la atención es que en el publico vayan apareciendo mujeres de a poco, en esta ocasión especial incluso había una niña de 16 años. Estuve conversando un poco con ella antes de comenzar y se veía bastante entusiasmada con lo que había visto en el par de días de charlas.

La organización me regalo una camarita web, aun no la configuro, pero JCI ya publico la forma de configurar la webcam , debería ser cosa de seguir sus instrucciones.

UPDATE: ya hay algunas fotos de las charlas Linux en DuocUC

Linux, irDA y obex

Cambie mi celular por un Sony-Ericsson K300. Esta serie es nueva, y el K300 viene siendo de la linea baja de la serie. Aun asi el aparato es mucho mejor que mi fiel Nokia 6225, lo unico que no me gustó fue la cámara fotográfica, sin duda la del nokia era superior.

JCI me enseño a usar obexftp, y me hice un sencillo script para sincronizar el contenido de una carpeta con el contenido de la galería de fotos. De esta forma es super fácil transferir los archivos del celular al notebook utilizando Linux, incluso mas fácil que en windows, solo me basta acercar el teléfono y el script hace todo, incluso aplicar algunos filtros que mejoran algo las fotos del sony ericsson.

Abajo incluyo el script, no les va a servir tal como esta, hay que personalizarlo. Las partes claves son la variable DIR que debe apuntar a la carpeta del teléfono que contiene las fotos, obexrename.sh es un sencillo script que modifica el nombre de las fotos para que queden mas fáciles de manejar, y el ciclo de convert no es necesario si tienes una buena camara como la del nokia.

Como verán, el script es super sencillo, y siguiendo la misma lógica se puede hacer que elimine las fotos que ya se encuentran en el directorio actual.

obexsync.sh

#!/bin/sh

# directorio del telefono (version ingles)
DIR=Pictures/camera_semc
OBEXFILES=`obexftp -i -c $DIR -l`
FILES=`echo "$OBEXFILES" | grep file | cut -d""" -f2`

# solo dejar los archivos que no se encuentran localmente
for FILE in $FILES
do
# obexrename es un script propio para transformar el nombre
LOCALFILE=`obexrename.sh $FILE`
if [ ! -f $LOCALFILE ]; then
OLDFILES=$NEWFILES
NEWFILES="$OLDFILES $FILE"
fi
done

# obtener los archivos desde el telefono
if [ ! -z "$NEWFILES" ]; then
obexftp -i -c $DIR -g $NEWFILES
fi

# filtrar las fotos si la camara no es muy buena
mkdir -p backup

for FILE in $NEWFILES
do
LOCALFILE=`obexrename.sh $FILE`
echo "Converting... $LOCALFILE"
convert $FILE -despeckle  -enhance -monitor $LOCALFILE
mv $FILE backup/$FILE
done

echo "sync ok"

El script obexrenane.sh dependera si necesitas o no transformar los nombres, en mi caso los nombres de archivo son del tipo foto-000(1).jpg, foto-000(32).jpg etc, y los transformo en foto-000-001.jpg, foto-000-032.jpg etc. Voy separando las colecciones de foto como foto-000, foto-001, etc.

obexrename.sh

#!/bin/sh

NAME=`echo $1 | cut -d "(" -f1`
NUM=`echo $1 | cut -d"(" -f2 | cut -d")" -f1`

if [ $NUM -lt 10 ]; then
NUM="00$NUM"
elif [ $NUM -lt 100 ]; then
NUM="0$NUM"
fi

echo $NAME-$NUM

Escuchando : Transatlantic – Duel with the Devil (el tema pa bueno!)