Explaining BSD

Greg Lehey

En el mundo del código abierto la palabra ``Linux'' suele ser utilizada como sinónimo de ``Sistema Operativo'' pero no es el único sistema operativo libre UNIX®. En Abril de 1.999 el Internet Operating System Counter reflejaba que el 31'3% de los sistemas que ofrecían algún servicio en Internet usaban Linux y el 14'6% usaban BSD UNIX®. Alguna de las empresas más grandes de Internet, como por ejemplo Yahoo!, usan BSD. El servidor de FTP que más tráfico soporta del mundo, ftp.cdrom.com, transfiere 1'4 TB diariamente usando BSD. Es fácil suponer que no se trata de un nicho de mercado: BSD es un secreto bien guardado.

¿Así que cuál es el secreto? ¿Por qué BSD no es más conocido? Éste artículo trata sobre esa y otras cuestiones.

A lo largo de éste artículo serán destacadas de éste modo.


1 ¿Qué es BSD?

BSD son las siglas de ``Berkeley Software Distribution''. Así se llamó a las distribuciones de código fuente que se hicieron en la Universidad de Berkeley en California y que en origen eran extensiones del sistema operativo UNIX® de AT&T Research. Varios proyectos de sistemas operativos de código abierto tienen su origen en una distribución de éste código conocida como 4.4BSD-Lite. Añaden además un buen número de paquetes de otros proyectos de Código Abierto, incluyendo de forma destacada al proyecto GNU. El sistema operativo completo incluye:


2 Entonces ¿es un UNIX verdadero?

Los sistemas operativos BSD no son clones sino derivados de código abierto del sistema operativo de AT&T Research, el cual es a su vez ancestro del moderno UNIX System V. Ésto puede sorprenderle. ¿Cómo puede haber sucedido esto si AT&T jamás ha liberado su código?

Cierto es que AT&T UNIX no es código abierto y que en un sentido estricto de copyright BSD no es en absoluto UNIX, pero por otra parte AT&T ha incluído fuentes de otros proyectos, teniendo como caso notable el Computer Sciences Research Group de la Universidad de Berkeley, California. En 1.976 el CSRG comienza a distribuir su software en cintas, dándoles la denominación Berkeley Software Distribution, o BSD.

Las primeras distribuciones BSD consistían principalmente en aplicaciones de entorno de usuario (``userland'') pero la situación cambió de modo drástico cuando el CSRG firmó un contrato con la Agencia de Investigación de Proyectos Avanzados (DARPA) para mejorar los protocolos de comunicación en su red ARPANET. A los nuevos protocolos se les dió el nombre de Internet Protocols, y más adelante TCP/IP, que más tarde se habrían de covertir en los protocolos más importantes. La primera implementación ampliamente distribuída lo fué como parte de 4.2BSD, en 1.982.

Durante la década de los 80 comienzan a surgir compañías que ofrecían estaciones de trabajo. La mayoría optó por adquirir licencias de UNIX en lugar de desarrollar sistemas operativos ellos mismos. En particular Sun Microsystems adquirió una licencia de UNIX e implementó una versión de 4.2BSD, a la que llamaron SunOS. Cuando la propia AT&T fué autorizada para vender UNIX iniciaron una implementación un tanto rudimentaria llamada System III, seguida rápidamente por System V. El código base de System V no incluía capacidad de trabajo en redes, de manera que todas sus implementaciones habían de usar software de BSD, incluyendo TCP/IP, así como aplicaciones como la shell csh y el editor vi. En conjunto esas inclusiones fueron conocidas como las Berkeley Extensions.

Las cintas BSD contenían código fuente de AT&T y en consecuencia requerían una licencia de código UNIX. Hacia 1.990 al CSRG se le retiran los fondos y se enfrenta al cierre. Algunos de los miembros del grupo deciden distribuír el código BSD, que era Código Abierto, sin el código propiedad de AT&T. Finalmente ésto sucede con la Networking Tape 2, más conocida como Net/2. Net/2 no era un sistema operativo completo: faltaba aproximadamente un 20% del código del kernel. Uno de los miembros del CSRG, William F. Jolitz, escribió el código restante y lo distribuyó a comienzos de 1.992 como 386BSD. Al mismo tiempo otro grupo de antíguos miembros del CSRG fundaron una empresa llamada Berkeley Software Design Inc. y distribuyó una versión beta de un sistema operativo llamado BSD/386, que se basa en las mismas fuentes. El sistema operativo pasó a denominarse BSD/OS.

