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.