Máxima tensión entre desarrolladores de Linux por el enfrentamiento C vs. Rust: Linus Torvalds ve un "tono casi religioso" en el debate

No es un mero debate técnico, como ya ha dicho el primer mantenedor del kernel dimitido por este asunto (un español, para más señas)

Tux C Rust Logo
Sin comentarios Facebook Twitter Flipboard E-mail

Uno de los debates más candentes ahora mismo en el mundo del desarrollo de software gira en torno a los dos lenguajes que permiten dar forma al kernel de Linux: el venerable C y el prometedor Rust. Por supuesto, el enfrentamiento entre ambos no ha surgido en el seno del famoso proyecto de software libre... pero está empezando a pasarle factura a este último.

Por ello, Linus Torvalds, creador de Linux y responsable del mantenimiento de su kernel, quiso abordar el asunto hace unos días y definió la creciente tensión entre los desarrolladores de C y Rust como una controversia "casi con tonos de guerra religiosa".

Pero, ¿por qué se ha planteado realmente en este debate? ¿Es solo una cuestión técnica, o hay factores culturales más profundos que alimentan esta disputa?

Un vistazo a…
La carrera de programador en 2017 y en el futuro (con Javier Santana)

El origen del conflicto

La inclusión de Rust como lenguaje de desarrollo en el kernel de Linux fue una iniciativa que se puso en marcha hace más de tres años, impulsada por los apoyos con que contaba este nuevo lenguaje a causa de sus ventajas en términos de seguridad de memoria. Sin embargo, lo que comenzó como un debate técnico rápidamente se transformó en un choque cultural.

Torvalds ha comparado este conflicto con las antiguas "guerras de editores" entre Vi y Emacs, donde las preferencias por herramientas se convirtieron en cuestiones casi de 'nacionalismo de software' (mis palabras, no las de Linus) para los desarrolladores.

"Creo que realmente lo disfruto. Disfruto de las discusiones. Creo que una de las cosas buenas de Rust ha sido cómo ha animado algunas de las discusiones, y algunas de las discusiones se vuelvan desagradables... creo que es una demostración cuánto le importa el tema a la gente. Por otra parte, no estoy muy seguro de por qué Rust ha sido un asunto tan polémico [...] por alguna razón, toda la discusión de Rust versus C ha tomado connotaciones casi religiosas en ciertas áreas".

El conflicto reciente estalló hace unos días, cuando uno de los mantenedores del kernel abandonó el proyecto tras varias discusiones relacionadas con la adaptación de un complemento de C para Rust. El español Miguel Ojeda era el máximo responsable de la integración de Rust en Linux, y su dimisión no hace sino resaltar el impacto de este debate. Se despedía con un e-mail que venía a decir cosas como esta:

"Me retiro del proyecto. Después de casi cuatro años, me falta la energía y el entusiasmo que tenía antes para responder a ciertas tonterías no-técnicas, así que es mejor dejarlo en manos de quienes aún lo tienen".
"Al equipo de Rust para Linux: gracias, sois geniales. Fue un placer trabajar con todos vosotros; los momentos que pasamos discutiendo cuestiones técnicas, buscando formas de solucionar problemas de solidez, etc., fueron algo que siempre disfruté y esperé con ansias. Me considero afortunado de haber colaborado con un grupo tan talentoso y amistoso".
"Deseo mucho éxito al proyecto. Creo sinceramente que el futuro de los núcleos está en los lenguajes que protegen la memoria. No soy ningún visionario, pero si Linux no lo internaliza, me temo que algún otro núcleo le hará lo mismo que le hizo a Unix".

Es decir, lo barrerá del mapa convirtiéndose en su heredero. Ya hay gente intentándolo.

Las razones de ambos bandos

A nivel técnico, las diferencias entre C y Rust son sustanciales. C, desarrollado en la década de 1970, es un lenguaje que ha sido fundamental para el desarrollo de sistemas operativos debido a su control total sobre los recursos de la máquina. No obstante, esa simplicidad también hace que se lo considere propenso a errores peligrosos como desbordamientos de memoria y fallos de seguridad que pueden ser explotados.

C sigue siendo el lenguaje predominante, y su simplicidad, combinada con décadas de uso y optimización, lo mantienen como la opción preferida para muchos

Por otro lado, Rust ha sido diseñado desde sus cimientos para prevenir estos problemas a través de su modelo de seguridad de memoria, lo que lo convierte en un fuerte candidato para sustituir a C en algunas áreas críticas del kernel de Linux. 

Sin embargo, Rust también ofrece una barrera de entrada más alta: es más difícil de aprender y dominar en comparación con C, lo que ha generado resistencia entre los desarrolladores que llevan décadas trabajando con C. Muchos desarrolladores de este lenguaje sienten que su territorio está siendo invadido por un lenguaje que, aunque más seguro, aún no ha demostrado completamente su capacidad para reemplazar a C en sistemas operativos de misión crítica.

A pesar de las claras ventajas de Rust en cuanto a seguridad, Torvalds ha dejado claro que esto no son suficientes para convertirlo automáticamente en el lenguaje dominante dentro del desarrollo del kernel. Sin embargo, y a pesar de las resistencias, Torvalds sigue siendo optimista en lo que respecta a la integración de Rust en el kernel de Linux, y afirma que incluso si la experimentación con Rust no tuviera éxito, es una oportunidad de aprendizaje valiosa.

Vía | The New Stack

Imagen | Marcos Merino mediante IA

En Genbeta | Hay quien opina que C ya no es un lenguaje de programación (otros se conforman con decir que no es un lenguaje de bajo nivel)

Inicio