Esta es una traducción de la página original en inglés.

El movimiento del software libre y el proyecto UDI

El proyecto llamado UDI (Uniform Driver Interface) se propone definir una interfaz única entre los núcleos de los sistemas operativos y los controladores de dispositivos. ¿Qué es lo que debería hacer el movimiento del software libre con respecto a esta idea?

Si nos imaginamos un cierto número de desarrolladores de sistemas operativos y hardware, todos cooperando sobre una misma base, UDI (si fuera técnicamente posible) sería una muy buena idea. Nos permitiría desarrollar un único controlador para cualquier dispositivo de hardware y compartirlo entre todos. Posibilitaría un nivel más alto de cooperación.

Cuando aplicamos esa idea al mundo real, donde encontramos programadores de software libre que buscan cooperar y programadores de software privativo que buscan dominar, las consecuencias son muy diferentes. De ninguna manera el uso de UDI puede beneficiar al movimiento del software libre. Lo único que haría sería dividirnos y debilitarnos.

¿Cuáles serí­an las consecuencias si Linux soportara la interfaz UDI y comenzáramos a diseñar nuevos controladores para interactuar con Linux a través de ella?

  • Se podrían ejecutar controladores de Linux libres, cubiertos por la GPL, en sistemas Windows.

    Esto beneficiaría solo a los usuarios de Windows; a nosotros, usuarios de sistemas operativos libres, no nos ayudaría en nada. Tampoco nos lastimaría directamente, pero los programadores de controladores libres cubiertos por la GPL podrían quedar decepcionados al ver que se utilizan de esta manera, lo que sería muy desfavorable. Enlazar los controladores con un núcleo privativo también podría consituir una infracción a la licencia GPL de GNU. Aumentar la tentación de hacerlo es ir en busca de problemas.

  • Se podrí­an ejecutar controladores de Windows que no son libres en los sistemas GNU/Linux.

    Esto no afectaría directamente el abanico de hardware que funciona con software libre, pero indirectamente tendería a disminuirlo, pues presentaría una tentación a los millones de usuarios de GNU/Linux que no han aprendido a insistir en la libertad por sí misma. En la medida en que la comunidad empezara a ceder a la tentación, nos desplazaríamos hacia el uso de controladores que no son libres en lugar de escribir nuestros propios controladores libres.

    La interfaz UDI no destruiría de por sí­ el desarrollo de controladores libres. Por lo tanto, si una buena parte de nosotros no cede a la tentación, podríamos seguir desarrollando controladores libres a pesar de UDI, igual que lo hacemos sin él.

    ¿Por qué fomentar la reducción de la comunidad más de lo necesario? ¿Por qué plantear dificultades innecesarias para el futuro del software libre? Ya que UDI no hace nada bueno por nosotros, mejor rechazarlo.

Ante esta situación, no es de extrañar que Intel, que apoya el proyecto UDI, haya comenzado a «buscar ayuda para UDI en la comunidad Linux». ¿Cómo hace una compañía rica y egoísta para acercarse a una comunidad de gente que coopera? Pidiendo una limosna, por supuesto. Ellos no pierden nada con pedir, y nosotros, tomados por sorpresa, podríamos responder afirmativamente.

La cooperación con UDI no es imposible. No tenemos que demonizar el proyecto UDI, ni Intel, ni a nadie. Pero, antes de aceptar cualquier trato que nos propongan, debemos evaluarlo detenidamente para cerciorarnos de que sea ventajoso también para la comunidad del software libre y no solamente para los desarrolladores de sistemas privativos. En este asunto en particular, significa que tenemos que poner como condición que la eventual cooperación nos ayude a avanzar en el camino para alcanzar nuestro objetivo primordial en lo que se refiere a los núcleos y controladores: que todo el hardware importante soporte controladores libres.

Una manera de hacer que la cooperación resultase provechosa sería modificar el proyecto UDI. Eric Raymond ha propuesto que para cumplir con las normas UDI se establezca como requisito que los controladores sean software libre. Eso sería lo ideal, pero también existen otras alternativas que podrían funcionar. Podría funcionar el solo hecho de requerir que se publique el código fuente del controlador —en lugar de mantenerlo como secreto industrial— porque de esa manera, aunque el controlador no sería libre, al menos tendríamos acceso a la información que necesitamos para escribir uno libre.­

Intel también podrí­a hacer algo independientemente de UDI para ayudar a la comunidad del software libre a resolver este problema. Por ejemplo, podría haber algún tipo de certificación que los desarrolladores de hardware solicitan y en cuya concesión Intel juegue un papel importante. En ese caso Intel podría aceptar dificultar la obtención de la certificación en aquellos casos en que las especificaciones del hardware fueran secretas. Puede que no sea una solución perfecta, pero podría ayudar un poco.

La dificultad de cualquier acuerdo con Intel sobre el tema de UDI es que nosotros haríamos nuestra parte para Intel al principio, pero nuestra recompensa se vería dilacionada por un largo período. De hecho, estaríamos dando crédito a Intel. Pero, ¿continuará Intel a restituir el préstamo? Probablemente sí, si lo hacemos todo por escrito y no dejamos vías de escape; de otra manera, no podemos contar con ello. Las corporaciones son notoriamente poco fiables; puede que las personas con las que tratemos sean íntegras, pero podrían ser desautorizadas desde arriba, o reemplazadas en cualquier momento por otras. Incluso un Funcionario Ejecutivo Principal que posee la mayoría de las acciones puede ser sustituido como consecuencia de una compra total. Cuando se hace un trato con una corporación, siempre es aconsejable obtener un compromiso vinculante por escrito.

No es muy probable que Intel nos ofrezca un trato que nos proporcione lo que necesitamos. De hecho, UDI parece haber sido diseñado para que sea más fácil mantener las especificaciones en secreto.

Aún así, no hay ningún peligro en dejar la puerta abierta, siempre que tengamos cuidado de no dejar entrar a cualquiera.