683 - ¿Ubuntu rompe con GNU?

683 - ¿Ubuntu rompe con GNU?

¿Que son las #coreutils?¿Influye GPL o MIT? Como mejorar #ubuntu y otras distros #linux utilizando herramientas y software implementado en #rust

1:25
-3:15

Como ya te he contado en alguna que otra ocasión si bien soy un consumidor impulsivo de podcast, lo de los vídeos no es tanto así, mas bien todo lo contrario. Sin embargo, si suelo ver los titulares de los canales que sigo, aunque no los consuma, simplemente por aquello de estar informado, de estar al tanto. Ha sido así como me he encontrado con un vídeo de Linuxero Errante, en el que habla de la posible marcha de Ubuntu de GNU/Linux. Como te puedes imaginar, me ha llamado la atención y he decidido investigar un poco más. ¿A que se refiere con eso de que Ubuntu se marcha de GNU/Linux?. Pues esto es precisamente de lo que te quiero hablar en este episodio. No va mucho mas allá de cambiar parte de las herramientas que se utilizan en Ubuntu y en otras distribuciones por otras. Pero esto no es nada nuevo. Ya te mencioné en el episodio 591 cuando te hablé de Alpine, la mejor distribución Linux, que no utiliza las core utils de GNU, con lo que realmente no estamos hablando de una distribución GNU/Linux. Pues en este caso, Ubuntu, también quiere reemplazar las core utils de GNU por otras escritas en Rust. Esto, es algo que yo vengo haciendo durante los últimos años, trayendo distintas herramientas implementadas en Rust, en su gran mayoría, que reemplazan o otras existentes, ya sea por que aportan nuevas funcionalidades como por que las mejoran.

¿Ubuntu rompe con GNU?

¿De que estamos hablando?

En el vídeo que te mencionaba en la introducción, Juan, Linuxero Errante, habla sobre que Ubuntu está reemplazando parte de las herramientas de GNU/Linux por otras escritas en Rust. Hasta donde he llegado, no encontré enlaces a los artículos o vídeos originales de los que parte para su vídeo, pero si que he localizado los artículos de Jon Seager, Vicepresidente de Ingeniería de Canonical, que es el que ha dado pie a todo esto.

Sin embargo quiero hacer algunas matizaciones al vídeo de Juan, con su permiso, por supuesto. No se trata de pasar todo lo implementado en C a Rust, ni mucho menos, sino que se trata de ir sustituyendo algunas herramientas, en concreto las coreutils, por otras escritas en Rust. Tampoco hay ninguna relación entre C y la licencia GPL y Rust y la licencia MIT. Hay herramientas en C que tienen licencia GPL como puede tener otra licencia, y lo mismo pasa con Rust. Es decir, que el lenguaje de programación no tiene nada que ver con la licencia que se le puede aplicar a un programa. De hecho, distintas herramientas que utilizamos en nuestro día a día en Linux están implementadas en distintos lenguajes de programación y tienen diferentes licencias.

Por otro lado, está el tema de la licencia GPL frente a la MIT. Sobre esto hablé en el episodio 498 titulado, El software libre está muriendo, en el sentido que las licencias Copyleft, como la GPL, están perdiendo terreno frente a las licencias permisivas, como la MIT. Pero no es algo que esté ocurriendo en Ubuntu, sino que es algo que está ocurriendo en general en el mundo del software libre.

En particular, me ha llamado la atención la frase de Juan que decía que algo como,

La licencia MIT permite al desarrollador hacer lo que quiera con su código.

Y eso es precisamente lo que yo entiendo por libertad. Por supuesto, que esto lleva implicito que el desarrollador puede en un momento cerrar su software… es que es su software. En muchas ocasiones me encuentro con la frase de si dieran solo una parte de sus beneficios al proyecto….

Recientemente leí un artículo en Genbeta, que habla de forma indirecta sobre esto. Se menciona una entrevista donde Greg Kroah-Hartman habla sobre el desarrollo del kernal. Donde viene a decir que,

Los desarrolladores contribuyen a Linux de manera «egoísta», resolviendo sus propios problemas. Pero resulta que muchos desarrolladores tienen los mismos problemas, por lo que cada contribución hace que Linux sea una mejor opción para otros desarrolladores. Los mantenedores del kernel solo aceptan contribuciones que beneficien a todo el proyecto. Por ejemplo, los fabricantes de dispositivos embebidos ayudaron a hacer el kernel de Linux más eficiente, lo que luego permitió que Linux se convirtiera en la mejor opción para sistemas operativos móviles como Android.

A parte de esto también me llamó la atención lo evidente, y es que Linux es el sistema operativo mas extendido a nivle mundial, funcionando en mas de 4000 millones de dispositivos Android, y en muchos de los iPhone, porque es el firmware de los módems %G de Qualcomm que utilizan estos chismes. Por supuesto, que es el sistema mas extendido para servidores, susupercomputadoras, dispositivos embebidos y dispositivos IoT.

Nos hemos apoderado del mundo sin que nadie se de cuenta

¿De donde viene todo esto?

Ubuntu en los últimos 20 años

Todo esto viene de un par de artículos de Jon Seager, Vicepresidente de Ingeniería de Canonical. En el primero de ellos, Engineering Ubuntu For The Next 20 Years, hace una reflexión sobre los últimos 20 años de Ubuntu, y lo que está cambiando todo. En el segundo de ellos, Carefully But Purposefully Oxidising Ubuntu, profundiza en uno de los puntos tratados, la modernización.

Tal y como indica el propio Jon, en los últimos 20 años, Ubuntu, se ha convertido en el sinónimo de Linux, para muchas personas. Y esto es una realidad difícilmente rebatible. Pero también es cierto que el mundo ha cambiado mucho en estos 20 años, y el software también. Lo cierto es que en los últimos 10 años, tal y como menciona Jon, la industria del software a cambido drásticamente. El auge de las operaciones en la nube ha impulsado una mayor automatización en prueba, lanzamiento y monitoreo.

En el primer artículo trata de cuatro puntos, reflexionando sobre como dirigir el desarrollo de Ubuntu, centrando la atención en la comunicación, automatización, procesos y la modernización.

Es precisamente el último punto, el relativo a la modernización el que nos interesa. Y estoy totalmente de acuerdo con lo que menciona,

En los últimos 20 años, Ubuntu ha sabido adaptarse y prosperar en un mundo informático en constante evolución. Ejemplos de cambios clave en Linux incluyen:

  • La adopción de systemd.
  • La popularización de lenguajes de programación con seguridad de memoria como Rust.
  • El auge de la virtualización y los contenedores.
  • La inclusión de Rust en el kernel de Linux.

Modernizando Ubuntu

El segundo de los artículos profundiza en concreto en la modernización, y en el objetivo de adoptar implementaciones modernas como predeterminadas. En concreto la meta inmediata es, hacer que la implementación de coreutils de uutils sea la predeterminada en Ubuntu 25.10 y, posteriormente, en nuestra próxima versión de soporte a largo plazo (LTS), Ubuntu 26.04 LTS, si las condiciones son adecuadas.

Pero, ¿por qué?. El rendimiento es una de las razones más citadas en los proyectos de «Reescríbelo en Rust». Aunque el rendimiento es una prioridad para Jon, no es la razón principal detrás de este cambio. Estas utilidades son el corazón de la distribución, y lo más atractivo de los migraciones a Rust es la mayor seguridad y resiliencia que proporcionan.

Pero no solo esto, hay que tener en cuenta que Ubuntu mueve millones, por lo que es fundamental asegurar que el software que se ofrece sea el mas seguro y confiable posible.

Llegados a este punto, podrías pensarte en aquella máxima de la informática de si algo funciona no lo toques. Ahora piensa en todo lo que ha evolucionado en los últimos 20 años, y piensa en lo que puede evolucionar en los próximos 20 años. Piensa en lo que se puede hacer ahora, y que significa anclarse en el pasado. No es que lo anterior sea malo, lo anterior ha sido fundamental para llegar donde estamos ahora, pero ¿nos está anclando?. El lenguage de programación Cobol ¿es malo? No, pero que ha sucedido con el, ¿se ha quedado anclado en el pasado?.

Ventajas de Oxidar Ubuntu

Algunas de las ventajas de migrar determinadas herramientas son las isguientes,

  • Mayor seguridad. Rust evita errores comunes de gestión de memoria, como desbordamientos de búfer o uso de memoria después de liberarla (use-after-free). Reduce vulnerabilidades de seguridad, algo crítico en herramientas del sistema.
  • Estabilidad y confiabilidad. Rust impone estrictas reglas de seguridad en el código, lo que puede reducir fallos en la ejecución de comandos esenciales.
  • Mejor rendimiento en algunos casos. Aunque GNU Coreutils está muy optimizado, en ciertos escenarios las versiones en Rust pueden ofrecer mejoras en velocidad y consumo de recursos. Un ejemplo claro es fcp, una alternativa a cp implementado en Rust, donde puedes comprobar la velocidad de fcp frente a cp.
  • Modularidad y mantenibilidad. Rust facilita la creación de código más modular y legible, lo que puede acelerar la evolución de estas herramientas.
  • Compatibilidad con sistemas modernos. Algunas distribuciones y proyectos ya han comenzado a adoptar Rust (ej. systemd, Redox OS), lo que lo convierte en una tendencia creciente en software de bajo nivel.

Inconvenientes

Por supuesto, no todo son ventajas, también hay inconvenientes,

  • Riesgo de incompatibilidades. uutils no es una réplica exacta de GNU Coreutils y puede haber diferencias sutiles en su comportamiento. Algunos scripts y programas que dependen de comandos específicos podrían romperse.
  • Sobrecarga en el ecosistema de paquetes. Rust tiene tiempos de compilación más largos que C, lo que podría afectar la construcción de paquetes en Ubuntu. Introducir Rust en herramientas críticas puede traer nuevas dependencias y aumentar la complejidad del sistema base.
  • Consumo de recursos. Aunque Rust es eficiente, en algunos casos las versiones en C pueden seguir siendo más rápidas y consumir menos memoria. La compilación de Rust requiere más recursos que C, lo que podría impactar en dispositivos con hardware limitado.
  • Aprendizaje y adaptación. Desarrolladores y mantenedores de Ubuntu tendrán que familiarizarse con Rust, lo que puede requerir tiempo y esfuerzo. Usuarios avanzados que dependen de GNU Coreutils para scripts podrían necesitar adaptar su flujo de trabajo.
  • Resistencia al cambio. Muchos usuarios y administradores de sistemas están acostumbrados a Coreutils en C y pueden ver este cambio como innecesario o problemático. Cambios en herramientas fundamentales siempre generan cierta incertidumbre y posibles problemas de adopción.

Probando uutils

Instalar `uutils-coreutils

Este paquete ofrece una reimplementación de las herramientas tradicionales de GNU Coreutils en Rust.

sudo pacman -Syu uutils-coreutils

Verificar la instalación

Después de instalarlo, puedes probar que los binarios están disponibles:

ls /usr/bin | grep uu

Esto mostrará comandos como uu-ls, uu-cp, etc.

Para ejecutar una versión en Rust en lugar de la estándar:

uu-ls
uu-cp archivo destino

Usar uutils-coreutils en lugar de GNU Coreutils

Para reemplazar temporalmente los comandos del sistema por las versiones en Rust:

export PATH="/usr/lib/uutils-coreutils:$PATH"

Esto hará que, por ejemplo, ls ejecute la versión en Rust en vez de la de GNU Coreutils.

Para hacerlo permanente, añade esa línea a tu .bashrc o .zshrc.

Si prefieres probarlo sin modificar el PATH, puedes hacer alias:

alias ls='uu-ls'
alias cp='uu-cp'

Comparar rendimiento y compatibilidad

Puedes comparar el rendimiento con time:

time ls
time uu-ls

Conclusión

Desde mi punto de vista, es una decisión acertada. No se trata de cambiar por cambiar, sino de modernizar, de adaptarse a los tiempos que corren. No se trata de cambiar todo, sino de cambiar aquello que aporte valor.

Como puedes ver, tras la reflexión de Jon, este cambio, tiene todo el sentido del mundo, hay que tener en cuenta, donde estamos, para poder aprovechar todo lo que tenemos ahora mismo, y sobre todo, dar un vistazo a lo que viene para poder sacar el máximo partido.

Llegados a este punto, lo que mas tardará es que esto llegue al entorno empresarial y servidores, por lo que a estabilidad representa, pero igualmente tengo claro que llegará.


Más información,

3 comentarios en “¿Ubuntu rompe con GNU?

  1. R.
    R. Stallman hace 1 día

    La libertad de joder la libertad, no es libertad. Las licencias estilo MIT son un cáncer para el desarrollo del software libre, precisamente porque destruyen la libertad (como mucho se podrán calificar de «liberales») y por tanto están al servicio de los que pretenden destruir las comunidades humanas y esclavizarnos a todos y todas. La colaboración desinteresada de las comunidades de desarrolladores no debe ser entregada sin más a las grandes corporaciones, que son las más interesadas en apoyar este tipo de licencias «permisivas».

  2. R.
    R. Stallman hace 1 día

    Y si el hombre es «conservador por naturaleza» abandonar las coreutils va claramente en contra de la naturaleza humana. Así que no: yo no voy a seguir los pasos torcidos de ubuntu, que cada día es más parecido a un Windows sin metabolitos.

  3. NA
    nacho hace 16 horas

    GPl es tan permisiva que te permite vender o cerrar el código cuando quieras. Eso sí, lo que no te permite es apropiarte de contribuciones ajenas y licenciar doblemente tu software para engañar a la comunidad pensando que colaboran con un proyecto de software libre cuando no es así. MIT es el caballo de Troya de las corporaciones para acabar con el movimiento de software libre, y Rust es la punta de lanza. Nadie ha pedido ese software que Ubuntu abraza, y nadie que no sea una empresa con ánimo de lucro lo va a incorporar. Asco de distribución que empezó siendo un clon de Debían que quería facilitar las cosas…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *