FreeBSD es un sistema operativo tipo Unix y una iteración de las antiguas distribuciones de Unix más conocidas como Research Unix. Es de código abierto y está disponible públicamente de forma gratuita, y en realidad es sólo una de las muchas distribuciones de software de Berkeley (abreviado BSD, de ahí que el sistema operativo se llame FreeBSD), siendo las otras iteraciones notables OpenBSD, NetBSD y DragonFly BSD.
Linux, como derivación de Unix, tiene naturalmente mucho en común con los BSD. Al igual que los BSD, las distribuciones de Linux también son libres y de código abierto. A pesar de las similitudes fundamentales, Linux ha eclipsado en gran medida a los BSD en cuanto a popularidad, ya que más del 74% de los teléfonos inteligentes modernos están basados en Linux.
Así que esto nos lleva a preguntarnos: Si BSD y Linux no son más que iteraciones de Unix de investigación, ¿qué es lo que los diferencia exactamente?
Bueno, las diferencias entre ambos radican en los fundamentos, y las diferencias son muy numerosas. Pero leerlas todas en un solo post sería bastante tedioso para los lectores. Por lo tanto, este post se centrará únicamente en los fundamentos y dejará los detalles intrincados fuera en aras de la brevedad y para no intimidar a los nuevos lectores.
¿Pero qué es Linux, realmente?
La primera cosa que mucha gente se equivoca es que Linux es un núcleo, no un sistema operativo. Así que eso lo hace sólo una parte del sistema operativo, no el sistema operativo en sí.
Hablemos de los Kernels por un segundo. Los kernels sirven como eje en cualquier sistema operativo, ya que conserva todo el código subyacente sobre el que se sustenta ese sistema operativo. Permite y agiliza la interacción entre los componentes de hardware y software de un sistema, gestiona sus peticiones de entrada/salida hacia y desde las aplicaciones de software, y es responsable de manejar también los dispositivos de hardware.
En resumen, un kernel es la característica más integral de cualquier sistema operativo en el que se basa, y por lo tanto se retrae a una parte altamente protectora en la memoria del sistema donde todas y cada una de las peticiones de acceso de las aplicaciones son denegadas, barradas unas pocas que son integrales para el funcionamiento del sistema.
Ahora que entendemos lo que es un kernel, podemos pasar a ver lo que Linux, como kernel, hace en el sistema operativo.
Kernel de Linux dentro de un sistema operativo
Entre los sistemas operativos más populares basados en Linux están Debian, Ubuntu, Fedora y Deepin. Así que, siempre que oigas a alguien decir que usa Linux, debes saber que en realidad se trata de una de estas distribuciones. Estas distribuciones están «basadas en Linux» porque están construidas sobre el núcleo de Linux. Los ajustes al kernel junto con las nuevas aplicaciones cargadas en él hacen que cada distribución sea diferente de la otra.
¿Qué es BSD y en qué se diferencia de Linux?
Como se mencionó anteriormente, las diferentes distribuciones de BSD son todas sistemas operativos. Y eso hace que BSD, al igual que Linux, sea un núcleo.
Pero para complicar las cosas, BSD también es un sistema operativo independiente, cosa que Linux no es. Expliquemos cómo exactamente.
Para las distribuciones BSD, se añaden varios programas al núcleo BSD. Esta combinación se lanza entonces como un paquete independiente y completo que hay que instalar, y la cosa está lista para funcionar. Así, la diferencia principal entre las distribuciones BSD como FreeBSD, OpenBSD, etc., se debe a los programas añadidos al núcleo del sistema operativo. Para descargar paquetes de software adicionales, los usuarios de BSD utilizan el sistema de puertos, que mantiene estos paquetes en forma de código fuente. El código fuente es compilado por el sistema cada vez que se lanza el software. Aunque esto puede resultar engorroso, especialmente cuando se ejecutan códigos más largos e intrincados, los sistemas BSD pueden omitir por completo el paso de compilación en cada lanzamiento si el programa se instala en estado binario, aliviando así el proceso en gran medida.
Linux es diferente de BSD en el sentido de que cada una de sus distribuciones utiliza programas completamente diferentes, y las distribuciones no tienen un repositorio centralizado para los paquetes de software, ya que cada distribución tiene su propio repositorio.
Diferencias en las licencias
Una de las diferencias fundamentales entre BSD y Linux es la del sistema de licencias bajo el que se liberan sus distribuciones.
Cuando se descarga software del repositorio de Ports en BSD o se instala una distribución en su totalidad, el software o la distribución se le asigna bajo la licencia BSD, que es un sistema de licencias personalizado empleado por los desarrolladores de BSD. Aunque BSD es completamente de código abierto y libre a partir de ahora, el sistema de licencias BSD permite a los desarrolladores declarar BSD de código cerrado en un momento dado. Como usuario de FreeBSD, no tiene derecho a recibir más versiones de los desarrolladores de BSD. Sin embargo, los desarrolladores de BSD han hecho público que tienen toda la intención de mantener el código abierto en el futuro.
Las distribuciones de Linux se publican bajo la Licencia Pública General de GNU (GPL). Bajo este sistema de licencias, los desarrolladores de Linux están legalmente obligados a publicar todos y cada uno de los cambios realizados en el núcleo de Linux. El sistema de licencias, en esencia, asegura que Linux siga siendo de código abierto, independientemente de los cambios que se realicen en el propio núcleo.
¿Por qué Linux es más popular? (Spoilers: disponibilidad de software)
Si te has estado preguntando todo este tiempo por qué no has oído hablar de los BSDs tanto como de las distribuciones de Linux, aquí está la razón: cuando se trata de la compatibilidad de software, Linux lo hace a la perfección. Para cada software que existe hay una versión compatible con Linux. Este no es el caso de FreeBSD, que permanece en gran medida descuidado por esa razón.
El kernel de Linux hace que escribir y distribuir programas de software sea más sencillo en comparación con otros kernels, por lo que los desarrolladores se inclinan naturalmente a trabajar hacia las versiones de Linux. La distribución, especialmente, se hace aún más fácil por el sistema de paquetes binarios preinstalados que facilita. Linux permite descargar e instalar paquetes de software a través de gestores de paquetes como apt, yum, Pacman, etc.
En comparación con la distribución de software en Linux, los usuarios de BSD lo tienen mucho más difícil. Los paquetes de software se descargan primero como códigos fuente en BSD a través del sistema de puertos. A continuación, estos códigos fuente se compilan cada vez que se lanzan, un proceso que requiere mucho tiempo y es frustrante en la era moderna, en la que el software se instala con sólo pulsar un botón. Esto es igualmente frustrante para los desarrolladores, ya que tienen que hacer un gran esfuerzo para que la compilación sea lo más rápida posible.
Aunque la introducción de paquetes binarios precompilados ha mitigado en gran medida el proceso de obtención de software en FreeBSD, la disponibilidad de software sigue siendo un enorme problema para los BSD.
Elegir entre Linux y BSD
Aparte de los más convencionales Windows e IOS, las distribuciones de Linux están a pasos agigantados por delante de cualquier otro sistema operativo existente. Es gratuito, de código abierto, y tiene todo lo que ofrece FreeBSD, sin las advertencias.
BSD y Linux son mucho más comunes que diferentes, siendo las licencias y la distribución de software las únicas diferencias fundamentales. Aun así, a pesar de las similitudes, el uso de uno es un intercambio de otro.
Por un lado, FreeBSD mantiene una biblioteca de herramientas y dependencias en todas las distribuciones, lo que facilita a los desarrolladores la posibilidad de iterar sobre los contenidos y crear aplicaciones propias. Aquí es donde FreeBSD tiene una ventaja considerable sobre Linux, ya que la suite GNU incluida con Linux no permite esto.
Pero por otro lado, la falta de compatibilidad y disponibilidad de software dificulta mucho la experiencia con FreeBSD. Este problema puede solucionarse utilizando el paquete de compatibilidad de Linux, que permite que el software de Linux se ejecute en las distribuciones BSD, pero esto es un paso extra que sigue dificultando la experiencia, no obstante.
En cuanto a las licencias, la licencia GPL de Linux es mucho más restrictiva que la licencia BSD. Los desarrolladores o usuarios no pueden hacer variaciones al kernel de Linux o al código fuente sin hacerlo público. Los usuarios de BSD no tienen tales obligaciones; por lo tanto, los desarrolladores deberían al menos probar BSD. Poder mantener el código fuente privado es una ventaja considerable que Linux no proporciona.
La licencia de las distribuciones de Linux está sesgada a favor de los usuarios, ya que confirma que cualquier desarrollo realizado para mejorar las aplicaciones del sistema se pondrá a disposición de los usuarios. La licencia BSD, por otro lado, es más parecida a la licencia estándar, permitiendo a los usuarios instalar BSDs de forma gratuita pero no obligando a los desarrolladores a hacer público su contenido.
Nuestra recomendación
Recomendaríamos una distribución Linux si la vas a utilizar para fines generales. Su compatibilidad de software es razón suficiente para que la recomendemos. Sin embargo, si eres un fabricante, BSD es la opción adecuada para ti. Dispone de un repositorio centralizado para el software y goza de buena reputación por su fiabilidad. Y en lo que respecta a las licencias BSD, no tendrá que preocuparse de que su trabajo sea de código abierto.
Si ha optado por el núcleo de Linux, le recomendamos que utilice Ubuntu. Se actualiza regularmente cada seis meses, una consistencia que, en mi opinión, logra un gran equilibrio entre mantenerse al día con los problemas de seguridad y no frustrar a los usuarios.
Y si opta por el kernel BSD, le recomendaríamos FreeBSD, que es en general la distribución de BSD más utilizada que existe.