                                   Que es BSD

  Greg Lehey

   <grog@FreeBSD.org>

   Revision: 43184
   2013-11-13 07:52:45 por hrs.
   Resumen

   En el mundo del codigo abierto la palabra "Linux" suele ser utilizada como
   sinonimo de "Sistema Operativo" pero no es el unico sistema operativo
   libre UNIX(R). En Abril de 1.999 el Internet Operating System Counter
   reflejaba que el 31'3% de los sistemas que ofrecian algun servicio en
   Internet usaban Linux y el 14'6% usaban BSD UNIX(R). Alguna de las
   empresas mas grandes de Internet, como por ejemplo Yahoo!, usan BSD. El
   servidor de FTP con mas carga en 1999 (ahora desaparecido) ,
   ftp.cdrom.com, transferia 1'4TB diariamente usando BSD. Es facil suponer
   que no se trata de un nicho de mercado: BSD es un secreto bien guardado.

   ?Asi que cual es el secreto? ?Por que BSD no es mas conocido? Este
   articulo trata sobre esa y otras cuestiones.

   A lo largo de este articulo seran destacadas de este modo.

   Traduccion de Jose Ramon Baz <jr_baz@hartu.net> y Jose Vicente Carrasco
   <carvay@es.FreeBSD.org>.

   [ Split HTML / Single HTML ]

     ----------------------------------------------------------------------

   Tabla de contenidos

   1. ?Que es BSD?

   2. Entonces ?es un UNIX verdadero?

   3. ?Por que BSD no se conoce mejor?

   4. Comparemos BSD y Linux

1. ?Que es BSD?

   BSD son las siglas de "Berkeley Software Distribution". Asi se llamo a las
   distribuciones de codigo fuente que se hicieron en la Universidad de
   Berkeley en California y que en origen eran extensiones del sistema
   operativo UNIX(R) de AT&T Research. Varios proyectos de sistemas
   operativos de codigo abierto tienen su origen en una distribucion de este
   codigo conocida como 4.4BSD-Lite. Anaden ademas un buen numero de paquetes
   de otros proyectos de Codigo Abierto, incluyendo de forma destacada al
   proyecto GNU. El sistema operativo completo incluye:

     * El kernel BSD, que se encarga de la programacion del tiempo de
       ejecucion de los procesos, la gestion de memoria, el multiproceso
       simetrico (SMP), los controladores de dispositivos, etc.

       A diferecia del kernel Linux existen varios kernel BSD con diversas
       funciones.

     * La biblioteca C, la API base del sistema.

       La biblioteca C de BSD esta basada en codigo procedente de Berkeley no
       del proyecto GNU.

     * Aplicaciones como las distintas shells, aplicaciones de gestion de
       ficheros, compiladores y enlazadores.

       Algunas de las aplicaciones derivan del proyecto GNU, otras no.

     * El sistema X Window, que gestiona el entorno grafico.

       El sistema X Window que se usa en la mayoria de versiones de BSD es
       producto de un proyecto aparte, el Proyecto XFree86. Se usa el mismo
       codigo que en Linux. BSD por lo general no predetermina un "gestor de
       ventanas" como KDE o GNOME, aunque estos y otros muchos esten
       disponibles.

     * Muchos otros programas y utilidades.

2. Entonces ?es un UNIX verdadero?

   Los sistemas operativos BSD no son clones sino derivados de codigo abierto
   del sistema operativo de AT&T Research, el cual es a su vez ancestro del
   moderno UNIX System V. Esto puede sorprenderle. ?Como puede haber sucedido
   esto si AT&T jamas ha liberado su codigo?

   Cierto es que AT&T UNIX no es codigo abierto y que en un sentido estricto
   de copyright BSD no es en absoluto UNIX, pero por otra parte AT&T ha
   incluido 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,
   dandoles la denominacion Berkeley Software Distribution, o BSD.

   Las primeras distribuciones BSD consistian principalmente en aplicaciones
   de entorno de usuario ("userland") pero la situacion cambio de modo
   drastico cuando el CSRG firmo un contrato con la Agencia de Investigacion
   de Proyectos Avanzados (DARPA) para mejorar los protocolos de comunicacion
   en su red ARPANET. A los nuevos protocolos se les dio el nombre de
   Internet Protocols, y mas adelante TCP/IP, que mas tarde se habrian de
   covertir en los protocolos mas importantes. La primera implementacion
   ampliamente distribuida lo fue como parte de 4.2BSD, en 1.982.

   Durante la decada de los 80 comienzan a surgir companias que ofrecian
   estaciones de trabajo. La mayoria opto por adquirir licencias de UNIX en
   lugar de desarrollar sistemas operativos ellos mismos. En particular Sun
   Microsystems adquirio una licencia de UNIX e implemento una version de
   4.2BSD, a la que llamaron SunOS. Cuando la propia AT&T fue autorizada para
   vender UNIX iniciaron una implementacion un tanto rudimentaria llamada
   System III, seguida rapidamente por System V. El codigo base de System V
   no incluia capacidad de trabajo en redes, de manera que todas sus
   implementaciones habian de usar software de BSD, incluyendo TCP/IP, asi
   como aplicaciones como la shell csh y el editor vi. En conjunto esas
   inclusiones fueron conocidas como las Berkeley Extensions.

   Las cintas BSD contenian codigo fuente de AT&T y en consecuencia requerian
   una licencia de codigo UNIX. Hacia 1.990 al CSRG se le retiran los fondos
   y se enfrenta al cierre. Algunos de los miembros del grupo deciden
   distribuir el codigo BSD, que era Codigo Abierto, sin el codigo propiedad
   de AT&T. Finalmente esto sucede con la Networking Tape 2, mas conocida
   como Net/2. Net/2 no era un sistema operativo completo: faltaba
   aproximadamente un 20% del codigo del kernel. Uno de los miembros del
   CSRG, William F. Jolitz, escribio el codigo restante y lo distribuyo a
   comienzos de 1.992 como 386BSD. Al mismo tiempo otro grupo de antiguos
   miembros del CSRG fundaron una empresa llamada Berkeley Software Design
   Inc. y distribuyo una version beta de un sistema operativo llamado
   BSD/386, que se basa en las mismas fuentes. El sistema operativo paso a
   denominarse BSD/OS.

   386BSD jamas llego a ser un sistema operativo estable. En lugar de ello
   dos proyectos surgen de el 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 comenzo a primeros de ano y la primera version
   de FreeBSD no estuvo lista hasta finales del mismo. En ese proceso el
   codigo base tomo caminos diferentes hasta tal punto que se hizo dificil de
   mezclar. Ademas los proyectos tienen objetivos diferentes, como veremos
   mas adelante. En 1.996 otro proyecto, OpenBSD, se separa de NetBSD.

3. ?Por que BSD no se conoce mejor?

   Existen diversas razones por las que BSD es relativamente desconocido:

    1. Los desarrolladores de BSD con frecuencia estan mas interesados en
       depurar su codigo 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 companias que ofrecen
       servicios relacionados con Linux. Hasta hace poco los BSD de fuente
       abierta carecian de tales abogados.

    3. Los desarrolladores de BSD suelen estar mas experimentados que los de
       Linux y ponen menos de su parte a la hora de hacer el sistema facil de
       usar. Los recien llegados suelen sentirse mas comodos con Linux.

    4. En 1.992 AT&T denuncio a BSDI, el distribuidor de BSD/386, alegando
       que el producto contenia codigo propiedad de AT&T. El caso fue
       sobreseido en 1.994 pero la huella del litigio perdura. Aun en Marzo
       de 2.000 en un articulo publicado en la web se aseguraba que el caso
       habia sido "resuelto hace poco".

       Un detalle que el proceso judicial aclaro fue el de la nomenclatura:
       en los 80 BSD era conocido como "BSD UNIX ". Tras la eliminacion del
       ultimo vestigio de codigo de AT&T, BSD perdio el derecho a llamarse
       UNIX. Es por esto que es posible encontrar titulos de libros
       referentes a "the 4.3BSD UNIX operating system" y "the 4.4BSD
       operating system".

    5. Existe la creencia de que los proyectos BSD estan fragmentados y
       enfrentados entre si. El Wall Street Journal hablo de la
       "balcanizacion " de los proyectos BSD. Como en el caso del pleito, esa
       creencia se fundamenta en historia antigua.

4. Comparemos BSD y Linux

   De manera que, ?cual es la diferencia entre, digamos, Debian Linux y
   FreeBSD? Para el usuario avanzado la diferencia es sorprendentemente
   pequena: ambos son sistemas operativos tipo UNIX. Ambos son desarrollados
   por proyectos no comerciales (esto, por supuesto, no es aplicable a la
   mayoria del resto de distribuciones de Linux). En el siguiente apartado
   tomaremos BSD como punto de partida y lo compararemos con Linux. La
   descripcion se ajusta mas a FreeBSD, que posee aproximadamente el 80% de
   los sistemas BSD instalados, pero las diferencias con NetBSD y OpenBSD son
   pequenas.

  4.1. ?Quien posee BSD?

   Ninguna persona o empresa posee BSD. Su creacion y distribucion 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 Codigo Abierto que cuentan con responsables ajenos al proyecto BSD.

  4.2. ?Como se desarrolla y actualiza BSD?

   Los kernel BSD son desarrollados y actualizados siguiendo el modelo de
   desarrollo de Codigo Abierto. Cada proyecto mantiene un arbol de fuentes
   accesible publicamente mediante un "Sistema Concurrente de Versiones"
   (Concurrency Versions System, CVS), que contiene todos los ficheros fuente
   del proyecto, incluidos los de la documentacion 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 version
   elegida del sistema.

   Un gran numero de desarrolladores de muy diversas partes del mundo
   contribuye con mejoras a BSD. Estan divididos en tres categorias:

     * Contributors son aquellos que escriben codigo o documentacion. No se
       les permite "hacer commit" (es decir, anadir codigo) directamente al
       arbol de fuentes. Para que su codigo sea incluido en el sistema debe
       ser revisado y probado por un desarrollador registrado o committer.

     * Committers son desarrolladores que disponen de acceso de escritura en
       el arbol de fuentes. Para convertirse en committer es necesario
       demostrar habilidad en el area en la cual el o ella trabaja.

       Depende del criterio individual de cada committer cuando pedir
       autorizacion antes de hacer cambios en el arbol de fuentes. En general
       un committer experimentado puede incluir cambios que son obviamente
       correctos sin necesidad de consenso. Por ejemplo, un/a committer que
       trabaje en un proyecto de documentacion puede corregir errores
       tipograficos o gramaticales sin necesidad de revision. Por otra parte,
       se espera de desarrolladores que pretendan realizar cambios de gran
       calado o complicados que envien sus cambios para que sean revisados
       antes de ser incluidos. En casos extremos un miembro del "core team"
       con una funcion como la del Principal Architect puede pedir que los
       cambios sean retirados del arbol; es lo que llamamos backing out.
       Todos los/las committers reciben un correo electronico acerca de cada
       cambio concreto en el arbol de fuentes asi 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 estan 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" varian de un proyecto a otro
       pero en general tienen mas influencia sobre la direccion del proyecto.

   Ete sistema difiere del de Linux en algunos aspectos:

    1. Nadie posee el principio de autoridad. En la practica eso es muy
       relativo, puesto que el "Chief Architect" puede solicitar que cierta
       entrada del arbol de fuentes sea eliminada e incluso en el proyecto
       Linux a ciertas personas les esta permitido hacer cambios.

    2. Por otra parte hay un repositorio central, un unico lugar donde
       encontrar las fuentes del sistema operativo integro, incluyendo todas
       las versiones anteriores.

    3. Los BSD mantienen el "Sistema Operativo" completo, no unicamente el
       kernel. Esta distincion es valida unicamente como definicion puesto
       que ni BSD ni Linux son utiles sin aplicaciones: 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 unico arbol de
       fuentes mediante CVS el desarrollo de BSD es limpio y es posible
       acceder a cualquier version del sistema por su numero de version 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 dia, aunque la mayoria de esos cambios son pequenos.

  4.3. Versiones de BSD

   Cada proyecto BSD pone a disposicion publica tres "releases" (versiones)
   distintas. Igual que en Linux, las "releases " tienen asignado un numero
   como por ejemplo 1.4.1 o 3.5. Ademas el numero de version tiene un sufijo
   que indica su proposito:

    1. La version de desarrollo del sistema recibe el nombre de CURRENT.
       FreeBSD asigna un numero a CURRENT, por ejemplo FreeBSD 5.0-CURRENT.
       NetBSD utiliza un sistema ligeramente diferente y anade un sufijo
       compuesto por una unica letra que indica cambios en las interfaces
       internas, por ejemplo NetBSD 1.4.3G. OpenBSD no asigna ningun numero
       ("OpenBSD-current"). Esta rama es la que incluye todo el desarrollo.

    2. A intervalos regulares, entre dos y cuatro veces al ano, los proyectos
       liberan una version RELEASE del sistema, que esta disponible en CD-ROM
       y mediante FTP para su descarga gratuita, por ejemplo OpenBSD
       2.6-RELEASE o NetBSD 1.4-RELEASE. La version RELEASE esta dirigida al
       usuario final y es la version "estandar " del sistema. NetBSD tambien
       dispone de patch releases que incluyen un tercer digito, como por
       ejemplo NetBSD 1.4.2.

    3. A medida que se van encontrando errores en la version RELEASE son
       corregidos y las soluciones son incluidas en el arbol CVS. En FreeBSD
       la version resultante se denomina version STABLE, mientras que en
       NetBSD y OpenBSD continua siendo la version RELEASE. Nuevas
       caracteristicas mas pequenas pueden ser anadidas en esta rama tras un
       periodo de pruebas en la rama CURRENT.

   Linux, en cambio, mantiene dos arboles de codigo separados: la version
   estable y la version de desarrollo. Las versiones estables anaden un
   numero par de version, como 2.0, 2.2 o 2.4. Las versiones de desarrollo
   anaden un numero impar, como en 2.1, 2.3 o 2.5. En ambos casos a ese
   numero se le anade otro mas que indica la version exacta. Por si fuera
   poco cada distribuidor anade sus propios programas y aplicaciones de
   entorno de usuario, asi que el numero de version es importante. Cada
   distribuidor ademas asigna numeros de version a la distribucion, asi pues
   la descripcion completa podria ser algo como "TurboLinux 6.0 with kernel
   2.2.14"

  4.4. ?Cuantas versiones de BSD existen?

   A diferencia de las numerosas distribuciones de Linux tan solo hay tres
   BSD libres. Cada proyecto BSD mantiene su propio arbol de fuentes y su
   propio kernel. En la practica, sin embargo, las diferencias en el entorno
   de usuario ("userland") entre los distintos BSD son menores que las que
   hay en Linux.

   Es dificil 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 numero 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 podria traducirse como "claro que funciona
       con NetBSD"). Funciona en maquinas que abarcan desde PDAs a grandes
       servidores e incluso ha sido usado por la NASA en misiones espaciales.
       Es una excelente eleccion para utilizar viejo hardware no Intel.

     * OpenBSD tiene como meta la seguridad y la integridad del codigo:
       combina del concepto de codigo abierto y una revision rigurosa del
       codigo 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 mas que no son de codigo abierto,
   BSD/OS y el MacOS X de Apple:

     * BSD/OS es el derivado mas antiguo de 4.4BSD. No es codigo abierto pero
       es posible conseguir licencias de su codigo fuente a un precio
       relativamente bajo. Se parece a FreeBSD en muchos aspectos.

     * Mac OS X es la ultima version del sistema operativo para la gama
       Macintosh de Apple Computer Inc. El nucleo BSD Unix de este sistema
       operativo, Darwin, esta libremente disponible como sistema operativo
       de fuente abierto totalmente funcional para arquitecturas x86 y PPC.
       El sistema grafico Aqua/Quartz y la mayoria de las demas aspectos
       caracteristicos de Mac OS X son codigo cerrado. Varios desarrolladores
       de Darwin son tambien "committers" de FreeBSD y viceversa.

  4.5. ?Que diferencias hay entre la licencia BSD y la licencia publica GNU?

   Linux esta disponible bajo la GNU General Public License (GPL), que fue
   disenada para evitar el software cerrado. Mas concretamente, cualquier
   trabajo derivado de un producto con licencia GPL debe suministrar el
   codigo fuente si es requerido. En contraste, la licencia BSD es menos
   restrictiva: permite la distribucion en forma exclusivamente binaria. Este
   aspecto es especialmente atractivo para aplicaciones empotradas.

  4.6. ?Que mas deberia 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 fin 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 ejecucion entre una aplicacion de Linux
   ejecutandose en un sistema Linux y una aplicacion Linux ejecutandose en un
   sistema BSD de la misma velocidad.

   El modelo "todo del mismo proveedor" de BSD implica que las
   actualizaciones son mucho mas sencillas de gestionar de lo que con
   frecuencia son en Linux. BSD maneja las actualizaciones de versiones de
   bibliotecas suministrando modulos de compatibilidad para versiones
   anteriores, de modo que es posible ejecutar binarios con varios anos de
   antiguedad sin problemas.

  4.7. Entonces ?Que deberia usar, BSD o Linux?

   ?Que significa realmente esa pregunta? ?Quien deberia utilizar BSD y quien
   Linux?.

   Esta es una pregunta muy dificil de responder. He aqui varias pautas:

     * "Si no esta roto no lo arregles": Si ya usa un sistema operativo de
       codigo abierto y esta satisfecho con el, probablemente no hay ninguna
       buena razon para cambiar.

     * Los sistemas BSD, especialmente FreeBSD, pueden proporcionar un
       rendimiento notablemente superior que Linux, pero esto no es una ley
       inmutable. En muchos casos no hay diferencia de rendimiento o esta es
       muy pequena. En algunos casos Linux podria tener un rendimiento mejor
       que FreeBSD.

     * En general los sistemas BSD gozan de una mejor reputacion en cuanto a
       disponibilidad, principalmente por la mayor madurez de su codigo base.

     * La licencia BSD puede resultar mas atractiva que la GPL.

     * BSD puede ejecutar codigo de Linux, mientras que Linux no puede hacer
       lo propio con codigo de BSD. Como resultado de esto hay una mayor
       cantidad de software disponible para BSD que para Linux.

  4.8. ?Quien ofrece soporte, servicios y formacion orientada a BSD?

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

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