Mostrando las entradas con la etiqueta posix. Mostrar todas las entradas
Mostrando las entradas con la etiqueta posix. Mostrar todas las entradas

La filosofía UNIX: mucho más que un sistema operativo.

La filosofía UNIX: mucho más que un sistema operativo.

Vamos a entrarle a un tema que, para los que estamos en el palo del software libre y el open source, es casi un evangelio: la filosofía UNIX. Y no, no se trata solo de un sistema operativo viejo: es una forma de pensar; una serie de principios que, si los aplicamos, nos facilitan la vida una barbaridad.

Imaginate que estás construyendo algo complejo... ¿Empezarías por crear un monstruo enorme que lo haga todo a la vez, o preferirías armar pequeñas piezas que hagan una sola cosa, pero que la hagan de diez, y luego las unís? La filosofía UNIX es eso: hacé programas que hagan una cosa y que la hagan bien. Cortita y al pie.

Pero no termina ahí la cosa, ni a palos. Otro pilar fundamental es que cada programa pueda interactuar con otros. Pensá en un buen carpintero: tiene un martillo, un serrucho, un cepillo... herramientas específicas. No tiene una "súper-herramienta" que martille, corte y cepille al mismo tiempo y mal. El martillo hace su laburo, el serrucho el suyo. Y lo mejor es que puede usar cada herramienta cuando la necesita, combinándolas para lograr cosas espectaculares.

Así funciona UNIX: comandos chiquitos, simples, que se pueden encadenar. ¿Querés buscar un texto en un archivo y luego contarlo? grep para buscar, wc -l para contar. Y los conectás con una tubería (|), ¡listo! ¿Para qué más? Sencillo, elegante, potente. Esto nos da una flexibilidad que "te la voglio dire".
Podemos armar soluciones a medida con herramientas que ya existen, sin reinventar la rueda cada dos por tres... Como hace Ubun... Buéh, ya me empiezo a ir por las ramas.

Además, te empuja a pensar en los datos como texto plano. ¿Por qué? Porque es universal, fácil de procesar, leer y entender. No te metés en líos de formatos binarios complicados que te atan a un software específico. ¡Libertad pura!

En resumen, la filosofía UNIX es sinónimo de modularidad, simplicidad y "reutilizabilidad", entre otros pulcrísimos aspectos. Es la base de un montón de cosas que damos por sentadas en nuestro día a día digital, especialmente en el mundo de lo digital-libre. Es la vieja escuela que sigue vigente porque, simplemente, funciona. ¡Y funciona bien!

POSIX

POSIX

¿Qué es? 

Empiezo por el principio, POSIX es un acrónimo en inglés que significa Portable Operating System Interface for uniX, literalmente significa interfaz portable de sistemas operativos para Unix. Te recontra recomiendo que inviertas unos minutos en la lectura de la entrada de Wikipedia dedicada al tema (https://es.wikipedia.org/wiki/POSIX) para hacerte una idea cabal de qué es y qué hace POSIX.

Quiere decir que todos los sistemas tipo Unix como Linux BSD y otros que respeten este estándar, van a ser interoperables, es decir una aplicación POSIX hecha para un Unix funciona en otro sin necesitar ninguna modificación. Compatibilidad es la palabra mágica acá. Sin este estándar esta portabilidad o compatibilidad no es exigida y por tanto no está garantizada, es decir que si mañana un sistema deja de ser compatible con otros Unix diferentes a aquel en que fue creado, es válido. 

¿Es necesario? 

Para ponerlo en una palabra, SI. Más que necesario, diría que esencial porque permite la existencia de un ecosistema donde con mínimo esfuerzo un mismo programa puede ejecutarse en otro sistema operativo diferente de aquel en que fue concebido como lo hacen Apache, Postfix, X y tantos otros. Esto quiere decir que por ejemplo, un sistema escrito en el lenguaje Python en un equipo con MINIX puede compilarse sin modificar y va a funcionar en en equipo que corra QNX.

Hay una cantidad muy significativa de sistemas tipo Unix que adhieren  la norma. Estos sistemas operativos conforman un ecosistema donde los programas funcionan casi igual. Esto está pensado para reducir la curva de aprendizaje y costos a la hora de plantear una migración ya que es poco lo que hay que  cambiar para que un programa se ejecute correctamente y un usuario formado dentro del ecosistema puede con un mínimo esfuerzo, utilizar su conocimiento previo para usar la aplicación en un sistema operativo diferente. Como ejemplo, si un usuario se forma con Xfce en Linux, tendrá que hacer muy poco trabajo para operar un entorno Xfce instalado en un sistema BSD.

¿Qué pasa si se ignora?

Nada aparente ya que las aplicaciones siguen funcionando exactamente igual en el sistema operativo en que fueron creadas, sin embargo, si tratas de generar una compilación en un sistema operativo diferente es perfectamente posible que no lo hagan perdiendo la portabilidad, fragmentando el ecosistema al limitar los entornos de ejecución. Quiero decir que una aplicación puede funcionar sólo en un puñado de sistemas operativos acotando las opciones de los usuarios que pueden usar la aplicación A en el sistema operativo B, pero no en el C ni en ningún otro.

Pero  no te lo cuento, te lo muestro con un ejemplo. OpenBSD es un Unix POSIX, systemd es un init no compatible, es decir, no es posible ejecutar systemd en ningún equipo que corra con BSD. Xorg es compatible y puede usarse en BSD, Wayland no. Podría seguir, pero creo que con esos ejemplos alcanza para visualizar el problema. Bueno, un ejemplo más y no jorobo más. GNOME depende de systemd y systemd no adhiere a POSIX, luego GNOME tampoco, sistemas sin systemd como varios Linux y todos los *nixes no tienen cómo.

Conclusión

A modo de resumen, POSIX es una interfaz que permite compatibilidad a nivel de API entre diferentes sistemas operativos, es decir que un programa compilado en un sistema POSIX puede ser compilado en otro sin cambios y va a funcionar igual. Por eso es necesario para mantener unido al ecosistema, garantizando que todos los sistemas operativos POSIX puedan tener las mismas aplicaciones funcionando igual reduciendo la curva de aprendizaje cuando un usuario cambia de un sistema a otro y reduciendo drásticamente el costo de portar aplicaciones entre sistemas. Ignorar este protocolo puede parecer conveniente ya que en algunos casos se puede lograr mayor velocidad, el problema es que el costo es salirse de este ecosistema y reducir el alcance. Es decir que por ejemplo una aplicación no POSIX desarrollada para sistemas x86 no necesariamente tiene que funcionar en equipos ARM. Si hay una funcionalidad no provista por POSIX hay que expandirlo para hacer más fuerte el ecosistema, no salirse.

Flag Counter Visitas previas a la existencia de este contador: 3433

Artículos aleatorios

    Páginas: