lunes, 12 de agosto de 2013

Comparativa BSD vs. Linux: destapando las mentiras y mitos (Parte I)

Me he decidido a realizar esta comparativa de BSD y Linux ya que existen otras muchas en Internet, pero la mayoría están escritas por defensores de BSD y cuentan verdades a medias. He de decir que yo soy usuario de Linux (openSuSE y Ubuntu) y de FreeBSD y ambos son buenos sistemas operativos, además de libres.

DISTRIBUCIONES O VARIANTES:

Linux tiene centenares de distribuciones, esto puede ser bueno o malo para el usuario final. Bueno porque hay mil sabores para los distintos gustos o necesidades de cada persona, pero malo porque esa fragmentación hace deficil el estudio de tantas variantes y los desarrolladores de software tienen que realizar distintas versiones de paquetes (.deb, .rpm,...). Esa no estandarización también hace que toda la comunidad de desarrolladores se diluyan entre las distintas distros.


En cambio, BSD tiene menos variantes y estas se desarrollan independientemente por comunidades distintas. Estas no se pueden llamar distribuciones, sino que más bien son sistemas operativos derivados o forks. Por ejemplo, SunOS, FreeBSD, NetBSD, PC-BSD, OpenBSD, DragonFly BSD, MirOS BSD, DesktopBSD o el propio Apple Mac OS X es un tipo de BSD. Esto hace que no tenga que haber tantos tipos de paquetes y posibilita una mayor estandarización.

COMUNIDAD Y DESARROLLO:

Linux es un kernel, no un sistema operativo completo. Eso quiere decir que depende de otros complementos para ser un sistema operativo y es allí donde entra en juego el proyecto GNU. GNU/Linux si se puede considerar un sistema completo.

Por otro lado, BSD si que es un sistema completo, no un kernel, a pesar de que el kernel FreeBSD (junto con los complementos GNU y los aportes de la comunidad de Debian) sea empleado en el proyecto Debian para tener dos como alternativas, una basada en FreeBSD y otra en Linux.

Dicho esto, la comunidad de desarrolladors de Linux está muy fragmentada por las distintas distros que existen, pero la mayoría de software es común, así que los aportes de toda la comunidad se aunan y el avance es mucho más rápido (corrigiendo bugs, aportando mejoras, nuevas tecnologías y tapando agujeros de seguridad mucho más rápido). Esto puede llevar a pensar que las fuerzas de desarrollo se diluyen, pero es tal la cantidad de programadores que existen que no afecta para nada en este sentido. En cambio, cada fork de BSD es desarrollado por un grupo de desarrolladores (Core Team) y otros colaboradores, pero el número no es tan elevado como los que contribuyen en Linux.

Otro tema a destacar es la licencia empleada por BSD y por Linux. Los BSDs libres utilizan su propia licencia BSD, que es muy poco restrictiva y no limita que los derivados deban distribuirse bajo las mismas condiciones. Es por ello que han nacido derivados no libres como Mac OS X con una licencia EULA, claro ejemplo de software cerrado y de pago. En cambio la licencia de Linux es GPL y esta es más restrictiva en este sentido, obligando que los derivados sigan siendo libres, por ello no veremos nunca un Linux no libre. Por cierto, no confundais libre o de código abierto con gratuito. Siempre lo digo, hay software de pago que es libre y software gratuito que es cerrado, no tiene nada que ver, se llama libre o de código abierto porque los desarrolladores aportan el código fuente.

ESTABILIDAD Y ROBUSTEZ:

A veces los sistemas BSD tienen dificultades para ejecutar ciertos programas modernos y estas dificulades se traducen en cuelgues del sistema. A pesar de ser SO más robustos y estables que Windows, no lo son tanto como Linux. La mayoría de distribuciones Linux son bastante estables, unas más que otras, pero es dificil ver a un GNU/Linux quedandose colgado.

