                                 Explicando BSD

  Greg Lehey

   <grog@FreeBSD.org>

   Revision: 3c229e5b62

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   AMD, AMD Athlon, AMD Opteron, AMD Phenom, AMD Sempron, AMD Turion, Athlon,
   Elan, Opteron, and PCnet are trademarks of Advanced Micro Devices, Inc.

   Apple, AirPort, FireWire, iMac, iPhone, iPad, Mac, Macintosh, Mac OS,
   Quicktime, and TrueType are trademarks of Apple Inc., registered in the
   U.S. and other countries.

   Intel, Celeron, Centrino, Core, EtherExpress, i386, i486, Itanium,
   Pentium, and Xeon are trademarks or registered trademarks of Intel
   Corporation or its subsidiaries in the United States and other countries.

   Linux is a registered trademark of Linus Torvalds.

   Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The
   Open Group are trademarks of The Open Group in the United States and other
   countries.

   SPARC, SPARC64, and UltraSPARC are trademarks of SPARC International, Inc
   in the United States and other countries. SPARC International, Inc owns
   all of the SPARC trademarks and under licensing agreements allows the
   proper use of these trademarks by its members.

   Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM,
   Netra, OpenJDK, Solaris, StarOffice, SunOS and VirtualBox are trademarks
   or registered trademarks of Sun Microsystems, Inc. in the United States
   and other countries.

   UNIX is a registered trademark of The Open Group in the United States and
   other countries.

   Many of the designations used by manufacturers and sellers to distinguish
   their products are claimed as trademarks. Where those designations appear
   in this document, and the FreeBSD Project was aware of the trademark
   claim, the designations have been followed by the "(TM)" or the "(R)"
   symbol.

   2019-03-12 09:54:56 +0000 por Gabor Kovesdan.
   Resumen

   En el mundo del codigo abierto, la palabra "Linux" es casi un sinonimo de
   "Sistema Operativo", pero no es el unico sistema operativo de codigo
   abierto UNIX(R).

   ?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 documento, las diferencias entre BSD y Linux se
   mostraran en cursiva.

   [ Split HTML / Single HTML ]

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

   Tabla de contenidos

   1. ?Que es BSD?

   2. ?Que, un verdadero UNIX(R)?

   3. ?Por que BSD no es mas conocido?

   4. Comparando BSD y Linux

1. ?Que es BSD?

   BSD significa "Berkeley Software Distribution". Es el nombre de las
   distribuciones de codigo fuente de la Universidad de California, Berkeley,
   que originalmente 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.
   Ademas, comprenden una serie de paquetes de otros proyectos de codigo
   abierto, incluido especialmente el proyecto GNU. El sistema operativo
   completo incluye:

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

     * La biblioteca C, la API base del sistema.

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

     * Utilidades como shells, utilidades de archivos, compiladores y
       enlazadores.

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

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

       El sistema X Window utilizado en la mayoria de las versiones de BSD es
       mantenido por el proyecto X.Org. FreeBSD permite al usuario elegir
       entre una variedad de entornos de escritorio, como Gnome, KDE o Xfce;
       y administradores de ventanas ligeros como Openbox, Fluxbox o Awesome.

     * Muchos otros programas y utilidades.

2. ?Que, un verdadero UNIX(R)?

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

   Cierto es que AT&T UNIX(R) no es codigo abierto y que en sentido estricto
   del copyright BSD no es en absoluto UNIX(R), pero por otra parte AT&T
   incluyo codigo fuente de otros proyectos, teniendo como caso notable el
   Computer Sciences Research Group (CSRG) de la Universidad de California en
   Berkeley, CA. A partir de 1976, el CSRG comenzo a lanzar cintas de su
   software, llamandolas Berkeley Software Distribution o BSD.

   Las versiones iniciales de BSD consistian principalmente en programas de
   usuario, pero cambio drasticamente cuando el CSRG consiguio un contrato
   con el Defense Advanced Research Projects Agency (DARPA) para actualizar
   los protocolos de comunicaciones en su red, ARPANET. Los nuevos protocolos
   fueron conocidos como Internet Protocols, mas adelante TCP/IP y mas tarde
   se covertirian en los protocolos mas importantes. La primera
   implementacion ampliamente distribuida fue parte de 4.2BSD, en 1982.

   Durante la decada de los 80 comienzan a surgir companias que ofrecian
   estaciones de trabajo. Muchas preferian obtener licencias de UNIX(R) en
   lugar de desarrollar sistemas operativos por si mismas. En particular, Sun
   Microsystems adquirio una licencia de UNIX(R) e implemento una version de
   4.2BSD, que denominaron SunOS(TM). Cuando la propia AT&T fue autorizada
   para vender UNIX(R) comercialmente, iniciaron una implementacion un tanto
   rudimentaria llamada System III, seguida rapidamente por System V. El
   codigo base de System V no incluia el soporte de red, por lo que todas las
   implementaciones incluian software adicional de BSD, incluido el software
   TCP/IP, pero tambien utilidades como el shell csh y el editor vi. En
   conjunto, estas mejoras se conocian como las Berkeley Extensions.

   Las cintas BSD contenian codigo fuente de AT&T y en consecuencia requerian
   una licencia de codigo UNIX(R). Hacia 1990, la financiacion del CSRG se
   estaba agotando y se enfrentaba al cierre. Algunos miembros del grupo
   decidieron liberar 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
   principios de 1992 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 baso en las mismas fuentes. El sistema operativo paso a
   denominarse BSD/OS.

   386BSD jamas llego a ser un sistema operativo estable. En cambio, otros
   dos proyectos se separaron de el en 1993: NetBSD y FreeBSD. Ambos
   proyectos se forman gracias a la falta de paciencia que origina la espera
   de mejoras en 386BSD: La gente de NetBSD comenzo a principios de ano, y la
   primera version de FreeBSD no estuvo lista hasta final de ano. En ese
   proceso el codigo base tomo caminos diferentes hasta tal punto que se hizo
   dificil de fusionar. Ademas, los proyectos tenian diferentes objetivos,
   como veremos mas adelante. En 1996, OpenBSD se separo de NetBSD, y en
   2003, DragonFlyBSD se separo de FreeBSD.

3. ?Por que BSD no es mas conocido?

   Por varias razones, BSD es relativamente desconocido:

    1. Los desarrolladores de BSD a menudo estan mas interesados en mejorar
       su codigo que en comercializarlo.

    2. Gran parte de la popularidad de Linux se debe a factores externos a
       los proyectos de Linux, como la prensa y las empresas formadas para
       proporcionar servicios de Linux. Hasta hace poco, los BSD de codigo
       abierto no tenian tales partidarios.

    3. En 1992 AT&T denuncio a BSDI, el distribuidor de BSD/386, alegando que
       el producto contenia codigo propiedad de AT&T. El caso se resolvio
       fuera de los tribunales en 1994, pero el espectro del litigio sigue
       atormentando a las personas. En marzo de 2000, un articulo publicado
       en la web afirmaba que el caso judicial habia sido "resuelto
       recientemente".

       Un detalle que el proceso judicial aclaro fue el de la nomenclatura:
       en la decada de los 80, BSD era conocido como "BSD UNIX(R)". Con la
       eliminacion del ultimo vestigio del codigo AT&T de BSD, tambien perdio
       el derecho a llamarse UNIX(R). Por lo tanto, es posible encontrar
       titulos de libros referentes a "the 4.3BSD UNIX(R) operating system" y
       "the 4.4BSD operating system".

