                               Que es BSD

  Greg Lehey

   <grog@FreeBSD.org>

   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. 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>.

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

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 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" 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. Un/a 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
       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 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.

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

          Puede descargar este y muchos otros documentos desde
                ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentacion antes de escribir
                  a la lista <questions@FreeBSD.org>.
    Envie sus preguntas sobre la documentacion a <doc@FreeBSD.org>.
