Linus Torvalds en la DebConf14

Se trata de una sesión de preguntas y respuestas que dio Linus Torvalds en la DebConf14 (Debian Conference de 2014). La charla ha sido subtitulada.

En esta sesión, respondió a las preguntas de la audiencia que, en buena parte, eran desarrolladores de Debian.

En resumidas cuentas, se trata el tema de por qué todavía no ha sido el año de Linux en el escritorio. Se puede comprobar cómo la opinión de Linus ha evolucionado bastante con respecto a lo que dijo dos años antes en la Universidad de Aalto. Esta vez ya no habla sólo de preinstalaciones, sino de todas esas complicaciones innecesarias que tienen las distribuciones y que no tienen otros sistemas operativos como Windows o OS X.

Como suele ser costumbre, no deja de ser controvertido en sus declaraciones y raja abiertamente delante de los desarrolladores de Debian de lo mal que lo han hecho las distros en algunos aspectos y las razones por las que no usa Debian ni Ubuntu. En este aspecto resulta llamativo que, según él, es posible que Valve sea la última esperanza para llevar definitivamente a Linux al escritorio.

También aparece el tema de la licencia GPL v3, donde afirma que la FSF ha urdido una especie de engaño. Resulta especialmente interesante comparar su punto de vista (desde la óptica del código abierto), con el de Richard Stallman que dejó patente hace un par de meses (desde el enfoque del software libre). Desde entonces, ha aparecido algún que otro movimiento que rechaza el extremismo, según ellos, de las corrientes ideológicas que fluyen por la FSF, como el anunciado hace poco Occupy GPL.

Durante la charla aparecen términos como tivoización, un mecanismo que usó TiVo para evitar que en su hardware, que funcionaba con Linux, se pudiera modificar el software. También se habla de Subsurface (o Divelog), un programa destinado a los buceadores que comenzó Linus y que pone de ejemplo para explicar una de las principales razones, según él, para que Linux no haya alcanzado el escritorio: la dificultad de distribuir los binarios para Linux.

Otro tema relevante es systemd. Linus no parece tener grandes problemas con él. Esta charla tuvo lugar justo antes de que Debian decidiera ir definitivamente a por este sistema de gestión de demonios y eso se hace patente cuando Torvalds dice saber que Debian va a usar Systemd pero la audiencia no parece tenerlo tan claro. Desde entonces se han producido un par de hechos importantes: un desarrollador de Debian abandonó el proyecto por el acoso de la comunidad en este aspecto, y poco después apareció Devuan, un fork de Debian sin systemd. Y para los que no estéis al tanto, quizás os resulte interesante la animadversión que existe en torno a systemd donde incluso su desarrollador, Lennart Poettering, ha recibido amenazas de muerte.

Por último cabe remarcar el enfado de ciertos desarrolladores con las (malas) formas de Linus cuando se dirige a alguno de ellos durante el desarrollo.

El índice de temas tratados es el siguiente:

· 0:01:34. A Linus le parece complicada la instalación de Debian y por eso no lo usa. También explica por qué no usa Ubuntu y qué espera de una distro.
· 0:04:54. ¿Cuándo llegará al año de Linux en el escritorio? Según él, Valve jugaría un papel fundamental para que esto se pueda llegar a producir.
· 0:12:20. ¿Qué versión de GCC crees que debería ir en la siguiente versión de Debian?
· 0:13:16. Alguien le hace una pregunta técnica relacionada con la función ‘revoke()’.
· 0:14:38. Le preguntan sobre sus groserías hacia los desarrolladores.
· 0:18:40. ¿Qué opina Linus sobre Systemd?
· 0:21:40. ¿Qué puede hacer Debian para hacer la vida más fácil a sus usuarios y a los desarrolladores?
· 0:24:45. ¿Qué pasaría si uno de los hijos de Torvalds decidiera dedicarse a mantener el kernel?
· 0:25:51. Sobre la forma de distribuir Subsurface y los programas para Linux en general; uno de las grandes problemas para que Linux llegue al escritorio.
· 0:27:50. Uno de los oyentes se levanta sólo para decirle lo decepcionante que es que no sea capaz de dirigirse a otros desarrolladores con respeto.
· 0:28:44. Se profundiza en el tema de la distribución de binarios.
· 0:31:31. ¿Qué más se puede hacer para acercar Linux al escritorio?
· 0:33:50. Sobre el éxito de Git, otra de las creaciones de Linus Torvalds.
· 0:38:08. Un desarrollador de controladores le hace una pregunta muy técnica relacionada con ‘ioctl’.
· 0:41:16. Sobre lo importante que es para Totvalds la retrocompatibilidad del ABI de Linux.
· 0:47:21. Un oyente le pregunta sobre la licencia GPL versión 3 y Linus dice que la odia, que la FSF ha intentado engañar a la gente y que no quiere volver a tener nada que ver con esa organización. Aparece el tema de la tivoización como razón de ser de la GPL v3.
· 0:56:54. Aquí Linus da su opinión sobre el ingente desperdicio de personal que se dedica a empaquetar aplicaciones, como Subsurface, que usan una pequeña cantidad de personas; un trabajo inútil (según él) que además se repite en todas las distribuciones.
· 1:02:13. Un oyente le pregunta con ironía cuál es la cosa más injusta del mundo para él. Aquí Linus habla de sus exabruptos hacia Nvidia.
· 1:05:36. Responde a una cuestión sobre la seguridad en Linux con SELinux y AppArmor.

Como de costumbre, la charla está subtitulada:

 

La transcripción completa de la conferencia se puede leer a continuación:

Tenemos el privilegio de tener con nosotros a Linus Torvalds. Esto es una sesión de preguntas y respuestas. Me gustaría poner énfasis en el hecho de las preguntas así que poneos ordenadamente en cola para preguntar algo porque no os hablaré si no lo hacéis. Él estará para moderar las preguntas y supongo que podemos pasar a dar la bienvenida a Linus.

Parece que no hay preguntas, lo cual está bien, ha sido corto. Estoy interesado en quienes de vosotros vivís aquí. Bien, parece que no muchos. Porque hace unos meses hice una sesión de preguntas y respuestas a un grupo de usuarios de Linux/Unix de Portland. Esperaba que hubiera gente nueva aquí y eso parece que es lo que hay. No hago discursos, odio hablar en público. No sé en qué estáis interesados. O esto es una sesión de preguntas y respuestas o no es nada.

Empezaré con algo no controvertido.

No tengo problemas con la controversia. No suele ser un problema para mi.

Por estos lares se sabe que en 2007 hiciste una entrevista en la que dijiste que, aunque usabas varias distribuciones, nunca habías usado Debian porque la instalación te resultaba muy complicada.

Si…

¿Lo has intentado desde entonces?

