lunes, 28 de abril de 2014

Escritorios en Linux y sus Diferentes sabores

Escrito por Enrique Pascalin (Erparom)  

**** ESCRITORIOS EN LINUX ****

Existe un poco de confusión sobre lo que significa un "Escritorio en Linux", y es que se compone de tantas cosas y hay tanta variedad, que es fácil perderse en términos, conceptos y demás.

Intentaré explicar en este post, lo que es un escritorio en Linux, cuales son sus componentes y un poco de su historia.

NOTA: Este es uno de mis post largos, pero pienso muy esclarecedor e interesante, ojalá lo disfruten. Pueden saltar entre subtítulos si no les interesa el encabezado.

**** UNA BREVE HISTORIA ****
Entre 1973 y 1982, se crearon las primeras interfaces gráficas para sistemas operativos. Xerox creó Alto en 1973 y posteriormente Star en 1981. De Apollo Computer hubo uno similar en 1981 llamado Display Manager.
Para la segunda generación, que realmente fue la que llegó al público, Apple tomo prácticamente a modo de plagio los esfuerzos de Xerox desde 1979 y crearon a partir de ellos a Lisa en 1983 y luego Macintosh en 1984.
En el mundo Unix, se formó el Andrew Project en 1982 y Blit Terminal en 1982. Dieron paso a un entorno gráfico en 1983 llamado W (desarrollado en la Universidad de Stanford). W dió paso a X, proyecto que hizo el MIT en 1984. X es el padre de todos los entornos gráficos en Unix, Linux, FreeBSD, etc.
(Windows 1.0 de Microsoft no llegó hasta 1985, siendo una copia del código fuente que Apple robó a Xerox y que Microsoft robó a Apple cuando Bill Gates trabajó algunos meses para Steve Jobs).
Todos estos escritorios tenían la idea de representar una metáfora llamada WIMP (Window, Icon, Menu, Pointing Device) que se traduce como ventanas, iconos, menús y dispositivo apuntador (mouse).
Todos los sistemas gráficos para sistemas operativos siguieron desarrollándose durante la década de los 90s, dónde Microsoft trabajó en Windows 95, Mac compró NeXT y tomó su sistema basado en Unix (mas no en X) para crear la interfase de Mac OS X, para lo cual, tomó el kernel de software libre FreeBSD y le puso encima el entorno gráfico que había fabricado NeXT para equipos Unix, como competencia de X. A esto es a lo que hoy en día llamamos Mac OS X.
Debido a que X era muy primitivo en ese tiempo, varios grupos de programadores comenzaron a crear interfaces mas estilizadas, fabricadas encima del Sistema X. Por un lado, Sun Microsystems y AT&T (dueños de unix) crearon una interfaz llamada Open Look en conjunto con la gente de Xerox, veteranos en el tema. OpenLook competía con Motif, que fue el desarrollo de la comunidad de código abierto para competir con Windows 3.11 que fue el primer Windows popular.
A finales de los 90s, otros grupos comenzaron a construir interfaces mas complejas, como CDE (hijo directo de Motif), KDE fue fundado en 1996 en Alemania para competir con CDE y Xfce fue un clon directo de CDE con algunas mejoras en 1996. Gnome llegó desde México en 1999 para competir con ambos.
Hoy en día, existen tantos entornos de escritorio, interfaces gráficas para estos, manejadores de ventanas y similares, que el Free Software es un mundo de alternativas de todas formas, colores y sabores.
**** COMPONENTES DE UN ESCRITORIO ****
Con tantos términos, vamos a esclarecer un poco cada concepto y componente.
* SISTEMA GRÁICO: En el primer nivel (layer) de todo escritorio gráfico, existe un Sistema Gráfico de Despliegue de mapas de Bits. En Linux existen X (X11 o XWindow System) desde los 80s y recientemente Wayland (2008), como un reemplazo para X11. Esta es la capa que interactúa directamente con el hardware. X11 está originalmente escrito en lenguaje C, al igual que Wayland. (La importancia de dicho lenguaje es fundamental en Unix / Linux)
* ENTORNO DE ESCRITORIO: En el segundo nivel o layer es el Entorno de Escritorio, que generalmente toma una librería de Widgets (como Motif, GTK+ o QT4) para construir una interfaz completa sobre el sistema gráfico. Generalmente los Entornos de Escritorio incluyen un Manejador de Ventanas, un Manejador de Displays, un Shell de Escritorio, una Librería de Widgets y posiblemente un Compositor de Ventanas, para decorar la forma y funcionalidad de las mismas. Los Entornos de Escritorio (completos) mas populares para X son KDE, Razor-QT, Gnome, Xfce, LXDE. En el caso de Wayland, muchos están portando su escritorio, existen diversos experimentos de Canonical (MIR) Gnome (Gnome3) y KDE (KDE4+).
* LIBRERIA DE WIDGETS: Las librerías de widgets son las librerías de componentes sobre los que un entorno de escritorio se integra. Las mas populares son GTK+ escrita en C y QT4 escrita en C++. También existen otras mas exóticas como GNUStep que usa Objective-C como Mac OS X.
* MANEJADOR DE DISPLAYS: La mayoría de escritorios requieren de una manera de manejar los displays (o dispositivos de salida / monitores) lo cual generalmente también está vinculado con un inicio de sesión en un determinado escritorio. KDE usa kdm, Gnome usa gdm, LXDE usa lxdm, etc...
* MANEJADOR DE VENTANAS: (Lo que muchos confunden con Entorno de escritorio). El manejador de ventanas, es la forma en que un escritorio despliega las aplicaciones en pantalla a modo de ventanas, maneja cual tiene foco, cual esta minimizada, cual está cerrada, etc. Se han escrito varios manejadores de ventanas además de los default que tiene cada escritorio. Por ejemplo, KDE usa Kwin, Gnome 2 usa Metacity mientras que Gnome 3 usa Mutter (que fue pensado para Wayland), Xfce usa Xfwm4, LXDE usa OpenBox, etc. Es posible usar diversos manejadores de ventanas en el mismo escritorio o switchear entre ellos. Los manejadores de ventanas tienen 3 tipos:
a)-Composición (Compiz, KWin, Metacity, Mutter, Xfwm) que es el tradicional.
b)-Tiling (Awesome, Dwm, i3, Ion, XMonad, etc)
c)-Stacking (4Dwm, AfterStep, Fluxbox, OpenBox, etc)
Tienen paradigmas distintos, y es posible tener sobre un mismo escritorio (digamos Gnome 2) a varios gestores de ventanas como OpenBox, Metacity y Compiz.
* SHELL GRÁFICO: Para cambiar la funcionalidad base de un Entorno de Escritorio, se han diseñado una especie de Skins que implementan una visualización y/o funcionalidad distinta. Es por ello, que los entornos de escritorio modernos, se basan en shells gráficos para poder personalizar sus componentes. Existen diversos Shells gráficos populares, que son escritos por encima de un entorno de escritorio para modificarlo; por ejemplo, Cinnamon, Enlightenment, GNOME Shell, Hawaii, KDE Plasma, Maynard y Unity son Shells escritos para tener un escritorio distinto al que están basados. El caso de Enlightenment, es además de shell gráfico un compositor de ventanas, por lo que siendo muy sencillo, se le llama escritorio parcial, que puede fungir como escritorio completo.
* COMPOSITOR DE VENTANAS: Funciona por encima del manejador de ventanas, y la idea es desplegar las ventanas de una forma, estilo o efectos particulares. ejemplos: Enlightenment, KWin, Mutter, Muffin, MIR, Weston.
**** ENTORNOS MODERNOS MAS POPULARES ****
Dadas las explicaciones de las previas secciones, es fácil entender porqué existe tanta confusión con los entornos gráficos en Linux / Unix / FreeBSD. Mientras que Windows y Mac OS X tienen una sola versión de cada cosa y cada versión suele ser incompatible con la anterior (obsolescencia programada para sacar mas dinero), muchos usuarios nuevos y no tan nuevos en Linux se confunden con tantas opciones.
Así que sin importar si son Entornos de Escritorio Completos, solo Shells o pequeños Manejadores de Ventanas, mientras se presenten como la alternativa gráfica de una u otra distribución Linux, pondré aquí a los mas populares, su propósito general y a quién están dirigidos.
*Gnome 3: Gnome 3 usa el sistema de Shells, su shell por default es Gnome Shell. Rompe el paradigma convencional de escritorio y fusiona un poco las ideas de Mac OS X, Enlightenment y otros para formar un escritorio con una apariencia moderna. Usa GTK3 y en vez de construir sus interfaces directamente en C o Python, usa HTML5 y Javascript. Gnome3 esta rápidamente migrando de X a Wayland. Gnome3 es el mas usado, pero irónicamente, ha sido uno de los mas criticados por expertos. Cuando salió, el mismo Linus Torvalds no quiso migrar a él; probó KDE4 que tampoco le gustó y terminó pasando a Xfce. Recientemente le dio una oportunidad. Gnome3 esta diseñado para competir con Windows 8 y poder ser usado en diversos dispositivos, aunque en esto último ha fallado por la gran cantidad de recursos que consume. Nació en EUA (originalmente en México)
*KDE4: Es la última generación de escritorios KDE, basado netamente en QT4, se enfoca en ser altamente configurable en vez de sencillo. Su consumo de recursos también es alto, y al estar basado 100% en C++ con QT4, tiene pocas variantes. Se considera elegante, muy completo y lleno de herramientas muy interesantes. Es similar a Windows 7 (De hecho hay buenas suposiciones al respecto de que Windows Vista/7 se basó en KDE 4). Nació en Alemania
*Mate: Este proyecto nació porque Gnome abandonó por completo el soporte y actualizaciones para Gnome 2. Por lo que en Argentina un talentoso programador hizo un fork de Gnome 2, para estabilizarlo, trabajar en sus bugs y continuando con su soporte. Mate es una elección sensata en cuanto a rendimiento / recursos y conserva el paradigma convencional de escritorio.
*Unity: Este es un Shell para Gnome 3 inventado por Canonical en lo que tienen listo MIR. La idea de Unity es portarlo a diversos dispositivos como smartphones, tablets, smartTVs, etc... Por lo que su interface resulta siempre algo que parece diseñado minimalista para una pantalla touch. Es poco configurable y ha sido el escritorio de Linux mas criticado de la historia, por detrás del mismo Gnome 3. Unity lo Usa Canonical en Ubuntu a partir de la versión 11.04 Unity está creado en UK
*Cinnamon: Esta fue la respuesta de Linux Mint a Gnome 3. Su creación es completamente análoga a Unity, pero por tratar de rescatar el paradigma convencional de escritorio por encima de Gnome 3, su adopción ha sido muy existosa. Linux Mint como esfuerzo comunitario, ha sido desarrollado en diversas partes del mundo
* Xfce: Xfce es muy antiguo. La idea central es el rendimiento y el minimalismo (a diferencia de los previos). Por lo que puede ejecutarse en diversos entornos con bajos recursos. Xfce es elegante, sencillo y minimalista. Su desventaja es que no es intuitivo. Se basa igual que Gnome 2 en GTK+2 por lo que es sumamente portable con dicho sistema y con Mate. No incluye tantas aplicaciones como KDE o Gnome precisamente por perseguir el minimalismo y el bajo consumo de recursos. Su paradigma es distinto al escritorio convencional.
*LXDE: Es el mas ligero de los entornos de escritorio. Debido a ello, en ocasiones se requiere un esfuerzo no despreciable para configurarlo, sin embargo, funciona con tan escasos recursos, que puede correr en las máquinas mas viejas. LXDE recuerda mucho a Windows desde 98 hasta Vista. Usa OpenBox como gestor de ventanas. Originalmente basado en GTK, LXDE a partir del 2013 fue portado a QT4 por los problemas que GTK3 presentaba.
Esta lista no es exhaustiva.
**** DISTROS Y SUS ENTORNOS ****
Muchas distros elaboran versiones de acuerdo a cada escritorio; como Canonical que tiene Ubuntu para Unity, Xubuntu para Xfce, Lubuntu para LXDE, Kubuntu para KDE, etc. Otro caso es Mint, que tiene escritorios por default para Cinnamon, Mate, Xfce y KDE.
Muchas otras distros tienen uno por default siendo muy sencillo instalar cualquier otro, como Fedora que usa Gnome 3.
Otras distros mas, se basan precisamente en el uso de 1 solo escritorio altamente costumizado como Bodhi, Elementary OS, Zorin, etc.
Por último, hay distros en los que cualquier (o casi cualquier) entorno de escritorio se puede instalar desde el instalador y otros mas tan sencillamente como con una sola instrucción. Este es el caso de Arch, Debian, etc.

**** CONCLUSIONES ****
Hay distros para todos gustos y tipos de computadoras. mi veredicto personal, es usar un equilibrio entre un escritorio muy completo, uno muy ligero y uno fácil de configurar, además de uno muy estable, no muy nuevo para que no tenga muchos problemas y fallos. Y para mí, el único que cubre dicho criterio, es Xfce y Mate. Yo, me quedo con Mate.


No hay comentarios: