lunes, 18 de febrero de 2013

2012: un año BSD en retrospectiva



Este artículo salió la semana pasada en Osnews y como habla de la familia ni siquiera lo pensé. Además es cortito así que en lo que sale la siguiente entrega de La Guía ahí les va. Trata generalidades, pero hay demasiado Linux ahí afuera, así que la defensa es válida y finalmente "que otra cosa puede escribir el hombre que no sea introducción ...". Pues eso, feliz lunes y provecho   


2012: un año de BSD en retrospectiva

BSD (Berkeley Software Distribution) fue un sistema operativo de investigación basado en el código original del Unix de AT&T, desarrollado por la Universidad de Berkeley, California. Ha sido de código abierto desde el principio, y después de que la universidad perdió el interés en su posterior desarrollo, se iniciaron varios proyectos comunitarios (los primeros fueron NetBSD y FreeBSD a principios de los noventa) para continuar con el desarrollo de BSD. De todos modos, Linux nació aproximadamente en la misma época, pero una demanda pendiente sobre las infracciones de derechos de autor impidió que los proyectos BSD tuvieran tanto éxito como Linux (aunque se puede discutir sobre las razones exactas).
Esto llevó a Linux a tener gran repercusión mediática, mientras que los proyectos BSD - aunque ofreciendo innovaciones frescas y siendo activamente desarrollado - a excepción de los nuevos lanzamientos rara vez llegan a la prensa.

Comunidad
Como ya se ha cubierto en OSNews hubo un debate sobre el aumento de incompatibilidades de herramientas de terceros con BSD. Esto siempre ha sido un problema, especialmente para todos excepto FreeBSD, que tiene algo de cobertura de los fabricantes de hardware, ya que se utiliza a menudo en servidores. Aunque el debate inició en una lista de correo de OpenBSD, los desarrolladores se sienten frustrados por todas partes. Pero para entender las razones de la preocupación, es importante comprender las diferentes filosofías de los desarrolladores de BSD y Linux. Los chicos de BSD son gente conservadora, y así tiene que ser: cada decisión que tomen inmediatamente influirá en todo el sistema operativo, ya que la parte de userland en BSD es desarrollada en su conjunto por las mismas personas y equipos. Por lo tanto, tienden a hablar más de la parte de las decisiones de cualquier diseño técnico.

Con Linux, ud no tiene este problema. El mundo de GNU/Linux se compone de muchos proyectos de software independientes y distribuciones que los empaquetan. Un distribuidor puede decidir no adoptar una versión especial de una herramienta, y permanecer con la versión vieja con el fin de preservar la compatibilidad.
Por lo tanto el principal problema en este caso es no sólo que existan incompatibilidades - es una negativa técnica en general de varias implementaciones, pero al mismo tiempo se ven obligados a implementar cosas en aras de la compatibilidad con el resto del mundo Open Source (y especialmente con los entornos de escritorio).

A modo de ejemplo, simplemente navegue al azar en cualquier foro, lista de correo o chat BSD, y busque discusiones sobre systemd. Probablemente encuentre las peores discusiones al respecto, mientras que el mundo de Linux en la mayoría de los casos lo aceptan sin mayores problemas.

DragonFlyBSD

DragonFlyBSD es un fork (en ocasiones empleo el término bifurcación, en otras no, no me gusta como suena ndt) de FreeBSD después de que el desarrollador principal de DragonFlyBSD, que era un desarrollador de FreeBSD en ese momento, no le gustaron las decisiones técnicas adoptadas en el proyecto y decidió fundar el suyo propio.
En 2012, DragonFlyBSD lanzó dos nuevas versiones: la versión 3.0 el 22 de febrero, y la 3.2 el 2 de noviembre.
El trabajo en curso para mejorar el soporte para  SMP y clústeres dio lugar comparativas excepcionalmente buenas sobre el rendimiento de PostgreSQL, muy por encima de Linux, pero también hubo varios cambios importantes:
  • Cuentas VFS / vquota - DragonFlyBSD introdujo un subsistema de cuotas en su capa VFS (Virtual File System), que es el subsistema utilizado para acceder a los módulos del sistema de archivos reales. Por lo tanto, son capaces de establecer cuotas en cualquier sistema de archivos, sin importar si el sistema de archivos lo soporta o no - pero con la implementación actual, dichas cuotas se almacenan solamente hasta que la máquina se apaga.
  • Soporte para TRIM - DragonFlyBSD ahora es compatible con el comando TRIM para mejorar la comunicación del sistema operativo con sus unidades de estado sólido.
  • Importación USB4BSDLa pila USB4BSD USB originalmente escrita para FreeBSD fue importada a DragonFly, lo que permite un mantenimiento más fácil y una amplia gama de drivers, incluyendo soporte para xHCI (USB 3.0).
  • TrueCrypt / tcplay - TrueCrypt, una herramienta de cifrado de disco, a pesar de ser de código cerrado, ganó una amplia distribución entre los equipos debido a su facilidad de uso y compatibilidad entre plataformas. Los desarrolladores DragonFlyBSD decidieron escribir una implementación compatible de código abierto. Esta aplicación ha sido ya portada a Linux e importada en algunas distribuciones, Fedora por ejemplo.

Cuando se trata de sistemas de ficheros, DragonFlyBSD es famoso por su sistema de ficheros HAMMER, que, informalmente hablando, es algo así como ZFS, pero con la capa mas potente de VFS de DragonFlyBSD. En febrero de 2012, con las conclusiones y experiencias adquiridas a partir de HAMMER,  inició el desarrollo de HAMMER2.

Mientras que DragonFlyBSD utiliza actualmente pkgsrc, el sistema de paquetes utilizado principalmente por NetBSD (pero es multiplataforma), hay intenciones de introducir un nuevo sistema. Se llama dports, y proporciona paquetes binarios por sobre el sistema de ports de FreeBSD. A pesar de que está en etapa experimental por ahora, el objetivo final es convertir los paquetes binarios y la nueva herramienta pkg de FreeBSD el sistema por defecto para las versiones siguientes. Los usuarios no se verán obligados a compilar paquetes nunca más.

FreeBSD / PC-BSD

FreeBSD es, de lejos, el BSD más activo en términos brutos, tiene las mayores bases de usuario y desarrolladores (aproximadamente el 80% de toda la comunidad BSD). En 2012, se liberó una versión menor de FreeBSD 8 (8.3-RELEASE en abril), así como una versión mayor (9.0-RELEASE en enero) y su primera versión menor (9.1-RELEASE en diciembre).


Con 9.0-RELEASE, vino una larga lista de cambios:
  • HAST - HAST, el almacenamiento de alta disponibilidad es una manera fácil de duplicar dispositivos de bloque a través de la red y crear soluciones de alta disponibilidad con ellos. En esencia, se trata de un RAID con la sincronización orientada a redes.
  • Capsicum - El marco de capacidades Capsicum ha sido añadido a FreeBSD pero aun lleva etiqueta de "experimental". Esto permite a las aplicaciones utilizar capacidades de sintonía fina (de nuevo el asunto de los términos traducidos, hablamos del fine-tuned capabilities ndt). Existe un desarrollador dedicado para Capsicum, siendo financiado por Google (que está aparentemente interesado ​​en utilizarlo para Chrome).
  • Softupdates journaling - FFS ahora soporta softupdates journaling, lo que le permite utilizar softupdates junto con journaling, que han sido dos tecnologías competidoras hasta ahora.
  • bsdinstall - El nuevo bsdinstall(8) sustituye a la antigua instalación que ya está un poco oxidada, y no soporta muchas de las características introducidas en FreeBSD en los últimos años. bsdinstall proporciona una mayor funcionalidad y es más extensible siendo que no es mas que un puñado de scripts sh con dialog(1).
  • NFSv4 - FreeBSD 9.0 soporta la cuarta versión del sistema de archivos de red NFS. A pesar de que fue especificado en el 2000 (y de nuevo en 2003), sólo había pocas implementaciones hasta ahora.
  • Playstation 3 - FreeBSD ahora soporta oficialmente la consola de juegos Playstation 3. Podría ser un poco tarde, pero la Playstation 3 ha sido útil para varias aplicaciones de procesamiento debido a su procesador y su bajo precio.
  • RACCT - Se ha agregado un nuevo marco de contabilidad de recursos (RACCT): rctl(8) ahora soporta la limitación de recursos en función de jail, usuario, proceso o clase de inicio de sesión, aunque aun no por por ciento de tiempo de CPU.
  • gpart - Las herramientas antiguas para etiquetado de discos  (fdisk, *label) se han eliminado en favor de gpart(8), aunque se mantendrán en la base por razones de compatibilidad. La nueva herramienta se debe utilizar principalmente con particiones GPT, los tipos antiguos (MBR y disklabel) no cuentan más con respaldo.
  • Clang / LLVM - En FreeBSD 9.0, el nuevo compilador se ha importado. No se utiliza para compilar la versión 9,0, pero en noviembre de 2012, todas las plataformas pasaron a utilizar Clang por defecto, es decir, FreeBSD 10.0 compilará por defecto con Clang en lugar de GCC.
Con la release 9.1 se produjo un cambio que indica una evolución interesante: se incorporaron los cambios a ZFS generados en el proyecto Illumos. Tal vez hay esperanza para un desarrollo de ZFS independiente de Oracle?
Como hacen muchos proyectos de software libre, FreeBSD hizo una campaña de recaudación de fondos a finales de año, esta vez logrando un resultado récord: Fueron recolectados cerca de 750 mil dólares,lo  que es una muestra del tamaño comercial de FreeBSD en comparación con los otros BSD.

El dinero se emplea en el mantenimiento de la infraestructura y la financiación de nuevos proyectos, algunos de los cuales prometen resultados interesantes:

  • Plataforma ARM estándar - Se definió una plataforma ARM estándar, el Genesi Efika MX SmartBook y SmartTop (nunca oído hablar de él?) con un ARM Cortex A8 SoC, y los desarrolladores tiene dispositivos gratis para iniciar el desarrollo
  • NAND flash - El objetivo de este proyecto es mejorar la compatibilidad con los dispositivos que trabajan con pequeñas memorias flash NAND, por ejemplo, un sistema de ficheros, se desarrollarán un controlador marco para drivers y chips de memoria  y otras herramientas.
  • growfs - La herramienta para agrandamiento de sistemas de archivos será modificada para que sea capaz de crecer sistemas de archivos en línea (montados). Hasta ahora, growfs sólo es capaz de manejar sistemas de archivos fuera de línea, es decir, sistemas de ficheros sin montar.
Para FreeBSD, hubo dos acontecimientos desagradables en 2012: en primer lugar, los avisos de seguridad en la mejor fecha posible, 23 de diciembre (el día antes de las vacaciones de Navidad, cuando la mayoría de los administradores ya se había ido). Y en segundo lugar, hubo otro gran problema de seguridad este año: un fallo de seguridad, publicado el 17 de noviembre. Los administradores pueden haber notado que durante casi una semana, no hubo actualizaciones portsnap en el árbol de ports. La razón fue que una semana antes, el equipo de seguridad encontró una clave SSH de un desarrollador comprometida desde el 19 de septiembre, con acceso a dos máquinas de desarrollo de ports.

Eventualmente, el equipo de seguridad anunció que no encontró nada relevante para la seguridad, pero todavía no recomiendan confiar en instalaciones de paquetes binarios realizadas en ese periodo de tiempo. En diciembre, todo estaba nuevamente en línea.

NetBSD

NetBSD es el más antiguo derivado BSD todavía en desarrollo. Hace unos años, sus desarrolladores se enfocaban principalmente en el soporte a muchas plataformas y en proporcionar una buena abstracción para lograrlo. Hoy en día, el enfoque se ha desplazado ligeramente a proporcionar un sistema operativo limpio. Aquí, limpio significa que el código debe estar limpio, y las nuevas características deben introducirse cuidadosamente, si que suceda que deba ser eliminado de nuevo después de algunas versiones o dar problemas de compatibilidades.

Tres años después de la última gran versión de NetBSD (5.0), NetBSD 6.0 fue finalmente liberado el 17 de octubre. La rama 5 fue actualizada a 5.2, el 3 de diciembre y se abandonó el soporte a NetBSD 4.0 cinco años después de su lanzamiento inicial en 2007.

Casi tres años después de la última release, hay un montón de cambios para 6.0:

  • apropos - Durante el Google Summer of Code (GSoC) 2011, hubo un proyecto para volver a escribir apropos(1), para no sólo tener una búsqueda tonta de texto completo, sino una relación ponderada de búsqueda. Este apropos se incluye ahora en NetBSD 6.0.
  • posix_spawn - POSIX finalmente decidió especificar una interfaz para generar procesos nuevos, llamada posix_spawn. Esto fue implementado en un proyecto de GSoC, y ahora es parte de NetBSD.
  • netpgp - Debido a las muchas dependencias que tiene GnuPG, y al hecho de que se publica bajo licencia GPL (recuerde: a la gente de BSD no me gusta), hubo una nueva versión de PGP/GPG, llamada netpgp. La aplicación no es aún tan rica en características como gpg, pero está siendo desarrollada y ya es capaz de hacer el cifrado básico y la firma.
  • v7fs, CHFS - El antiguo sistema de archivos de Unix séptima edición ha sido reescrito. La razón detrás de esto es tener un sistema de ficheros alternativo a FAT muy pequeño, que sea capaz de leer discos viejos de PDP-11. Por otro lado, hay un nuevo sistema de ficheros llamado CHFS que está destinado a ser utilizado en pequeños dispositivos flash.
  • npf - En NetBSD 6.0, se ha introducido una solución nueva de firewall denominada npf. Fue escrita como un sustituto para superar los problemas con las dos que ya se habían implementado (IPF y pf).