4. Comparando BSD y Linux

   Entonces, ?cual es realmente la diferencia entre, digamos, Debian Linux y
   FreeBSD? Para el usuario promedio, la diferencia es sorprendentemente
   pequena: Ambos son sistemas operativos tipo UNIX(R). Ambos estan
   desarrollados por proyectos no comerciales (esto no se aplica a muchas
   otras distribuciones de Linux, por supuesto). En la siguiente seccion,
   veremos BSD y lo compararemos con Linux. La descripcion se ajusta mas a
   FreeBSD, que representa aproximadamente el 80% de las instalaciones de
   BSD, pero las diferencias entre NetBSD, OpenBSD y DragonFlyBSD son
   pequenas.

  4.1. ?Quien es dueno de BSD?

   Ninguna persona o empresa es duena de BSD. Es creado y distribuido por una
   comunidad de colaboradores altamente cualificados y comprometidos a lo
   largo y ancho del mundo. Algunos de los componentes de BSD son proyectos
   de codigo abierto con sus propios derechos que se administran y mantienen
   por separado.

  4.2. ?Como se desarrolla y actualiza BSD?

   Los kernel de BSD se desarrollan y actualizan siguiendo el modelo de
   desarrollo de codigo abierto. Cada proyecto mantiene un arbol de codigo
   fuente de acceso publico que contiene todos los archivos del proyecto,
   incluida la documentacion y otros ficheros relacionados. Los usuarios
   pueden obtener una copia completa de cualquier version.

   Un gran numero de desarrolladores de todo el mundo contribuyen a mejorar
   BSD. Se dividen en tres tipos:

     * Los Contributors escriben codigo o documentacion. No se les permite
       hacer commit (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, conocido como committer.

     * Los 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 realizar cambios que
       obviamente son correctos sin obtener consenso. Por ejemplo, un
       committer que trabaje en un proyecto de documentacion puede corregir
       errores tipograficos o gramaticales sin necesidad de revision. Por
       otra parte, se espera que los desarrolladores que pretendan realizar
       cambios de gran calado o complicados 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
       ordenar que los cambios sean retirados del arbol, es lo que llamamos
       backing out. Todos los committers reciben un correo electronico que
       describe cada commit, por lo que no es posible hacer un commit en
       secreto.

     * El Core team. Tanto FreeBSD como NetBSD disponen de un core team que
       administra el proyecto. Los core teams dirigen el rumbo de los
       proyectos pero sus funciones no siempre estan claras. No es necesario
       ser desarrollador para ser un miembro del core team pero suele ser lo
       habitual. Las normas del core team varian de un proyecto a otro, pero
       en general tienen mas voz en la direccion del proyecto que los
       miembros del equipo que no son del Core.

   Esta gestion difiere de la de Linux en algunos aspectos:

    1. Ninguna persona controla el contenido del sistema. En la practica eso
       es muy relativo, ya que el Principal Architect puede requerir que el
       codigo sea retirado, e incluso en el proyecto Linux a ciertas personas
       les esta permitido hacer cambios.

    2. Por otro lado, hay un repositorio central, un unico lugar donde se
       pueden encontrar las fuentes de todo el sistema operativo, incluidas
       todas las versiones anteriores.

    3. Los proyectos BSD mantienen todo el "Sistema Operativo", no solo el
       kernel. Esta distincion tiene una utilidad marginal: ni BSD ni Linux
       son utiles sin aplicaciones. Las aplicaciones utilizadas en BSD son
       con frecuencia las mismas que las utilizadas en Linux.

    4. Como resultado del mantenimiento estructurado de un unico arbol de
       fuentes SVN, el desarrollo de BSD es limpio y es posible acceder a
       cualquier version del sistema por su numero de version o por la fecha.
       SVN tambien permite actualizaciones incrementales del sistema: por
       ejemplo, el repositorio de FreeBSD se actualiza aproximadamente 100
       veces al dia. La mayoria de estos cambios son pequenos.

  4.3. Versiones de BSD

   FreeBSD, NetBSD y OpenBSD proporcionan el sistema en tres "versiones"
   diferentes. Al igual que Linux, a los lanzamientos se les asigna un numero
   como 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"). Todo nuevo desarrollo en el sistema entra en esta
       rama.

    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, se
       corrigen y las correcciones se agregan al arbol del SVN. En FreeBSD la
       version resultante se denomina version STABLE, mientras que en NetBSD
       y OpenBSD continua siendo la version RELEASE. Tambien se pueden
       agregar nuevas funcionalidades mas pequenas a esta rama despues de un
       periodo de prueba en la rama CURRENT. La seguridad y otras
       correcciones importantes de errores tambien se aplican en todas las
       versiones soportadas de RELEASE.

   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. Ademas, cada
   proveedor agrega sus propios programas de usuario y utilidades, por lo que
   el nombre de la distribucion tambien 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. ?Que versiones de BSD estan disponibles?

   A diferencia de las numerosas distribuciones de Linux, solo hay cuatro
   BSDs principales de codigo abierto. Cada proyecto BSD mantiene su propio
   arbol de fuentes y su propio kernel. En la practica, sin embargo, parece
   haber menos diferencias entre el codigo de usuario de los proyectos que en
   Linux.

   Es dificil categorizar los objetivos de cada proyecto: las diferencias son
   muy subjetivas. Basicamente,

     * FreeBSD tiene como meta ofrecer un alto rendimiento y facilidad de uso
       al usuario final, y es uno de los favoritos de los proveedores de
       contenido web. Se ejecuta en varias plataformas y tiene
       significativamente mas usuarios que los otros proyectos.

     * NetBSD tiene como meta la maxima portabilidad: "of course it runs
       NetBSD". Se ejecuta en maquinas que abarcan desde PDAs hasta grandes
       servidores, e incluso se ha utilizado en misiones espaciales de la
       NASA. Es una opcion particularmente buena para ejecutar en hardware
       antiguo que no sea Intel(R).

     * 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, bolsas de
       valores y departamentos gubernamentales de los EEUU. Al igual que
       NetBSD funciona en gran variedad de plataformas.

     * DragonFlyBSD tiene como meta ofrecer un alto rendimiento y
       escalabilidad bajo cualquier entorno, desde computadoras de un solo
       usuario hasta enormes sistemas de clusteres. DragonFlyBSD tiene varios
       objetivos tecnicos a largo plazo, pero el desarrollo se centra en
       ofrecer una infraestructura habilitada para SMP que sea facil de
       entender, mantener y desarrollar.

   Tambien hay dos sistemas operativos BSD UNIX(R) adicionales que no son de
   codigo abierto, BSD/OS y Mac OS(R) X de Apple:

     * BSD/OS fue el derivado mas antiguo de 4.4BSD. No era de codigo
       abierto, aunque las licencias de codigo fuente estaban disponibles a
       un precio relativamente bajo. Se parecia a FreeBSD en muchos aspectos.
       Dos anos despues de la adquisicion de BSDi por Wind River Systems,
       BSD/OS no logro sobrevivir como un producto independiente. El soporte
       y el codigo fuente podrian estar todavia disponibles por parte de Wind
       River, pero todos los desarrollos nuevos se centran en el sistema
       operativo embebido VxWorks.

     * Mac OS(R) X es la ultima version del sistema operativo para la linea
       Mac(R) de Apple(R). El nucleo BSD de este sistema operativo, Darwin,
       esta disponible libremente como sistema operativo de codigo abierto
       totalmente funcional para arquitecturas x86 y PPC. Sin embargo, el
       sistema grafico Aqua/Quartz y otros aspectos muy caracteristicos de
       Mac OS(R) X siguen siendo de codigo cerrado. Varios desarrolladores de
       Darwin son tambien committers de FreeBSD y viceversa.

  4.5. ?En que se diferencia la licencia BSD de la licencia publica GNU?

   Linux esta disponible bajo la GNU General Public License (GPL), que esta
   disenada para eliminar el software de codigo cerrado. En particular,
   cualquier trabajo derivado de un producto publicado bajo la GPL tambien
   debe suministrarse con el codigo fuente si se solicita. Por el contrario,
   la licencia BSD es menos restrictiva: permite la distribucion en forma
   exclusivamente binaria. Esto es particularmente atractivo para
   aplicaciones encastradas.

  4.6. ?Que mas debo saber?

   Como hay menos aplicaciones disponibles para BSD que para Linux, los
   desarrolladores de BSD crearon un paquete de compatibilidad con Linux, que
   permite que los programas de Linux se ejecuten bajo BSD. El paquete
   incluye modificaciones del kernel para realizar correctamente las llamadas
   al sistema Linux y archivos de compatibilidad con Linux, como la
   biblioteca de C. No hay una diferencia notable en la velocidad de
   ejecucion entre una aplicacion Linux que se ejecuta en una maquina Linux y
   una aplicacion Linux que se ejecuta en una maquina 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 son con
   frecuencia 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
   antigu:edad sin problemas.

  4.7. ?Que debo usar, BSD o Linux?

   ?Que significa todo esto en la practica? ?Quien deberia usar BSD, quien
   deberia usar Linux?

   Esta es una pregunta muy dificil de responder. Aqui hay algunas pautas:

     * "Si no esta roto no lo arregles": Si ya usa un sistema operativo de
       codigo abierto y esta satisfecho con el, probablemente no haya 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
       confiabilidad, principalmente por la mayor madurez de su codigo base.

     * Los proyectos BSD tienen una mejor reputacion por la calidad y la
       integridad de su documentacion. Los diversos proyectos de
       documentacion tienen como objetivo proporcionar documentacion
       actualizada activamente, en muchos idiomas, y que cubra todos los
       aspectos del sistema.

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

     * BSD puede ejecutar la mayoria de los binarios de Linux, mientras que
       Linux no puede ejecutar los binarios de BSD. Muchas implementaciones
       de BSD tambien pueden ejecutar binarios desde otros sistemas similares
       a UNIX(R). Como resultado, BSD puede presentar una ruta de migracion
       mas facil desde otros sistemas que Linux.

  4.8. ?Quien proporciona soporte, servicio y formacion orientada a BSD?

   BSDi / FreeBSD Mall, Inc. ha estado proporcionando contratos de soporte
   para FreeBSD durante casi una decada.

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