No. Esa ha sido rápida. Estoy seguro de que se ha vuelto mucho más fácil de instalar. Para mi una distribución es… lo siento, quizás os queráis tapar los oídos. Una distribución no es algo interesante. Quiero que sea fácil de instalar para poder seguir con mi vida que en mayor parte es el kernel. Lo más cerca que he estado de instalar Debian fue en una máquina, he olvidado en cual, debió ser en un MacBook Air que tuvo problemas instalando algo. El instalador se inició pero no instaló nada y finalmente averigüé cuál era el problema con esa máquina pero ya era demasiado tarde. He probado Ubuntu y pase a la siguiente rápidamente porque me resultó muy difícil instalar mi propio kernel y cuando la instalación con ‘make’ no me funciona digo “en fin, haré cualquier otra cosa”. Así que alguien debería comprobar que puedes instalar con ‘make’ y que no tienes que hacer el paquete e instalar el paquete porque si tengo que instalar un paquete, en ese momento la distribución marca mi camino y en ese momento digo “Bien, haré otra cosa en vez de esta”.

Hay formas de romper la instalación de un sistema operativo, lo he visto varias veces pero aquí no lo he visto. Debian la última vez fue muy fácil. Te recomiendo encarecidamente que lo intentes.

Quizás debería intentarlo pero uno de los problemas que tengo es que no me dedico al SIG. Hago el kernel y eso hace pensar a la gente que soy una persona técnica, pero cuando tengo que mantener una máquina soy un completo desastre. Cambio mi ordenador con regularidad, así que cambiar el sistema de mi ordenador debería ser fácil. Acabo modernizando mi ordenador un par de veces al año pero acabo manteniendo también los ordenadores de mi familia y al final resulta que no actualizo el hardware de los ordenadores de mi familia con regularidad y no quiero usar distintas distribuciones en los distintos ordenadores porque eso me da por saco. Para mi, una distribución es algo que se queda conmigo mucho tiempo. Cuando empiezo con algo, se me hace complicado hacer otra cosa porque eso significa que tengo que cambiar el ordenador de mis hijos, el de mi mujer y eso es una lata. Así que es por eso.

Bien, esto es un poco complicado. Creo que todos nosotros, al menos yo me estoy preguntando cuándo llegará al año de Linux en el escritorio, si es que llega. Y no nos gusta que sea el año de Debian si es posible, estoy intentando averiguar si tienes algo que pueda acercar eso.

Hay muchas cosas que lo están acercando. La gente técnica no tiende a usar Chromebooks pero los Chromebooks son el tipo de cosas que harán que el año del escritorio sea más posible porque una vez que la gente empieza a usar sus aplicaciones basadas en el navegador web, hace las cosas mucho más fáciles Dicho eso, dejadme que empiece a despotricar. Uno de los problemas que tiene el escritorio, ignorando el tema del mercado y las preinstalaciones… La gente normal, y con gente normal me refiero a gente que no es técnica, que compra un ordenador y simplemente trabaja, una de las cosas que las distribuciones de escritorio no han hecho nunca bien, es el empaquetamiento de aplicaciones y ahora alguien podría decir “¡ey! los paquetes deb se has perfeccionado y son mejores que rpm” pero no es de eso de lo que hablo. Estoy hablando de los desarrolladores de aplicaciones que quieren hacer un paquete de sus aplicaciones para Linux. He visto de primera mano con los otros proyectos en los que he estado involucrado, lo cual es mi aplicación Divelog. Hacemos binarios para Windows y OS X. Básicamente no hacemos binarios para Linux ¿Por qué? Pues porque hacer binarios para Linux es una jodienda. No haces binarios para Linux, haces binarios para Fedora 19, Fedora 20, puede que incluso para RHEL 5 de hace 10 años. Haces binarios para Debian Stable aunque en realidad no haces binarios para Debian Stable porque tiene bibliotecas tan viejas que si es algo que no has hecho en el último siglo, no funciona. Hacer binarios para Debian, sea cual sea el nombre en clave para Debian Unstable, incluso eso es un sufrimiento porque… ¡madre mía!, tuvimos esa pequeña pequeña fiesta local de fuegos hace un par de días. Debian tiene estas reglas en las que se supone que tienes que usar bibliotecas compartidas y si no usas bibliotecas compartidas, introducir tus paquetes resulta complicado. Usar bibliotecas compartidas no es una opción cuando estas son experimentales y las bibliotecas son usadas por dos personas y uno de ellos está loco. Cualquier día alguna se rompe y tú lo único que quieres hacer es compilar un binario y que funcione, preferiblemente para siempre y preferiblemente en todas las distribuciones de Linux. En realidad creo que las distribuciones han hecho un trabajo horriblemente malo. Una de las cosas que hago en el kernel, con la que tengo que luchar en cada versión, lo cual creo que es triste. Tenemos una regla en el kernel. Tenemos una regla: no rompemos el espacio de usuario. Todo lo demás son pautas. El tema de la seguridad es una directriz de que no deberíamos hacer estupideces. Pero esa no es una regla estricta. La gente hace estupideces constantemente y no me molesta. Si la gente rompe el espacio de usuario me enfado muchísimo. Esto es una religión para mi: el espacio de usuario no se rompe. E incluso en el kernel, en cada nueva versión tengo a gente diciendo “vale, estoy cambiando esto en el ABI porque estoy haciendo una limpieza”. Y yo digo “no, no vas a realizar cambios en el ABI porque si no te voy a machacar”. Y otras veces digo “bien, cambia el ABI siempre que nadie se de cuenta”. Pero cuando alguien se da cuenta, es un mal asunto. Esto es muy importante para el kernel para lo cual dedico un gran esfuerzo en explicar a todos los desarrolladores que es un asunto muy importante y luego llegan todas las distribuciones y meten la pata, porque rompen la compatibilidad de binarios. Actualizan ‘glibc’ y todo se rompe. Lo habéis recompilado todo ¿verdad? A menudo parece ser una mentalidad como de la gente de glibc dice “era un fallo, mira, aquí está el estándar, puedes confiar en eso”. Y a nadie le importa. Si es un fallo del que se fía la gente, no es un fallo, es una nueva función. Ni siquiera me voy a poner con el resto de bibliotecas pero es muy triste que en la mayoría de las bibliotecas principales del sistema, está bien romper cosas. Siempre que las cosas “mejoran”, y arreglo el ABI. Así que esa es mi crítica y eso es algo que de verdad creo que debe cambiar para que Linux funcione en el escritorio, porque no puedes tener a desarrolladores de aplicaciones sacando 15 mil millones de versiones diferentes. Tengo que decir que puede que Valve haya salvado a Linux en el escritorio, no porque crea que los juegos sean importantes, no me importan, no juego. Creo que algunos sí lo hacen así que puede que sean importantes, pero lo realmente importante es que te garantizo que Valve no va a hacer 15 binarios diferentes. Y también te garantizo que todas las distribuciones de escritorio se van a preocupar de los binarios de Valve. El problema es que Valve lo construye todo estáticamente enlazado y crea binarios inmensos y eso es triste pero es lo único que se puede hacer en estos momentos. Perdón por despotricar.

Esto no es una pregunta para Linus. Quiero advertir algo relacionado con la audiencia que debería haber dicho al principio y siento mucho no haber hecho. Debido a la naturaleza de esta sesión, podría aparecer lenguaje vulgar. Si sois sensibles al lenguaje soez, os invito a salir y hablarlo conmigo ¡Gracias!