Recientemente, Antti Kantee (pooka@) proporcionó dos aplicaciones más agradables de su concepto "rump anykernel": Corrió módulos del kernel de NetBSD en Linux, e incluso en un navegador, utilizando JavaScript.
En julio, se produjo un interesante post en una lista de correo de un desarrollador de Google. Trataba sobre a la biblioteca bionic C utilizada en dispositivos Android, que aparentemente utiliza muchas partes de varias fuentes. El objetivo de los desarrolladores era fusionar el código usado por Android de vuelta al código origen, obteniendo eventualmente una sola biblioteca de C, y no varias diferentes. Aunque el debate terminó sin un resultado (por lo menos sin un resultado público), todavía es bueno ver cuántos proyectos están realmente utilizando partes del código de NetBSD en algún sitio.

Este es también el caso para MINIX. El 7 de marzo, fue liberado MINIX 3.2.0. Dado que los desarrolladores de MINIX son principalmente investigadores que desean utilizar MINIX para la investigación, y no para el desarrollo de software, además de que su entorno de usuario es bastante antiguo, se decidió utilizar otro: NetBSD. Así, a partir de MINIX 3.2.0 en adelante, hay una gran parte del userland ordinario de  NetBSD, así como pkgsrc, el gestor de paquetes de NetBSD contenida en MINIX.

OpenBSD

OpenBSD es un fork de NetBSD a resultas de problemas personales entre el ahora principal desarrollador de OpenBSD y el resto del equipo de desarrollo en los años noventa. Hoy en día, OpenBSD es famoso por su enfoque en la seguridad y su radicalidad en no aceptar software de código cerrado, lo que lleva al desarrollo de herramientas comunes como OpenSSH.

Como todos los años, OpenBSD lanzó dos nuevas versiones (5.1 en mayo, 5,2 en noviembre) - el proyecto tiene un calendario fijo de liberaciones periódicas. Las releases de OpenBSD siempre tienen un lema y una canción de acompañamiento, a veces también con una historia detrás de él. 5,1 tuvo el lema genérico "Bug Busters", mientras la 5.2 tenía el lema "Aquarela Do Linux", en referencia a los problemas señalados por Marc Espie como se ha mencionado anteriormente (vea "Community").

Los cambios más importantes en el 2012 fueron los siguientes:

  • NAT64 - OpenBSD 5.1 introdujo NAT64 para su filtro de paquetes pf.
  • Libros - Inició la preventa de Absolute OpenBSD, 2 ª edición, un famoso libro sobre OpenBSD.
  • pthreads - Hasta entonces, pthreads en OpenBSD solo existía a nivel de usuario. Este año, se introdujeron rthreads, mapeando pthreads de una utilidad userland directamente a los procesos del kernel, mejorando la capacidad de SMP y la velocidad, haciendo ahora un mejor uso de los equipos multinúcleo.
En junio de 2012, se bifurcó el proyecto Bitrig OpenBSD. Su filosofía, a diferencia de OpenBSD, es sobre todo la de ser menos conservador. Sus desarrolladores quiere eliminar el foco principal en la seguridad y el soporte a las plataformas antiguas, centrándose en:

  • Utilizar Clang como su compilador por defecto (OpenBSD usa GCC),
  • Proporcionar un mejor soporte a KVM (virtualización).
  • Proporcionar sistemas de archivos journaling portando WAPBL de NetBSD,
  • Soporte sólo para equipos x86 (i386, amd64). 
  • Mejorar el soporte a SMP de OpenBSD.
Nota:
Tenga en cuenta que yo mismo soy parte de la comunidad de FreeBSD y NetBSD, por lo que este informe podría estar sesgado hacia estos dos.
También excluyo todas las mejoras generales que incluye los sistemas operativos cada vez: mejoras de rendimiento, drivers adicionales, estabilidad mejorada etc.