Muchos usuarios de BSD emplean Mac OS X para uso diario, puesto que este es más bonito y estable que muchos otros forks de BSD, además de integrar nuevas tecnologías antes que otros BSDs y por tener mayor cantidad de software disponible. Además, BSD es desarrollado desde equipos con Mac OS X. Si eso no fuese poco, el núcleo de BSD es monolítico, pueden pensar que igual que Linux, pero el de Linux es más modular y eso permite añadir y quitar módulos del kernel más facilmente sin necesidad de reiniciar el sistema. Por ejemplo, en BSD al eliminar un USB, sin antes desmontarlo, genera un Kernel Panic (pantallazo típico en sistemas tipo Unix).

RENDIMIENTO:

BSD tiene un buen rendimiento, claro está, si lo comparamos con Windows, Mac OS X y Solaris (considerados lentos). Pero ¿qué pasa si se compara con Linux? Pues entonces no está tan claro. Es cierto que FreeBSD se centra en el rendimiento y velocidad y por ello es bastante bueno en este campo, pero ¿más que Linux?

BSD es desarrollado como dije antes desde Mac OS X utilizando el compilador Clang, que no destaca por ser el mejor compilador ni el más eficiente. Esto hace que cada compilación más avanzada (con más código) sea más y más lenta y necesite más recursos de hardware para fucnionar. Linux utiliza GNU GCC y este si que es el mejor compilador posible y por tanto el código generado es bastante eficiente.

Si lo que deseáis es números de Benchmarks que comparen los distintos sistemas, pues aquí los teneis. En las comparativas de Phoronix se puede comprobar como algunas distribuciones de Linux salen vencedoras. Me voy a centrar en Ubuntu, ya que es una de las más utilizadas, aunque no sea la que mejor rendimiento tenga, sus pruebas han determinado que es mejor que PC-BSD o DragonFly BSD.

SEGURIDAD:

Volvemos otra vez a la comunidad de desarrolladores, al haber más en Linux, el código pasa por unos escrutinios más fuertes y por tanto se detectan vulnerabilidades y se corrigen más rápidamente. En cambio, si lees otras comparativas de BSD vs Linux realizadas por defensores de BSD te dirán que es al contrario, que como el grupo de desarrolladores de BSD está más jerarquizado y centrado en un solo sistema, pues es más facil de detectar los errores y solventarlos.

¿Quieres más ventajas de Linux? Pues al haberse convertido en todo un fenómeno y haber cobrado tan alta importancia en el mundo de las empresas, éstas aportan ideas, tecnologías y desarrollo a Linux. Recuerden que el 75% del kernel Linux es desarrollado por empresas (Google, AMD, Intel, ASUS, HP, IBM, Novell/SuSE, Canonical, Oracle, Red Hat, ARM, Dell, NVIDIA, SGI, Fujitsu, Renesas, Lenovo, Analog Devices y un sinfín más) y el resto por los hackers que se dedican a escribir código del kernel, todo capitaneado por el propio Linus Torvalds. Algunas herramientas de GNU han aportado herramientas de seguridad interesantes y otras han venido de terceros, como AppArmor (Novell-SuSE) y SELinux.


Los BSDs no son tan auditados por las empresas y por tanto no son tan seguros. Al igual que antes dije que FreeBSD se centraba en el rendimiento, hay que destacar que OpenBSD se centra en la seguridad, pero la pregunta es ¿es más seguro que Linux? Lo cierto es que los desarrolladores de los proyectos de BSD han acordado permitir puertas traseras a las agencias de espionaje y gobiernos. Por ejemplo, el jefe del proyecto OpenBSD, Theo de Raadt, acordó con el FBI en 2011 crear una puerta trasera en OpenBSD y OpenSSH. Y termino este apartado con otra pregunta, conociendo la posición idiológica de Richard Stallman con respecto a este tema ¿crees que permitiría esto en Linux? Yo no lo creo...

Seguir leyendo la SEGUNDA PARTE del artículo...