Si bien Linux se inspiró en Unix, en realidad se trata de algo completamente distinto. A continuación explicaremos las principales diferencias entre estos dos famosos sistemas operativos.
Linux es un sistema operativo libre y de código abierto. Unix es un producto comercial, ofrecido por una variedad de proveedores, cada uno con su propia variante, generalmente dedicada a su propio hardware. Unix es costoso y de código cerrado. Pero Linux y Unix hacen más o menos lo mismo de la misma manera, ¿no es así? En mayor o menor medida, sí.
Las sutilezas son ligeramente más complicadas. Hay diferencias más allá de los aspectos técnicos y de arquitectura. Para entender algunas de las influencias que han dado forma a Unix y Linux, necesitamos entender sus antecedentes.
Los orígenes de Unix
Unix tiene más de 50 años. Fue desarrollado en el lenguaje ensamblador de la Digital Equipment Corporation (DEC) en un PDP/7 DEC como un proyecto no oficial en los laboratorios Bell, entonces propiedad de AT&T. Fue portado en poco tiempo a una computadora DEC PDP/11/20, y luego se expandió constantemente a otras computadoras en Bell. Una reescritura en el lenguaje de programación C llevó a la versión 4 de Unix de 1973. Esto fue significativo porque las características del lenguaje C y del compilador significaban que ahora era relativamente fácil portar Unix a nuevas arquitecturas de ordenadores.
En 1973, Ken Thompson y Dennis Ritchie presentaron un trabajo sobre Unix en una conferencia. Como resultado, solicitudes de copias de Unix llegaron a Bell. Debido a que la venta de sistemas operativos estaba fuera del alcance de las operaciones permitidas por AT&T, no podían tratar a Unix como un producto. Esto llevó a que Unix se distribuyera como código fuente con una licencia. Los costos nominales eran suficientes para cubrir el envío y el embalaje y una «regalía razonable». Unix vino «tal cual», sin soporte técnico ni correcciones de errores. Pero obtenías el código fuente y podías modificarlo.
Unix vio una rápida aceptación en las instituciones académicas. En 1975, Ken Thompson pasó un año sabático fuera de Bell en la Universidad de California, Berkeley. Junto con algunos estudiantes graduados, comenzó a agregar y mejorar su copia local de Unix. El interés externo en las adiciones realizadas en Berkeley creció, lo que llevó a la primera versión de la Berkeley Software Distribution (BSD). Esta era una colección de programas y modificaciones del sistema que podían ser añadidos a un sistema Unix existente, pero no era un sistema operativo independiente. Las versiones posteriores de BSD fueron sistemas Unix completos.
Ahora había dos variantes principales de Unix, la rama de AT&T y la rama de BSD. Todas las demás variantes de Unix, como AIX, HP-UX, y Oracle Solaris, son descendientes de estos. En 1984, se liberaron algunas de las restricciones de AT&T, y pudieron producir y vender Unix.
Unix entonces se comercializó.
El Génesis de Linux
Viendo la comercialización de Unix como una mayor erosión de las libertades disponibles para los usuarios de computadoras, Richard Stallman se propuso crear un sistema operativo basado en la libertad. Es decir, la libertad de modificar el código fuente, de redistribuir versiones modificadas del software, y de utilizar el software de cualquier manera que el usuario considere conveniente.
El sistema operativo iba a replicar la funcionalidad de Unix, sin incluir ningún código fuente de Unix. Llamó al sistema operativo GNU, y fundó el Proyecto GNU en 1983 para desarrollar el sistema operativo. En 1985, fundó la Free Software Foundation para promover, financiar y apoyar el proyecto GNU.
Todas las áreas del sistema operativo GNU estaban progresando bien, a excepción del núcleo (kernel). Los desarrolladores del proyecto GNU estaban trabajando en un microkernel llamado GNU Hurd, pero el progreso era lento. (Todavía está en desarrollo hoy en día, y acercándose a su lanzamiento.) Sin un núcleo, no habría sistema operativo.
En 1987, Andrew S. Tanebaum lanzó un sistema operativo llamado MINIX (mini-Unix) como ayuda para la enseñanza de los estudiantes de diseño de sistemas operativos. MINIX era un sistema operativo funcional, parecido a Unix, pero tenía algunas restricciones, especialmente con el sistema de archivos. Después de todo, el código fuente tenía que ser lo suficientemente pequeño como para asegurar que se cubriera adecuadamente en un solo semestre universitario. Alguna funcionalidad tenía que ser sacrificada.
Para entender mejor el funcionamiento interno del Intel 80386 en su nuevo PC, un estudiante de informática llamado Linus Torvalds escribió un sencillo código de cambio de tareas como ejercicio de aprendizaje. Eventualmente, este código se convirtió en un proto-kernel elemental que se convertiría en el primer kernel de Linux. Torvalds estaba familiarizado con MINIX. De hecho, su primer kernel fue desarrollado en MINIX usando el compilador GCC de Richard Stallman.
Torvalds decidió hacer su propio sistema operativo que superase las limitaciones del MINIX diseñado para la enseñanza. En 1991, hizo su famoso anuncio en el grupo Usenet de MINIX, pidiendo comentarios y sugerencias sobre su proyecto.
Por lo tanto, Linux no es realmente un clon de Unix. Si se tratase de un clon de Unix, se trataría efectivamente de Unix. La palabra «clon» implica que una pequeña parte del original se utiliza en una nueva versión del original. Linux fue creado desde cero, para tener el aspecto y la sensación de Unix, y para satisfacer las mismas necesidades. Es menos un clon y más una réplica.
Pero de cualquier manera, Linux era un kernel en busca de un sistema operativo; GNU era un sistema operativo en busca de un kernel. En retrospectiva, lo que sucedió después parece inevitable. También cambió el mundo.
¿Quién se encarga del desarrollo?
Una distribución de Linux es la suma de muchas partes diferentes, procedentes de muchos lugares diferentes. El núcleo de Linux, el conjunto de utilidades básicas de GNU y las aplicaciones de usuario se combinan para hacer una distribución viable. Y alguien tiene que encargarse de la combinación, el mantenimiento y la administración, al igual que alguien tiene que desarrollar el kernel, las aplicaciones y las utilidades básicas. Los responsables de la distribución, y las comunidades de cada distribución, todos juegan su papel en dar vida a una distribución de Linux tanto como lo hacen los desarrolladores del núcleo.
Linux es el resultado de un esfuerzo de colaboración distribuido realizado por voluntarios no remunerados, por organizaciones como Canonical y Red Hat, y por individuos patrocinados por la industria.
Cada versión comercial de Unix se desarrolla como una entidad única y coherente utilizando equipos de desarrollo internos o subcontratados estrechamente controlados. A menudo, éstas tienen un kernel único y están diseñadas específicamente para las plataformas de hardware suministradas por cada proveedor.
Los descendientes gratuitos y de código abierto del sistema Unix BSD, como FreeBSD, OpenBSD y DragonBSD, utilizan una combinación de código BSD heredado y código nuevo. En la actualidad son proyectos apoyados por la comunidad y administrados de manera muy parecida a las distribuciones de Linux.
Normas y cumplimiento
En general, Linux no cumple ni con la Single Unix Specification (SUS) ni con la Portable Operating System Interface (POSIX). Intenta satisfacer ambos estándares sin verse limitado por ellos. Ha habido una o dos excepciones, como K-UX de Inspur, un Linux chino que es compatible con POSIX.
Un verdadero sistema Unix, como las ofertas comerciales, debe cumplir con las especificaciones establecidas. Algunos derivados de BSD son compatibles con POSIX, incluyendo todas las versiones de MacOS excepto una.
Marcas comerciales y derechos de autor
Linux es una marca registrada de Linus Torvalds. La Fundación Linux gestiona la marca en su nombre. El kernel de Linux y las utilidades del núcleo se publican bajo varias licencias públicas generales GNU «copyleft». El código fuente está disponible gratuitamente.
Unix es una marca registrada del Open Group. Está registrado como propiedad intelectual, no libre y de código cerrado. Los nombres de las variantes, como AIX, HP-UX y Solaris, son marcas registradas de sus respectivas organizaciones.
FreeBSD está registrado por el Proyecto FreeBSD, y el código fuente está disponible.
Diferencias en el uso
Desde la perspectiva de la experiencia del usuario, no hay muchas diferencias visibles en la línea de comandos. Debido a los estándares POSIX y su cumplimiento, el software escrito en Unix puede ser compilado para un sistema operativo Linux con una cantidad limitada de esfuerzo de portabilidad. Los scripts de Shell, por ejemplo, pueden ser usados directamente en Linux en muchos casos con poca o ninguna modificación.
Algunas de las utilidades de línea de comandos tienen opciones de línea de comandos ligeramente diferentes, pero esencialmente el mismo arsenal de herramientas está disponible en cualquiera de las dos plataformas. De hecho, AIX de IBM tiene una caja de herramientas AIX («AIX Toolbox») para aplicaciones Linux. Esto permite al administrador del sistema instalar cientos de paquetes GNU (como Bash, GCC, etc.).
Las diferentes variantes de Unix tienen diferentes interfaces gráficas de usuario (GUI) disponibles, al igual que Linux. Un usuario de Linux familiarizado con GNOME o Mate tendrá que acostumbrarse la primera vez que se encuentre con KDE o Xfce, aunque no tardará en familiarizarse. Es similar al conjunto de GUIs disponibles en Unix, como Motif, Common Desktop Environment, y el X Windows System. Todas son lo suficientemente similares como para ser accesibles para cualquiera que esté familiarizado con los conceptos de un entorno de ventanas con diálogos, menús e iconos.
Aprenderás más sobre las diferencias mientras administras los sistemas. Por ejemplo, hay diferentes mecanismos de inicio. Los derivados del System V Unix y las ramas BSD tienen diferentes sistemas de inicio. Las variantes libres BSD mantienen los esquemas de inicio BSD. Por defecto, las distribuciones de Linux utilizarán un sistema de inicio derivado del System V de Unix o systemd.
Linux vs. Unix
Al igual que ocurre con los coches, si puedes conducir uno, puedes conducir el otro, incluso si al principio resulta un poco difícil.
Dejando el precio a un lado, las diferencias en la filosofía, la licencia, el modelo de desarrollo, la organización de la comunidad y el tipo y estilo de gobernanza son mayores y más significativas que las diferencias en la línea de comandos entre un sistema y otro. Por lo tanto, las mayores diferencias no son las que puedes ver en la pantalla.