Lo siento, no he leído las directrices de la sesión. Me enviaron las normas así que no podéis culpar a los organizadores, es culpa mía.

¿Qué versión de GCC crees que debería ir en la siguiente versión de Debian?

Bien, solucionamos un problema que tuvimos con una versión particular de GCC que ya habéis sacado así que estáis bien, os libráis. Todavía hay algunas discusiones abiertas, la mayoría se han calmado, por la forma en que el kernel solucionó este fallo de GCC. Y casi nadie se va a ver afectado por ese fallo porque tienes que tener un ensamblador inline y muy pocos proyectos hacen eso esto. Lo solucionamos en el kernel a martillazos, lo cual no gustó a algunos. Eso significa que cualquier versión de GCC que sea más reciente que 4.2 probablemente esté bien.

Tengo una pregunta técnica increíblemente aburrida. Hace poco he visto que hay otro parche para proposiciones para la implementación de ‘revoke()’ ¿Le has echado un vistazo ya?

No he tenido tiempo de echarle un vistazo. He visto algo de la infraestructura del núcleo contando las cosas que usa y… probablemente va a suceder. Una cosa con la que estaba contento es con un comentario que podría ser lo suficientemente genérico como para usar lo mismo. Básicamente lo usamos para cambiar CCFS. De todas formas tiene los mismos problemas. Tenemos muchas cosas internas que ya pueden ser ‘revocadas’, es sólo que no está expuesto genéricamente para cualquier descriptor de archivos. Sin ninguna duda va a ser desagradable. Al mismo tiempo la gente ha estado preguntado sobre ‘revoke()’ durante mucho tiempo. Se va a hacer, aunque no puedo decir que vaya a salir en la siguiente versión ya que se producirán algunos debates antes de eso.

Siento hacer esta pregunta pero creo que es importante ¿Cómo crees que afecta a la cultura de la comunidad de un proyecto cuando el líder está en la lista pública de correo del proyecto diciendo a la gente, en respuesta a la revisión de parches, que los deberían abortar con retroactividad? Que estés sorprendido que sigan con vida porque deberían haber muerto de hambre de niños porque eran demasiado tontos para chupar de la teta.

Estoy de acuerdo en que algunas personas se podrían desanimar por eso pero por otra parte… ¿sabés? al final no me importa. Me preocupo por la tecnología y he visto proyectos que han sido completamente políticamente correctos hasta tal punto que el proyecto no ha ido sobre tecnología. Creo que va a haber más preguntas. En algún momento nos querremos moderar. En realidad me alegra hablar de esto. No supone un problema para mi. Mi postura ha sido siempre, la gente es diferente, soy abrasivo. Crecí en una cultura que no es tan políticamente correcta como la cultura en los EEUU hoy en día. También crecí en una familia disfuncional. La gente es diferente y algunos se ofenden y otros ofenden. Tenemos que vivir todos juntos, pero vivir juntos no significa encontrar un mínimo común denominador. La vida juntos ha tenido bastante éxito. Intentar darnos cuenta de “¡ey! soy como de tu familia”, puedes escoger a tus amigos y a tus colaboradores y el código abierto es bueno en eso. Mejor que muchos proyectos de software comercial porque en un marco comercial, te puedes quedar atascado con el jefe. En código abierto, encuentras a gente que te gusta, encuentras a gente con la que te gusta trabajar. Trabajo directamente con unas veinte personas estrechamente y con cincuenta más o menos. En cada nueva versión hay mil personas involucradas. Encontrar a alguien mejor que yo está bien. No estoy dispuesto a ser menos honesto porque sé que soy abrasivo. A menudo digo “me pregunto como crecerá hasta ser un adulto tan estúpido que no espero que encuentre comida”. Algunos se habrán dado cuenta de que es una especie de hipérbole y es de broma.

No estoy diciendo que no sea políticamente correcto pero entendería que la gente dijera eso. Es más de tratar a la gente con respeto y quizás decir…

Podéis aplaudir lo que queráis, pero no respeto a la gente a no ser que se merezca respeto. Hay gente que cree que el respeto se debe regalar. Y resulta que soy una persona que puede decir “no” alegremente. El respeto se debe ganar y si no te lo ganas, no lo tienes. Es así de simple y hay gente que no está de acuerdo con eso, lo cual está bien y hay gente con la que no quiero trabajar. Soy consciente de que afecta a ambas partes por igual.

Vale, gracias.

Buenas tardes en fin, Systemd…

¡Vaya!

Emplea tecnología expuesta por el kernel de Linux. No está expuesto por otros kernels sobre el espacio de usuario, ¿te gusta cómo Systemd usa sólo tecnología de Linux? ¿No te importa que use el espacio de usuario? Y ¿cuál es tu opinión sobre el PID 1?

¡Vaya! No creo que el PID 1 sea tan especial. Creo que Systemd hace muchas cosas bien. El problema que he tenido con Systemd ha sido que antes de que Systemd empezara, en otra conferencia sobre el kernel de… hace 5 años, pero es un número inventado, Lennart nos dio una charla sobre los UUID a la gente del kernel en la conferencia sobre el kernel, y nos reímos. Las UUIDs son una locura. Hacerlo con XML es una mala idea y exponerlo como algo guay e inteligente… Me sentí estúpido y no era el único. Al mismo tiempo no hay duda de que el sistema ‘init’ de Unix no es estupendo. Y no recibía mantenimiento activamente. Systemd proporciona muchas características que no puedes conseguir de otra forma. El aumento de velocidad en el arranque es auténtica y no estoy diciendo que no puedan conseguir lo mismo sin Systemd pero Systemd dio el paso y lo hizo. Creo que la lucha casi ha terminado. La ausencia de portabilidad es lamentable. Pero una cosa que detesto es que el reporte de fallos ha sido ignorado en algunos casos y eso no me gusta. ¿Queda mucho por debatir? Puede… Creía que Debian ya había decidido ir a por Systemd, pero parece que sólo he escuchado una parte de la historia. Soy consciente de que la gente espera que odie Systemd. No lo odio, en serio. Creo que de alguna forma es interesante, pero eso no.

Has dicho que el escritorio y las distribuciones son cosas que más o menos no querrías que se pusieran en tu camino o que te hicieran la vida más difícil, cosas como por ejemplo realizar instalaciones. ¿Qué par de cosas pueden hacer distribuciones como Debian para hacer tu vida personal o profesional más fácil, que pueda tener una influencia positiva más allá de tener un puñado de software para Linux?

Mi uso personal de Linux en realidad es pequeño. He mostrado cómo es mi escritorio y la respuesta de la gente ha sido “¿eso es todo?”. Tengo un navegador web y tres ventanas con terminales abiertas y poco más o menos eso es todo. En mi caso no tengo la necesidad de que una distro tenga muchos adornos. Uso ‘make’, ‘gcc’, ‘bash’ y ‘xterm’ o ‘gterm’ o cualquiera, ni siquiera me importa qué terminal sea. Lo que haría mi vida más fácil y por lo que a veces he despotricado es… Obviamente mi familia usa Linux y lo han estado usando desde hace mucho tiempo. No tengo problemas con Linux pero hasta hace poco, he estado criticando la configuración de la zona horaria o que la conexión de una nueva impresora inalámbrica era innecesariamente complicada y necesitaba privilegios que mis hijos no deberían necesitar tener. Cuando van al colegio, tienen que ser capaces de conectarse a la impresora del colegio y la solución no es que yo, como administrador de sistemas, vaya al colegio para instalar esa impresora. En ese punto, la solución fue decir “bien niños, podéis ser administradores, esta es la contraseña de root por si la necesitáis”. Al final hice de administrador porque apuntaron la contraseña incorrecta. Eso fue una molestia para mi y fue una molestia innecesaria. Me gustaría que las distribuciones se centraran en hacerse fáciles para la gente normal porque de esa forma no tengo que mantener demasiado la máquina. Por cierto, me gustaría señalar que mis dos quejas ya han sido solucionadas. Al menos en la distro que uso ahora puedes configurar cualquier zona horaria que quieras sin problemas. Por supuesto, falla si configuras la zona horaria para que sea la hora de la red automáticamente y la red se cae, pero eso no es un fallo de la distro, fue un fallo de Gnome.

Hola, quizás recuerdes un evento hace unos años en Cambridge, probablemente no. Te dimos una camiseta de Debian, espero que la apreciaras y le dieras un uso apropiado. Tengo una pregunta, ¿qué pasaría si de aquí a unos años uno de tus hijo fuera a ti y dijera “papi, quiero ser un hacker del kernel”? ¿Qué le dirías?

Diría “¡aleluya!” porque eso no va a ocurrir. Nunca les he presionado. Quiero que mi hijos tengan una educación y mi mujer pretende que les empuje pero nunca les he empujado hacia la informática. Espero… porque creo que es una magnífica educación. Creo que es una estupenda forma de conseguir trabajo. Es un área estupenda en la que estar metido. Espero que decidan ir hacia eso, pero de momento no hay ningún interés y no veo que vaya a suceder. Me encantaría que fueran desarrolladores del kernel pero… Voy a tener que adoptar.

Hola, siguiendo con la conversación sobre Subsurface, tengo una pregunta ¿has considerado distribuir Subsurface como algo que se ejecute dentro de un contenedor para Linux usando LXC, Docker o algo así?

No lo he hecho y admito que ya no mantengo Subsurface. Tan sólo comencé el proyecto y, como la mayoría de la gente inteligente, empuje a alguien dispuesto a cogerlo. Ya se ha hablado. No es algo que Subsurface haga por sí mismo pero hay proyectos que aparentemente se han dado cuenta de que esto es un problema y no ha habido un clamor generalizado para hacer que el contenedor Docker funcione como una forma de instalar paquetes de aplicaciones de un forma cuerda, segura en un entorno que es limitado. Puede que limitado no sea la palabra, pero en entornos estandarizados donde puedes hacer cosas como actualizar el sistema sin romper tus aplicaciones. Tengo la esperanza de que haya gente que esté mirando esto. Subsurface es un pequeño proyecto con un puñado de desarrolladores lo cual es así para la mayoría de ellos. Probablemente sepas, probablemente todos vosotros sepáis que trabajar en proyectos pequeños con un puñado de desarrolladores significa que tú… Esa clase de proyectos no tienen los recursos como para decir “¡ey! vamos a sacar binarios para este multitudinario número de distribuciones” ¿Alguien aquí está trabajando en algo como esto? Una mano. No, dos manos. Algún día…

En realidad esto no es una pregunta y siento decirlo pero me gusta trabajar con gente que pueda expresar desacuerdo técnico de forma razonable y sin ser desagradable y sin recurrir a insultos y me resulta decepcionante que no te resulte importante.

Está bien. Una de las cosas de las que me he dado cuenta después de haber estado haciendo esto mucho tiempo es que es un buen recurso del que disponer. Creo que esto también significa que las críticas acaban siendo que no se trabaja tan bien sólo porque hago esto en otras áreas.

Bueno, Sparse apareció, ya sabes… GCC es demasiado desagradable como para meterle mano. Git apareció porque no había un control de versiones adecuado. ¿Has considerado intentar solucionar el problema de la distribución de binarios en las distribuciones? ¿Qué hace falta para que ese problema te resulte lo suficientemente molesto como para solucionarlo y convertirlo en un estándar en una semana?

¿Sabes? Yo… Git fue un problema muy simple. Era algo que todo el mundo estaba considerando. Hubo algo con la gente del control de versiones, que tenían sus mentes deformadas por años de uso de CBS y en realidad Git es un problema muy simple de resolver y por eso se tardaron dos semanas en tener la primera versión funcionando. Sparse tardó más pero al mismo tiempo, escribir una interfaz en C es un asunto bastante simple e independiente. El preprocesador de C era interesante pero… Solucionar todo el tema de los binarios es muy complicado. Parte del problema es que puedes solucionarlo enlazándolo todo estáticamente y proporcionando también tu propio sistema de archivos pero en realidad ahora tienes que hacer eso porque no puedes confiar en las bibliotecas que te ofrece el sistema y no puedes confiar en las rutas de las que esas bibliotecas dependen. Tenemos ese problema, que no es específico de Linux. Cuando creas los binarios para Windows o OS X, te das cuenta de que el empaquetamiento de aplicaciones es difícil porque cada sistema tiene fuentes tipográficas diferentes, tiene rutas diferentes para los iconos y cosas así y para un paquete completo tienes que incluir todos esos recursos. Me encantaría decir que he resuelto eso pero creo que es improbable ya que la mayoría de los proyectos en los que me he involucrado han resuelto mis propios problemas y la solución para Subsurface en estos momento es recompilar. Sé que no es la solución correcta pero para mi funciona y desgraciadamente eso funciona para casi todos los que estáis aquí, pero no funciona demasiado bien para los mantenedores de paquetes porque tienen que preguntar a antiguos usuarios para recompilar. Pero ya no mantengo Subsurface.

A parte de compilar una vez y ejecutarlo en cualquier sitio ¿cuales son tus requisitos para este sistema? ¿Es ese el único requisito o hay más?

Por ejemplo, la gente ha sugerido que qué hacemos usando Qt y antes de que usáramos Qt, o “Cute” como dice la gente de Qt, usábamos GTK. He tenido a gente diciéndome que “estás loco, no debes hacer eso, usa la bibliotecas de clase de Java, puede quedar feo pero será fácil hacerlo funcionar en cualquier sitio”. Otro problema es que las aplicaciones no pueden hacer eso porque acaban necesitando, como en el caso de Subsurface, necesitamos estas extrañas interfaces para usar USB Direct o dispositivos USB o puertos serie o cosas de esas y quien me diga que los puertos serie funcionan en Java, obviamente ha estado no sé… han estado comiéndose la seta equivocada. He probado Divelog con Java y el problema es que los puertos serie ya no funcionan en Java. Los requisitos son que lo quieres todo. Quieres acceso real al hardware porque no todos quieren acceso al hardware pero muchos programas quieren comunicarse con Bluetooth o puerto serie, o cualquier otra cosa. No quieres la base estándar de Linux lo cual es la instalación mínima para estas aplicaciones simples y bases de datos, tienden a ser simples en ese aspecto. Esto es todo en lo que tienes que confiar. Para las aplicaciones orientadas al usuario, quieres todas esas bibliotecas gráficas con OpenGL, con todo… En parte es por esto por lo que tengo esperanza con Valve porque evidentemente quieren todo el tema de gráficos, pero dentro del juego también quieren la parte relacionada con el hardware. Quieres tener acceso a tu propio gamepad y cosas así.

