sábado, 12 de octubre de 2013

Linux es un Unix. Linux no es un Unix. Entonces...¿qué es?


Unos te dirán que sí, otros que no, muchos no mojarán y te dirán que es un Unix-like. Pero ¿qué es realmente Linux? Para empezar, no podemos decir ni que es un sistema operativo Unix, ni un sistema operativo Unix-like, ni siquiera que es un sistema operativo. Es un kernel o núcleo de sistema operativo y por tanto le hacen falta más complementos para llegar a ser un sistema operativo. Por ejemplo, las distribuciones que utilizamos son sistemas operativos completos (vease GNU/Linux).
Debes saber que no existe una definición clara de lo que es Unix y por tanto esto lo hace más confuso aun. Si no sabemos qué es exactamente Unix...como saber si algo es o no Unix... Muchos damos por hecho que sistemas operativos como HP-UX, BSD y Tru64 son Unix 100%, pero estos se diferencian del Unix auténtico más que Linux en cuanto al funcionamiento se refiere. Así que con esto no aclaramos nada.

Si nos ceñimos a esto, podemos encontrar Unix genéricos, Unix registrados y Unix funcionales. Los Unix genéricos son aquellos sistemas que han tenido algún tipo de conexión historica con el Unix auténtico de la AT&T, es decir, todos aquellos que descienden de Unix (BSD, SunOS/Solaris, HP-UX, Tru64, UnixWare, OpenServer, IRIX,...). En cuanto a los Unix registrados, son todos aquellos sistemas comerciales clasificados por la OpenGroup y con certificación de que cumplen con a Single Unix Specification. Estos Unix registrados tienen licencia para emplear el nombre Unix comercialmente hablando (p.e.: IBM System V, Apple Mac OS X 10.5, Darwing, ...). Por último, un Unix funcional es aquel Unix-like que se comporta como un Unix, sean o no (p.e.: Minix, Linux) descendientes directos de Unix, pero que no están registrados como tales.

Luego vienen el tema de estándares SUS (Single Unix Specification) y POSIX (Portable Operating System Interface + la X de UNIX). En los años 80 se motivaron una serie de esfuerzos para marcar unos estándares para los desarrolladores de software para sistemas Unix o Unix-likes. Estos esfuerzos terminaron con la creación de SUS y la actual POSIX que determinan los estándares de las llamadas al sistema operativo y están definidos por la IEEE. POSIX ha ido evolucionando en distintas versiones a lo largo de los años y se han ido añadiendo parámetros. Ahora se puede decir qué sistemas operativos son totalmente compatibles con POSIX (AIX, A/UX, BSD OS, DSPnano, HP-UX, INTEGRITY, IRIX, Mac OS X 10.5 en adelante, LynxOS, Minix, MPE/IX, QNX, Solaris, UnixWare, velOSity,...), cuáles son mayormente compatibles con POSIX (BeOS, FreeBSD, GNU/Linux, NetBSD, RTOS, OpenBSD, OpenSolaris, PikeOS, Sanos, SkyOS,...). Pero es que incluso algunos productos para Microsoft Windows y subsistemas de los Windows NT se atañen a POSIX. Y jamás llamaríamos a un Windows un Unix ni un Unix-like, ¿verdad? Así que esto tampoco resuelve nuestra cuestión inicial. Quizás POSIX esté mal planteado y no se deba centrar en qué hace sino en cómo lo hace.
Si por otro lado decimos que Unix es todo aquel que tiene código Unix entre sus líneas de código fuente... Linux puede ser un Unix o no. En esto hay mucha más controversia. De hecho marcas como IBM fueron involucradas en los famosos juicios por la patente de Unix al insinuar que IBM (uno de los principales desarrolladores del kernel Linux) había cedido parte del código de su sistema AIX a Linux (código referente a interfaces de red). Luego se demostró que no fue así, aunque aun hay ciertas dudas y cuestiones legales en las que no voy a entrar...
Si analizamos el proyecto GNU (GNU is Not Unix), un proyecto para desarrollar un sistema operativo compatible con Unix y de hecho muchas de esas herramientas las usan tanto Unix comerciales y registrados como otros Unix-like libres, entre ellos Linux.
En cuanto a la filosofía de los hackers que hicieron posible Unix, entonces quizás un FreeBSD, Linux y algunos de estos sean más Unixs que muchos considerados como Unixs registrados, certificados y con pedigrí que se comercializan. En cuanto a lo comercial, no pueden ser más distintos. Unix se vendía por precios abusivos (igual que muchos Unixs registrados y comerciales actuales) y Linux es gratuito o de distribuye por cantidades no muy elevadas de dinero.
Incluso Linux ha influido en otros Unix-likes y Unixs registrados...(vease LSB/FHS).Esto no quiere decir que ahora tengamos que sacar otra guerra en si los demás son Linux-likes ni mucho menos. Simplemente quiero decir que la AT&T (Bell Labs) crearon un sistema operativo muy bueno llamado Unix y que muchos otros han querido seguir sus pasos, con o sin certificado, con o sin relación historica, con o sin código Unix... ¿Creeis que aunque un Mac OS X sea un Unix registrado su código es 100% Unix? ¿Creeis que aun teniendo partes basadas en BSD su código no ha sido ya más que modificado, vuelto a modificar y requetemodificado por los desarrolladores?
Si, no, a medias, si, no, a medias... esto es la impresión que nos da al leer todo lo anterior. ¿Cuál es la respuesta simple y verdadera a todo esto? Recompilemos alguna de la información anterior sobre Linux. Ya sabemos que es un Unix funcional y que es mayormente compatible con POSIX. Yo tengo claro que Unix auténtico solo existió uno, el de la AT&T y que tras él hubo muchas copias y derivados. Lo de diferenciar entre Unix registrado y Unix-like o funcional, etc., son chorradas comerciales que se han inventado para dar prestigio a su producto algunas compañías. Además, si AT&T fuese continuado el desarrollo de Unix hasta nuestros días, ¿quíen sabe a cual de estos sistemas se parecería más en la actualidad? Para mí Unix ha dejado un legado, una filosofía y muchos otros han querido unirse a ella creando nuevos sistemas. Así que para mí la pregunta de si Linux es más o menos Unix cerece de sentido. ¿Es más coche un Toyota o un Fiat o un BMW que un Audi? Pero seguro que si BMW dijese que es un "coche" registrado y que es más coche que el resto, habría muchos que comprarían BMW en vez de otros... ¡¡¡Pues de eso se trata!!!