386BSD jamás llegó a ser un sistema operativo estable. En lugar de ello dos proyectos surgen de él en 1.993: NetBSD y FreeBSD. Ambos proyectos se forman gracias a la falta de paciencia que origina la espera de mejoras en 386BSD: el proyecto NetBSD comenzó a primeros de año y la primera versión de FreeBSD no estuvo lista hasta finales del mismo. En ese proceso el código base tomó caminos diferentes hasta tal punto que se hizo difícil de mezclar. Además los proyectos tienen objetivos diferentes, como veremos más adelante. En 1.996 otro proyecto, OpenBSD, se separa de NetBSD.


3 ¿Por qué BSD no se conoce mejor?

Existen diversas razones por las que BSD es relativamente desconocido:

  1. Los desarrolladores de BSD con frecuencia están más interesados en depurar su código que en promocionarlo.

  2. La mayor parte de la popularidad de Linux se debe a factores externos a los proyectos Linux, como la prensa y las compañías que ofrecen servicios relacionados con Linux. Hasta hace poco los BSD de fuente abierta carecían de tales abogados.

  3. Los desarrolladores de BSD suelen estar más experimentados que los de Linux y ponen menos de su parte a la hora de hacer el sistema fácil de usar. Los recién llegados suelen sentirse más cómodos con Linux.

  4. En 1.992 AT&T denunció a BSDI, el distribuidor de BSD/386, alegando que el producto contenía código propiedad de AT&T. El caso fué sobreseído en 1.994 pero la huella del litigio perdura. Aún en Marzo de 2.000 en un artículo publicado en la web se aseguraba que el caso había sido ``resuelto hace poco''.

    Un detalle que el proceso judicial aclaró fue el de la nomenclatura: en los 80 BSD era conocido como ``BSD UNIX ''. Tras la eliminación del último vestigio de código de AT&T, BSD perdió el derecho a llamarse UNIX. Es por esto que es posible encontrar títulos de libros referentes a ``the 4.3BSD UNIX operating system'' y ``the 4.4BSD operating system'' y ``the 4.4BSD operating system''.

  5. Existe la creencia de que los proyectos BSD están fragmentados y enfrentados entre sí. El Wall Street Journal habló de la ``balcanización '' de los proyectos BSD. Como en el caso del pleito, esa creencia se fundamenta en historia antígua.


4 Comparemos BSD y Linux

De manera que, ¿cuál es la diferencia entre, digamos, Debian Linux y FreeBSD? Para el usuario avanzado la diferencia es sorprendentemente pequeña: ambos son sistemas operativos tipo UNIX. Ambos son desarrollados por proyectos no comerciales (ésto, por supuesto, no es aplicable a la mayoría del resto de distribuciones de Linux). En el siguiente apartado tomaremos BSD como punto de partida y lo compararemos con Linux. La descripción se ajusta más a FreeBSD, que posée aproximadamente el 80% de los sistemas BSD instalados, pero las diferencias con NetBSD y OpenBSD son pequeñas.


4.1 ¿Quién posée BSD?

Ninguna persona o empresa posée BSD. Su creación y distribución es obra de una comunidad de voluntarios altamente cualificados y comprometidos a lo largo y ancho del mundo. Algunos de los componentes de BSD son proyectos de Código Abierto que cuentan con responsables ajenos al proyecto BSD.


4.2 ¿Cómo se desarrolla y actualiza BSD?

Los kernel BSD son desarrollados y actualizados siguiendo el modelo de desarrollo de Código Abierto. Cada proyecto mantiene un árbol de fuentes accesible públicamente mediante un ``Sistema Concurrente de Versiones'' (Concurrency Versions System, CVS), que contiene todos los ficheros fuente del proyecto, incluídos los de la documentación y otros ficheros relacionados. CVS permite a los usuarios ``hacer un check out'' (en otras palabras, extraer una copia) de los ficheros que componen la versión elegida del sistema.

Un gran número de desarrolladores de muy diversas partes del mundo contribuye con mejoras a BSD. Estan divididos en tres categorías:

  • Contributors son aquellos que escriben código o documentación. No se les permite ``hacer commit'' (es decir, añadir código) directamente al árbol de fuentes. Para que su código sea incluído en el sistema debe ser revisado y probado por un desarrollador registrado. Un/a committer.

  • Committers son desarrolladores que disponen de acceso de escritura en el árbol de fuentes. Para convertirse en committer es necesario demostrar habilidad en el área en la cual él o ella trabaja.

    Depende del criterio individual de cada committer cuándo pedir autorización antes de hacer cambios en el árbol de fuentes. En general un committer experimentado puede incluír cambios que son obviamente correctos sin necesidad de consenso. Por ejemplo, un/a committer que trabaje en un proyecto de documentación puede corregir errores tipográficos o gramaticales sin necesidad de revisión. Por otra parte, se espera de desarrolladores que pretendan realizar cambios de gran calado o complicados que envíen sus cambios para que sean revisados antes de ser incluídos. En casos extremos un miembro del ``core team'' con una función como la del Principal Architect puede pedir que los cambios sean retirados del árbol; es lo que llamamos backing out. Todos los/las committers reciben un correo electrónico acerca de cada cambio concreto en el árbol de fuentes así que no es posible hacerlo en secreto.

  • El Core team. Tanto FreeBSD como NetBSD disponen de un ``core team'' que coordina el proyecto. Los ``core team'' dirigen el rumbo de los proyectos pero sus funciones no siempre están claras. No es necesario ser desarrollador para ser un miembro de un ``core team'' pero suele ser lo habitual. Las normas de un ``core team'' varían de un proyecto a otro pero en general tienen más influencia sobre la dirección del proyecto.

Éte sistema difiere del de Linux en algunos aspectos:

  1. Nadie posée el principio de autoridad. En la práctica eso es muy relativo, puesto que el ``Chief Architect'' puede solicitar que cierta entrada del árbol de fuentes sea eliminada e incluso en el proyecto Linux a ciertas personas les está permitido hacer cambios.

  2. Por otra parte hay un repositorio central, un único lugar donde encontrar las fuentes del sistema operativo íntegro, incluyendo todas las versiones anteriores.

  3. Los BSD mantienen el ``Sistema Operativo'' completo, no únicamente el kernel. Ésta distinción es válida únicamente como definición puesto que ni BSD ni Linux son útiles sin aplicacionesr: las aplicaciones que se usan en BSD suelen ser las mismas que las que se usan en Linux.

  4. Como resultado del mantenimiento estructurado de un único árbol de fuentes mediante CVS el desarrollo de BSD es limpio y es posible acceder a cualquier versión del sistema por su número de versión o por la fecha. Del mismo modo CVS permite actualizaciones incrementales del sistema: por ejemplo el repositorio de FreeBSD es actualizado en torno a 100 veces al día, aunque la mayoría de esos cambios son pequeños.


4.3 Versiones de BSD

Cada proyecto BSD pone a disposición pública tres ``releases'' (versiones) distintas. Igual que en Linux, las ``releases '' tienen asignado un número como por ejemplo 1.4.1 ó 3.5. Además el número de versión tiene un sufijo que indica su propósito:

  1. La versión de desarrollo del sistema recibe el nombre de CURRENT. FreeBSD asigna un número a CURRENT, por ejemplo FreeBSD 5.0-CURRENT. NetBSD utiliza un sistema ligeramente diferente y añade un sufijo compuesto por una única letra que indica cambios en las interfaces internas, por ejemplo NetBSD 1.4.3G. OpenBSD no asigna ningún número ("OpenBSD-current"). Ésta rama es la que incluye todo el desarrollo.

  2. A intervalos regulares, entre dos y cuatro veces al año, los proyectos liberan una versión RELEASE del sistema, que está disponible en CD-ROM y mediante FTP para su descarga gratuíta, por ejemplo OpenBSD 2.6-RELEASE o NetBSD 1.4-RELEASE. La versión RELEASE está dirigida al usuario final y es la versión ``estándar '' del sistema. NetBSD también dispone de patch releases que incluyen un tercer dígito, como por ejemplo NetBSD 1.4.2.

  3. A medida que se van encontrando errores en la versión RELEASE son corregidos y las soluciones son incluídas en el árbol CVS. En FreeBSD la versión resultante se denomina versión STABLE, mientras que en NetBSD y OpenBSD continúa siendo la versión RELEASE. Nuevas características más pequeñas pueden ser añadidas en ésta rama tras un período de pruebas en la rama CURRENT.

Linux, en cambio, mantiene dos árboles de código separados: la versión estable y la versión de desarrollo. Las versiones estables añaden un número par de versión, como 2.0, 2.2 ó 2.4. Las versiones de desarrollo añaden un número impar, como en 2.1, 2.3 ó 2.5. En ambos casos a ese número se le añade otro más que indica la versión exacta. Por si fuera poco cada distribuidor añade sus propios programas y aplicaciones de entorno de usuario, así que el número de versión es importante. Cada distribuidor además asigna números de versión a la distribución, así pues la descripción completa podría ser algo como ``TurboLinux 6.0 with kernel 2.2.14''


4.4 ¿Cuántas versiones de BSD existen?

A diferencia de las numerosas distribuciones de Linux tan sólo hay tres BSD libres. Cada proyecto BSD mantiene su propio árbol de fuentes y su propio kernel. En la práctica, sin embargo, las diferencias en el entorno de usuario (``userland'') entre los distintos BSD son menores que las que hay en Linux.

Es difícil enumerar los objetivos de cada proyecto puesto que las diferencias son muy subjetivas. En general,

  • FreeBSD tiene como meta ofrecer alto rendimiento y facilidad de uso al usuario final y es uno de los favoritos entre proveedores de contenidos web. Funciona en PC y en procesadores Alpha de Compaq. El proyecto FreeBSD cuenta con un número de usuarios significativamente mayor que los otros proyectos.

  • NetBSD tiene como meta la Portabilidad: No en vano su lema es ``of course it runs NetBSD'' (que podría traducirse como ``claro que funciona con NetBSD''). Funciona en máquinas que abarcan desde PDAs a grandes servidores e incluso ha sido usado por la NASA en misiones espaciales. Es una excelente elección para utilizar viejo hardware no Intel.

  • OpenBSD tiene como meta la seguridad y la integridad del código: combina del concepto de código abierto y una revisión rigurosa del código que dan como fruto un sistema muy correcto, elegido por instituciones preocupadas por la seguridad como bancos, entidades de cambio y departamentos gubernamentales de los EEUU. Al igual que NetBSD funciona en gran variedad de plataformas.

Existen dos sistemas operativos BSD más que no son de código abierto, BSD/OS y el MacOS X de Apple:

  • BSD/OS es el derivado más antíguo de 4.4BSD. No es código abierto pero es posible conseguir licencias de su código fuente a un precio relativamente bajo. Se parece a FreeBSD en muchos aspectos.

  • Mac OS X es la última versión del sistema operativo para la gama Macintosh de Apple Computer Inc. El núcleo BSD Unix de éste sistema operativo, Darwin, está libremente disponible como sistema operativo de fuente abierto totalmente funcional para arquitecturas x86 y PPC. El sistema gráfico Aqua/Quartz y la mayoría de las demás aspectos característicos de Mac OS X son código cerrado. Varios desarrolladores de Darwin son también ``committers'' de FreeBSD y viceversa.


4.5 ¿Qué diferencias hay entre la licencia BSD y la licencia pública GNU?

Linux está disponible bajo la GNU General Public License (GPL), que fué diseñada para evitar el software cerrado. Más concretamente, cualquier trabajo derivado de un producto con licencia GPL debe suministrar el código fuente si es requerido. En contraste, la licencia BSD es menos restrictiva: permite la distribución en forma exclusivamente binaria. Éste aspecto es especialmente atractivo para aplicaciones empotradas.


4.6 ¿Qué más debería saber?

Dado que existen menos aplicaciones para BSD que para Linux los desarrolladores de BSD han creado un paquete de compatibilidad con Linux que permite hacer funcionar programas de Linux bajo BSD. El paquete contiene tanto modificaciones del kernel, con el fín de gestionar correctamente las llamadas al sistema de Linux, como ficheros necesarios para la compatibilidad con Linux como la Biblioteca C. No hay diferencias notables en velocidad de ejecución entre una aplicación de Linux ejecutándose en un sistema Linux y una aplicación Linux ejecutándose en un sistema BSD de la misma velocidad.

El modelo ``todo del mismo proveedor'' de BSD implica que las actualizaciones son mucho más sencillas de gestionar de lo que con frecuencia son en Linux. BSD maneja las actualizaciones de versiones de bibliotecas suministrando módulos de compatibilidad para versiones anteriores, de modo que es posible ejecutar binarios con varios años de antiguedad sin problemas.


4.7 Entonces ¿Qué debería usar, BSD o Linux

¿Qué significa realmente esa pregunta? ¿Quién debería utilizar BSD y quién Linux?.

Ésta es una pregunta muy difícil de responder. He aquí varias pautas:

  • ``Si no está roto no lo arregles'': Si ya usa un sistema operativo de código abierto y está satisfecho con él, probablemente no hay ninguna buena razón para cambiar.

  • Los sistemas BSD, especialmente FreeBSD, pueden proporcionar un rendimiento notablemente superior que Linux, pero ésto no es una ley inmutable. En muchos casos no hay diferencia de rendimiento o ésta es muy pequeña. En algunos casos Linux podría tener un rendimiento mejor que FreeBSD.

  • En general los sistemas BSD gozan de una mejor reputación en cuanto a disponibilidad, principalmente por la mayor madurez de su código base.

  • La licencia BSD puede resultar más atractiva que la GPL.

  • BSD puede ejecutar código de Linux, mientras que Linux no puede hacer lo propio con código de BSD. Como resultado de ésto hay una mayor cantidad de software disponible para BSD que para Linux.


4.8 ¿Quién ofrece soporte, servicios y formación orientada a BSD?

BSDi siempre ha ofrecido soporte para BSD/OS y en fechas recientes anunció contratos de soporte para FreeBSD.

Además cada uno de los proyectos tiene una lista de consultores: FreeBSD, NetBSD, y OpenBSD.


Éste y otros documentos pueden obtenerse en ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para preguntas acerca de FreeBSD, leer la documentación antes de contactar con la lista <questions@FreeBSD.org>.
Para preguntas acerca de ésta documentacion escriba a <doc@FreeBSD.org>.