Mi pregunta es sobre Git. En primer lugar, gracias por crear esa estupenda herramienta.

En realidad cuando me agraden lo de Git, deberíais agradecérselo a Junio Hamano. Él lo ha estado manteniendo hasta ahora durante 8 años.

Unos 9.

En realidad es a él a quien deben ir.

Precisamente mi pregunta va sobre eso. Iba a decir que hace unos 9 años dejaste que lo mantuviera él y me preguntaba en qué pensabas en esa época, por ejemplo, voy a empezar por lo menos obvio. Es relevante en la comunidad de Debian de Git, Dropbox o cosas relacionadas con la sincronización. El más obvio de todos: Github, es una mezcla de la ‘monocultura’ de nuestro propio mundo popularizando Git y el código abierto, conducido por las contribuciones que hacen que haya barreras de entrada bajas y todo el mundo en las compañías… Lo están usando quinceañeros ¿qué opinas sobre cómo han ido las cosas?

Tengo que decir que Git ha sido un gran éxito. Por ahora, si eres desarrollador se tiende a usar Git. La parte interesante es que no es sólo el kernel de Linux, es Windows, es Mac; todo el mundo está usando Git. Es interesante porque mirando atrás, la gente se solía quejar de lo horribles que eran las interfaces y algunas eran horribles, no me malinterpretéis, eran feas. Al mismo tiempo algunas que eran feas, no eran realmente feas, era el diseño y la gente se quejaba constantemente de eso. Pasaron 5 años y la gente dejó de quejarse y dijo “ey, debemos renombrar las cosas”. En realidad funciona mejor que otros como SCM o… todo el… Gitblit es lento y un poco raro pero, ¡vaya!, en realidad sigue el código a otros archivos y cosas como esas. Ha sido interesante ver cómo, no es sólo que la gente se haya puesto a usar Git, es que la gente ha empezado a darse cuenta de todo el tema de los sistemas distribuidos y del modelo de Git en los sistemas distribuidos. Creo que Github ha sido muy importante. El hecho de que tengas una forma fácil de hacer hosting es importantísimo para un SCM y Git lo hace fácil. Git hace técnicamente fácil hacer ese tipo de hosting de una forma en la que cualquier sistema centralizado no lo hacía pero todavía… para Github ha sido… Otras compañías han popularizado Git y quiero decir que Junio… es interesante… Una de las cosas que personalmente considero más importantes cuando se trata de gente técnica, es esa noción de gusto. La razón por la que le di Git a Junio es porque me tomó, ni siquiera fueron meses, necesité semanas para darme cuenta de que este tipo tiene gusto. Le mostré todo… Diseñé lo básico y las reglas sobre cómo funcionaría Git pero todo el trabajo real ha sido de Junio y, obviamente, de otra mucha gente, pero Junio ha sido la fuerza central.

Gracias.

Me gustaría volver a tus declaraciones de antes sobre romper el espacio de usuario y quiero asegurarme que es una de las cosas con la que tengo que estar de acuerdo. En mi rol como desarrollador de controladores, también reviso los controladores de otra gente en nuestro grupo y una frustración que tengo que he intentado articular es que veo que se hacen cambios en la estructura de datos entre el espacio de usuario y el controlador en ‘ioctl’ que rompe ‘ioctl’. Hay una cosa que también veo que se usan en la estructura de datos empleada en ‘ioctl’ que no es consistente entre los 32 bits y los 64 bits. Uno de ellos me viene a la mente, es algo llamado ‘dma_addr_t’. Me molesta que se use en la estructura de datos. Me gustaría que…

Es completamente razonable. ‘ioctl’ ha sido un gran lío. Hay algunas subareas en el kernel que se han quemado tantas veces que hay que limpiarlas. La capa de la GPU me viene a la mente por ser muy usada por ‘ioctl’ y se ha quemado. Incluso en un tipo de 64 bits donde piensas cuán diferente puede ser un tipo de 64 bits. Esto resulta en que ¡vaya!, 32 bits, puede que sean 32 bits alineados y 64 bits pueden ser 64 bits alineados. Dependiendo de en qué parte de la estructura esté, el diseño de la estructura es diferente. Y eso es un gran problema y parte de esto es intrínseco a ‘ioctl’, los ‘ioctls’ están diseñados para ser cosas que pueden evitar todas las reglas normales y es muy molesto que sean problemáticos para todo como la capa compacta. Hay una gran cantidad de código al que hacer frente. Sencillamente ‘ioctl’ es un lío. Parte de esto es debido al diseño, parte es… No puedo culpar a programadores de controladores, pero no tienen la base. Deben tener la base para mitigar todos estos problemas y es tan fácil hacerlo mal. Con los controladores en particular es es un error muy común. Es triste cuando pasa y odio cuando pasa, pero también entiendo por qué ocurre.

¡Gracias!

Quería agradecerte tu enfoque sobre la compatibilidad hacia atrás del ABI porque es muy útil y has hecho todo el trabajo así que muchas gracias. Has hablado sobre la compatibilidad del espacio de trabajo. Soy de la base de Debian. No uso la misma distro que tú así que tu experiencia puede haber sido diferente. También tengo una tendencia ya sabes, no me importa demasiado el entorno de escritorio y lo dejo como viene por defecto. Pero mi experiencia con la compatibilidad hacia atrás del espacio de usuario es bastante buena. Le he echado un vistazo al usuario local de una máquina que fue instalada hace bastantes décadas y el binario más antiguo que todavía puedo ejecutar es de abril de 1995. Hay un par de binarios ligeramente más antiguos y pude ejecutarlos. Estoy bastante seguro de que funcionaron bien pero mi kernel ya no tiene soporte para ciertos ejecutables. No es tu culpa que mi kernel de Debian no tenga ya sabes…

No te voy a garantizar que funcione. Dicho eso, estaba muy orgulloso del hecho de que en algún momento, creo que fue Alan Cox quien cogió los binarios originales que yo había puesto a disposición del público en los disquetes de arranque en 1991 e intentó ejecutarlos, y todavía funcionaban. El problema es que decir que sí, que la retrocompatibilidad funciona a hace casi 20 años, es darnos palmaditas en la espalda a nosotros mismos, pero el hecho es que todos los problemas de compatibilidad no vienen de los binarios viejos. Todos los problemas reales de compatibilidad tienden a venir de los binarios modernos porque hace cosas más complicadas y los problemas tienden a ser cosas como cuando actualizas una biblioteca, la aplicación deja de funcionar. Estoy casi seguro de que todo el mundo aquí ha visto eso. Y a veces es un fallo de la biblioteca… ¿Nunca habéis visto eso? ¡Vaya!

Ya sabes, trato con Gnome… Todas esas cosas están fuera de mi ámbito pero no se han roto binarios porque haya actualizado una biblioteca.

El código de bajo nivel tiende a ser más fácil. Tiende a ser código UI, en parte porque las bibliotecas son más complicadas en parte también porque el código UI suele ser más grande y los fallos ocurren más. Una cosa que personalmente me molesta mucho desde hace un par de años es que la gente todavía usa Flash. Y Adobe solía tener Flash Player disponible y Flash Player usaba ‘memcpy’ para copiar memoria superpuesta en la capa de audio de Flash Player y todo el mundo sabe que eso está mal. Se supone que no debes hacer eso. Se supone que debes usar ‘memmove’. Esto funcionaba sólo porque copiaba de una dirección inferior a una superior o algo así. Así que de una superior a una inferior, estaban compactando la memoria y con un movimiento hacia delante, ‘mempcy’ funcionaba, pero era pura suerte y luego el arreglo de ‘glibc’ fue pura suerte. Y rompió un binario que no podía recompilar. Y cuando no puedo ver gatitos en Youtube, me molesta. Tengo que ver eso.

Agradezco tu amabilidad ahí. En realidad estoy de acuerdo contigo en este punto y creo que deberían usar nombres simbólicos para dar retrocompatibilidad a una versión anterior de ‘memcpy’. Ya sabes, sólo tendrían que ‘memcpy’…

Creo que esto ha acabado sucediendo después de haber sido hostil. No estoy seguro, ya no me voy a preocupar más de eso. Pero este es el tipo de ejemplo de los que tenemos muchos en el kernel donde arreglamos algo que claramente era un fallo y cuando lo arreglamos, rompemos otra cosa. No he querido ser gracioso. Pero resulta que algunas personas confían en los fallos y algunos de nuestro fallos son increíblemente estúpidos y entonces la gente dice “¡ey! esta modificación que, claramente es el arreglo de un fallo, ha roto mi aplicación” y esto es muy frustrante y a veces decimos “bien, lo desharemos”. A veces el problema… Uno de nuestro problemas en el kernel ha sido que, a menudo, la gente prueba kernels, especialmente en entornos comerciales, que tienden a estar dos años atrasados, así que algunas de estas cosas, la rotura literalmente no suceden cuando rompemos algo, ocurrieron dos años antes cuando rompimos algo y tenemos un informe donde decimos 3.4.15 ha roto mi aplicación. Y puede resultar difícil ver que lo hacemos lo mejor que podemos. No garantizo que nunca rompamos el espacio de usuario, romperos el espacio de usuario. A veces tenemos que hacerlo porque resulta que a veces la interfaz tenía demasiados fallos o flagrantes problemas de seguridad sin el arreglo. Y a veces es como han pasado dos años, ni siquiera sabemos qué estaba roto lo siento, tenéis que indagar si necesitáis arreglarlo y en ese momento mucha gente dice “vaya cagada”. Así que rompemos cosas, me encantaría decir que no lo hacemos pero lo hacemos.

Estás de acuerdo en que has minado la licencia GPL v3 y cómo se puede parar

¿Qué?

¿Cómo puede GNU hacer que pares?

Odio la GPL versión 3. La he minado a propósito. En realidad pensé que las extensiones de la GPL versión 3 eran horribles. Entiendo por qué la gente querría hacerla pero creo que debería haber sido una licencia completamente nueva. Mi argumento para que me guste la versión 2, y todavía pienso que la versión 2 es una gran licencia, era que yo te doy código fuente y tu me devuelves los cambios. Esa es mi opinión sobre la versión 2. Es así de simple. La versión 3 se ha extendido de unas formas con las que no estoy cómodo. Esto es, te doy el código fuente. Eso significa que si usas ese código fuente, no puedes usarlo en tu dispositivo a no ser que sigas mis reglas y para mi eso es una violación de todo lo que dice la versión 2. Y entiendo por qué la FSF la hizo, porque sé lo que quiere la FSF pero para mi no es para nada la misma licencia. Estaba muy molesto. Lo dejé muy claro meses antes de que la versión 3 fuera publicada. Hubo una discusión sobre esto mucho antes. Hubo una versión anterior a la versión 3, incluso años antes donde dije “no, esto no va a funcionar” y durante ese debate ya había añadido al kernel que “¡ey! no tengo la versión 2 o posterior”. Y estaba muy contento cuando la versión 3 salió, pero había hecho eso como 5 años antes porque no hubo ninguna pregunta sobre cuál era la licencia del kernel. Pero en realidad pienso que la versión 3 es… En realidad pienso que la versión 3 está bien. Creo firmemente en que si tú escribes tu código, tú eliges la licencia y la versión 3 es una licencia que está bien. La versión 3 no era una buena… Aquí te damos la versión 2 y luego te intentamos colar estas tres nuevas reglas e intentamos forzar a todo el mundo a actualizar. Esa era la parte que no me gustaba. Y la FSF hizo algunas cosas muy engañosas, completamente inmorales en mi opinión.

Estás hablando sobre la tivoización.

Si, la tivoización era siempre la aversión a la versión 3. La FSF fue muy deshonesta diciendo “¡ey! en realidad te permitimos invalidar la cláusula sobre la tivoización”. E intentaron… literalmente mintieron a la gente y dijeron “¡ey! ¿eso significa que puedes usar GPL v3 sin la parte sobre la tivoización?”. ¿Quienes habéis oído a la FSF esta declaración en particular? Bien, quizás ellos están intentado convencerme de que es sólo uno, pero lo hicieron. No soy imbécil. Sí, puedes hacer que la GPL v3 te permita decir “bien, la tivoización no es un problema para nosotros” pero esto permite a cualquier otro coger el proyecto y decir “¡ey! la GPL v3 sin tivoización es compatible con la GPL v3 completa así que voy a hacer mi propia derivación y voy a empezar a hacer controladores que use la versión completa de la versión 3” y dices “¡ey! te he dado mi código fuente y ahora no puedo usar tus cambios”. Eso está completamente en contra de la licencia en primer lugar. Así que la FSF era… este tipo de cosas estaban ocurriendo detrás de las cámaras. Decidí no tener nunca más nada que ver con la FSF. Así que si queréis dar dinero a una organización que lo haga bien, dádselo a la EFF. La FSF está llena de locos y fanáticos. Es sólo mi opinión. He exagerado un poco, ¿vale? La FSF tiene mucha gente agradable pero algunos son un poco extremistas.

Desearía que la EFF se preocupara un poco más de la libertad del software pero, ¿crees que la tivoización me beneficia de alguna manera a mi como usuario?

No. No, no lo creo, pero ese no era mi argumento. No es por eso por lo que he elegido la GPL v2. Ese no es mi objetivo. No es que piense que la tivoización es algo necesariamente por la que te debas esforzar. Pero es algo que en mi visión del mundo es decisión tuya. Si haces hardware que bloquea el software esa es tu decisión como creador de hardware. No influye en mi decisión como creador de software de darte el software. ¿Ves a donde quiero llegar? No me gusta el hardware que cierra pero al mismo tiempo, eso nunca ha sido el contrato social que pretendía con Linux. Para mi… La gente se puede dar cuenta o no de que la GPL v2 ni siquiera fue la primera licencia de Linux. Para mi la parte importante siempre ha sido que te doy software y puedes hacer con él lo que quieras. Si haces mejoras, me las tienes que dar de vuelta. Esa fue la primera versión de la licencia que tenía una cláusula incierta que era completamente demencial y fui tonto. Esto ocurrió, mi licencia original decía que el dinero podía cambiar de manos. Y eso fue un error, estuvo mal porque realmente no tenía nada que ver con lo que quería. Pero era… joven, era pobre, no me di cuenta de que todo el tema del dinero no fuera la parte importante. Vi el error, vi la licencia GPL v2 y dije “¡ey! esa es la licencia perfecta”. Y luego vi la licencia GPL v3 y dije “no, esto va demasiado lejos, no es lo que quería”. Así que Linux tiene la licencia GPL v2 solamente.

¿No crees que coger los parches es útil incluso si no puedes modificar el dispositivo en el que están?

Sí, absolutamente. Y TiVo por sí mismo era un ejemplo de esto. Sus parches eran enrevesados pero los estaban ejecutando en un MIPS bastante normal y sus parches arreglaban fallos en los chips que ellos usaban y eran parches valiosos. El hecho de que ellos después quisieran que su hardware fuera cerrado, de alguna forma no me gustaba, pero como he dicho, sentí que eso debía ser decisión suya. Y tenían razones reales para hacer eso. Es algo que a la gente se le escapa a veces. A veces hay razones por las que hacer lo que hizo TiVo. A veces te es impuesto por los proveedores de servicios. A veces te lo impone Disney. A veces te lo impone la ley. La licencia GPL v3 en realidad acepta esto último cuando viene de cosas como equipamiento médico, creo. Pero creo en que todo el asunto de la tivoización a veces hay una razón para esto. No soy diseñador de hardware. Las FPGAs y esas cosas están muy chulas, pero no quiero imponer mi visión del mundo a nadie. No tienes que usar Linux. Si usas Linux, lo único que pido es que me devuelvas el código que modificas y luego está toda la verborrea en la GPL v2 sobre detalles precisos que no son importantes. Y ese ha sido siempre mi punto de vista.

Está bien…

También me gustan otras licencias. He usado… ¿Cuál es la licencia aceptable de BSD? Una de las licencias BSD en realidad está muy bien. ¿Qué? ISC. Animo a la gente que no se preocupa por que le devuelvan el código pero se preocupan de “¡ey! he hecho algo guay, por favor, usadlo”. Animo a la gente a que use la licencia BSD para eso. Es decir, la licencia BSD es muy buena para eso. Lo que pasa es que para mis proyectos, devolver el código es igualmente importante así que para mi, BSD es mala. Pero la cuestión es que es “para mi”. La licencia GPL v3 quizás sea la licencia perfecta para lo que queréis hacer. Y eso está bien y esa es la licencia que deberíais usar. Cuando otro ha escrito el código, tú no tienes esa elección.

Me gustaría volver al tema de Git y compararlo con los módulos del kernel ‘out-of-tree’ donde la regla es obtener tu módulo en el kernel. Podríamos pedir lo mismo para las aplicaciones que se incluyen en las distribuciones.

Creo que muy a menudo eso es lo que realmente sucede. Esto es lo que la mayoría de vosotros… En realidad no sé qué hacéis la mayoría de vosotros. Estoy asumiendo que la mayoría de vosotros mantenéis uno o más paquetes, ¿estoy equivocado? Bien. Así que para la mayoría de vosotros, vuestro trabajo es traer aplicaciones al sistema y realmente creo que esa es la solución correcta para todas las aplicaciones base. No me malinterpretéis, no creo que algo como… El 90% de las cosas principales del sistema que son de código abierto, sencillamente deben estar en la distribución pero luego están las cosas locas. Algo como Subsurface es de código abierto pero, seamos realistas, quizás tenemos mil usuarios en todo el mundo de los cuales, quizás, un par de cientos usan Linux de los cuales, quizás, unos diez usan Debian. No sé… Tenemos algunos números, por lo que esas cifras no son completamente inventadas. Lo que quiero decir es que si tenéis diez usuarios en Debian y tenéis diez usuarios en Fedora y sé que tenemos un par de usuarios en… En realidad tenemos a un par de usuarios en Arch. La mayoría de los usuarios de Linux parecen ser de Ubuntu, lo cual tiene sentido porque los buceadores no son necesariamente gente técnica con los ordenadores. Y Ubuntu ha estado vendiendo esa especie de orgullo. Así que si tenéis esta situación ¿tiene sentido tener a gente dentro de cada distribución empaquetando esa aplicación para esa distribución y hacerlo de forma muy oportuna, cuando estamos haciendo cambios mayores? Pero es muy importante para los usuarios porque sin esos cambios, su ordenador para bucear no funciona. No, eso no tiene ningún sentido. Así que incluso para proyectos de código abierto, traer ese proyecto a un proyecto como Debian, sencillamente es un desperdicio de recursos humanos. Chicos, tenéis cosas mejores que hacer, creedme, de verdad. Subsurface es una aplicación de ocio. Nadie debería tirar su vida a la basura ¡oh! Quizás el mantenedor esté aquí. Pero la cuestión es que… Estoy muy agradecido de tener a un mantenedor en Debian. ¿He metido la pata? Este es un ejemplo donde tendría más sentido… Para Windows tenemos compilaciones ‘nightly’ y con nosotros, no me refiero a mi porque hace mucho que no he tocado una máquina con Windows. Pero Dirk Hohndel, que es el auténtico mantenedor compila ediciones ‘nightly’, y es ventajoso porque estos usuarios que tienen problemas con un modelo concreto de ordenador, él puede hacer un binario para Windows y decir “¡ey! instala este paquete y mira si tu problema se soluciona”. Esto es lo que quieres para usuarios reales. Para Linux no podemos hace eso. El paquete de Debian no está actualizado, no es una compilación ‘nightly’, no hay forma de hacer una compilación ‘nightly’. Lo único que le puedes decir a este tipo de gente es “¡ey! bájate el árbol de Git, compílalo y mira si funciona o no”. Y eso funciona si es gente como nosotros. Pero si eres un buceador que está en Hawái y ha viajado con su ordenador de bucear y usa Ubuntu o Debian, en realidad no es una solución demasiado buena. Así que incluso para el código abierto, no creo que los mantenedores de las distros deban mantenerlo todo. Deberíais hacer la parte principal y la parte principal van a seguir siendo miles de paquetes, de eso no hay duda. Y luego tenemos todo el software comercial y Debian es para gente a la que realmente no le importa… No sé… quizás me estoy saliendo aquí. ¿Cuál es la postura de Debian con las bases de datos comerciales y cosas de esas? No lo sé… Sí, quizás estoy hablando con la gente equivocada pero otras distribuciones tienen todo eso de no… ¡ey! Valve está usando Debian ¿no es así? Empezaron usando Ubuntu pero ahora están usando Debian. Así que incluso Debian debería estar al tanto de estos paquetes comerciales y para ellos, tienen que dar un paquete y en estos momentos no tienen que coger una distro sino una versión de una distro.

Creo que tenemos tiempo para dos preguntas más.

Eres el invitado pero tengo que preguntar, lo siento. A parte de no ser capaces de ver vídeos de gatitos por Internet, la GPL v3 y romper el espacio de usuario, ¿cuál crees que es la cosa más injusta del mundo?

La más injusta del mundo… Soy famoso por ser un quejica, pesimista y negativo que grita a la gente y que es un tonto del culo en público, que el 20% de las palabras que usa por email son palabrotas. El hecho es que la mayor parte del tiempo soy feliz y cuando soy feliz, estoy tranquilo. En realidad no soy todas esas cosas. Cuando me veis en público, normalmente es porque algo ha salido mal.

¿Cuál es la palabra para decir que todo va bien?

La palabra en general es “bien” y Linux lo está haciendo genial y no tengo quejas reales, pero luego me levanto con el pie izquierdo y quiero arrancarle la cabeza de un bocado a alguien y alguien me envía un parche que rompe algo y me amarga. Y en parte es que disfruto con las discusiones. La gente todavía cita el debate que tuve con Andrew Tanenbaum hace 23 años porque era un estúpido joven estudiante universitario y ¿qué hago? Me pongo a discutir con el profesor que hizo el sistema operativo que usaba. Soy discutidor, me pongo negativo. Es decir, en conjunto las cosas son muy buenas.

No poder ver vídeos de gatitos te molesta un poco.

¿Qué?

No poder vídeos de gatitos está de los primeros de la lista.

Hoy en día puedo ver gatitos porque he dejado de preocuparme de Flash porque al final Chrome tiene Flash incorporado y lo mantienen, así que no tengo de qué preocuparme. Y también soy famoso por mis broncas a Nvidia. Incluso Nvidia, ¿qué narices ha pasado? Tienen a mantenedores activos en sus áreas, es como si el mundo los hubiera convencido.

¿Tu bronca ayudó?

Me gustaría decir que quizás ayudó a elevar el calibre del problema. ¡Ey! Quizás soltar palabrotas de vez en cuando esté bien. En realidad creo que la bronca planteó la cuestión pero siendo realistas, Nvidia también se ha dado cuenta de lo importante que es Android para ellos. Y Linux se ha convertido en un actor importante para ellos ahora que están trabajando en dispositivos móviles. Así que se han empezado a dar cuenta de que quizás deberíamos jugar juntos. Y eso es lo más importante y eso es lo que ha acercado a tantas compañías.

Gracias.

Quiero hacer una pregunta sobre seguridad para hacerme una idea de tu opinión… ¿Estás familiarizado con Capsicum? El per-proceso…

He escuchado el nombre pero admito que no conozco los detalles.

Es para los per-procesos, puedes bifurcar un proceso y limitar los privilegios. Bueno, tengo curiosidad sobre tu opinión sobre SELinux o AppArmor.

La cuestión es que… No me gusta la gente que piensa en blanco y negro y esta gente de seguridad son de esos y de lo único que se preocupan es de la seguridad. A menudo me he mordido el puño con la gente de seguridad. Al mismo tiempo, la seguridad es importante, no hay duda de ello. Tuvimos problemas con código de seguridad que hacía cosas muy mal porque la gente lo escribió pensando sólo en la seguridad y, por ejemplo tuvimos grandes problemas de rendimiento. Y no solía usar SELinux cuando hacía optimizaciones. Teniendo SELinux habilitado no tenía sentido, porque cualquier optimización que hacía no valía para nada porque SELinux ocupaba todo el tiempo disponible comprobando credenciales. En algún momento me di cuenta de que si todo el mundo tenía SELinux habilitado… Empecé a activar SELinux para ver dónde estaban los problemas y la mayor parte del asunto fue razonablemente fácil de arreglar. SELinux todavía se nota bajo ciertas cargas pero es mucho mejor de lo que era y no me estoy llevando los créditos por ello. Me estoy llevando los créditos de presionar a ciertas personas involucradas para que se fijen más en en el rendimiento porque el rendimiento importa incluso cuando la seguridad importa. Uno de los mayores problemas que tuve con SELinux, no solo con SELinux sino con la seguridad en general, es que la gente me pide constantemente que marque los fallos de seguridad en el registro de los cambios y es una de esas cosas que me echan para atrás porque una de las primeras personas que leen los registros de cambios son los hackers de sombrero negro y marcar algo como fallo de seguridad ayuda a esa clase de gente. Me pongo muy nervioso haciendo eso porque “¡ey! esto soluciona un fallo de seguridad”. No es tan difícil averiguar cuál es el fallo de seguridad. Conscientemente hago cosas que odia la gente de seguridad y piensan que soy un flojo y lo dejan muy claro no dándole importancia. La otra razón por la que no hago gran cosa es que la mayoría de los fallos pueden… no la mayoría, pero muchos fallos pueden ser espantosos sin que te des ni cuenta. Hubo un muy buen informe del proyecto Zero Bug. Leí uno la semana pasada donde había un desbordamiento en ‘glibc’ de un solo byte de la pila y el desbordamiento era sólo un byte cero. Era un error con una cadena. Vaya, eso nunca ocurrió ¿vale? Y el argumento fue básicamente que no era un fallo de seguridad porque no hay forma de tomar ventaja de él. A la gente le tomó un par de semanas y es una lectura muy interesante en cómo le das la vuelta a ese fallo ‘zero-byte’ en una forma de acceder como root. Y es interesante, no porque pruebe algo en particular exceptuando el hecho de que puedes convertir prácticamente cualquier fallo en un fallo de seguridad. Y esto, una vez más, si marco parches como parches de seguridad… cualquier arreglo puede ser un arreglo de seguridad. Así que soy raro para la gente de seguridad. Al mismo tiempo, ha sido interesante trabajar con ellos. Algunas de las personas más inteligentes y la mayoría… A veces me he dicho “¡vaya! este tío tiene una inteligencia de otro mundo”. He estado enfrente de gente que ha estado en el lado equivocado en el debate de seguridad. Otros han sido alucinantes. A veces he respetado más a los hackers de sombrero negro que a los de sombrero blanco, lo cual es triste, porque desde el punto de visto técnico parecen estar más en la parte superior. Creo que estamos haciendo un trabajo razonablemente bueno. Creo que es razonablemente bueno porque no creo que esto sea algo que se pueda resolver. Lo hacemos tan bien como podemos con la seguridad. Tenemos varias capas con SELinux o AppArmor. Alguna de esas es la capa que necesitamos para estar prevenidos. Y la mayoría de las capas se proporcionan con el kernel. Las capas para los usuarios también tienen que funcionar. Quizás no haya respondido a la pregunta original pero la pregunta no tenía unos límites fijos.

Muchas gracias.