Revisando otros artículos me topé con esta pequeña pregunta que me causó mucha gracia, es verdad que una de las primeras cosas que nos sacan en cara usuarios de otros sistemas (excepto FreeBSD) es que no usamos los GUIs. A decir verdad, a mi también me pareció bastante curioso al principio de mi viaje por GNU/Linux. Debo admitir que con el pasar del tiempo, ahora utilizo mucho más la línea de comandos que cualquier otro programa con GUI, y muchas veces prefiero programas dentro de la línea de comando a programas más elaborados con GUIs deslumbrantes.

El mito

En realidad esto no es más que un mito urbano, pues a diferencia de otros sistemas cuyos nombres no serán mencionados aquí, es en GNU/Linux donde realmente tienes libertad de elección. Ya quisiera que en otros sistemas existiera la versatilidad que existe aquí. Pero veamos en más profundidad este asunto, que sino no quedan claras muchas cosas:

Servidores

Todos hemos oído de la palabra Servidor, algunos creen que son esas super computadoras que alimentan Google o Amazon, o la que está en tu empresa. Pero la realidad es que un Servidor responde a un modelo de trabajo. Usamos este término para hacer referencia a que tenemos un programa que está a disposición de los usuarios (clientes) y les entrega algo. Un ejemplo básico es Apache, el cual se usa para servir páginas web en internet. Este programa entrega html a los clientes que lo soliciten.

Servidor de imágenes

Pero no solamente un servidor puede estar en las super computadoras que hacen posible Google y otras muchas empresas, incluso la laptop más «antigua» puede ser un servidor, de manera especial cuando hablamos de imágenes. Todos corremos un servidor de imágenes en nuestras laptops para poder tener una pantalla funcional, en este caso el servidor y el cliente son la misma persona. El ejemplo más común es X (conocido como xorg-server en muchas distribuciones) y su nuevo reemplazo Wayland . No vamos a dar una explicación detallada de por qué el org, o cómo es que Wayland funciona, o las filosofías que existen atrás de estos grandes proyectos, pero si vamos a dejar claro que es gracias a ellos que nosotros podemos contar con un navegador web como Firefox o Chrome, o muchos otros programas.

Gestor de ventanas

Los gestores de ventanas trabajan directamente con el servidor de imagen, su trabajo es de un nivel más «bajo», puesto que gestionan (valga la redundancia) cómo es que se crean, modifican, cierran las ventanas. Suelen ser bastante simples y sobre estos se construyen los entornos de escritorio. La lista es grande, pero solo dejaré aquí la idea de que son softwares minimalistas, los cuales permiten tener un control bastante básico del servidor de imagenes.

Entorno de escritorio

Un conjunto más especializado de software que permite no solamente un funcionamiento del servidor de imagen, sino también proporcionan capacidades de personalización. Dentro de estos los más antiguos y pesados son KDE y GNOME, pero también tenemos entornos más ligeros como LXDE o Mate, Cinnamon, etc.

CLI (Command Line Interface)

Tras un breve repaso por el mundo de los servidores de imágenes, ahora nos centramos nuevamente en nuestro tema. CLI, implica todo aquel programa que se ejecuta por línea de comando, ya sea git , vim , weechat , o bueno, cualquier otro que se les venga a la mente. Pueden apreciar que estoy hablando de programas que si bien se ejecutan en la línea de comando, muestran una especie de «interfaz gráfica» como weechat o vim . Para todos los que no los hayan probado, se los recomiendo, son básicamente los que uso todo el día.

Por qué CLI es mejor que GUI

Intentemos algo bastante sencillo 🙂 El otro día quería trabajar en un parche para Portage (el gestor de paquetes de Gentoo). Como todo buen proyecto colaborativo, la cantidad de líneas de código supera los 70k. Intenten abrir eso en un IDE como NinjaIDE (Portage está escrito en Python) y no tardarán en notar que en lo que empieza a cargar la pantalla, su máquina se pone sumamente lenta (al menos mi i7 si lo hacía) y esto solamente tratando de abrir el código y cambiar al color por defecto de «ayuda».

Ahora intenten hacer lo mismo con vim , a mi me cargó en cuestión de milésimas de segundo, y al mismo tiempo que ponía los colores «bonitos» y todo lo demás.

CLI ha estado mucho antes

Algunos aquí dirán que esos programas son antiguos, yo los llamo robustos. Si pudiesen ver la cantidad de horas invertidas en construir emacs , vim , gdb , y otros cientos de programas para consola, podrán notar que la cantidad de código y funcionalidades es tan grande que practicamente ya han solucionado todo lo que necesitaban solucionar. Muchos GUI para programas que ya son robustos en su CLI jamás tendrán la misma cantidad de funcionalidades, esto sencillamente porque si hicieramos una pestaña para cada subcomando disponible de por ejemplo git , nos perderíamos entre las opciones y sería contraproducente, porque haría difícil el trabajar.

CLI es más rápido

La mágia comienza con la tecla Tab , esta no solamente es tu mejor amiga al momento de navegar por los escritorios en tu terminal, sino que cuando está bien configurada, te permite acortar sentencias largas a 2 letras y un Tab, 3 letras y un Tab, o incluso una letra y un Tab.

Pero esta no es la única ventaja, los que hemos tomado el tiempo de aprender vim o emacs podemos decir que aunque la curva de aprendizaje sea un poco mayor a la de los IDE de estos días, al final los resultados de productividad son asombrosos, uno no se imagina el tiempo que puede perderse al mover un mouse. El tener las manos en el teclado el 90% del tiempo no solo enseña concentración, además, el hecho de escribir tanto en el teclado te hace bastante ágil y productivo. Y ahora volvemos al punto anterior, al llevar tanto tiempo con nosotros, programas como estos ya cuentan con todas las funcionalidades que se le puedan ocurrir a alguien, un dicho bastante común para los que usamos vim me viene a la mente:

Si usas más de 4 teclas, puede haber una forma mejor.

Sencillo pero poderoso, vim te permite hacer todo con la gran cantidad de teclas y combinaciones posibles, uno nunca deja de aprender, pero no deja de ser verdad también que para poder usarlo no es necesario saberlas todas, bastan unas 10 o 15 para empezar a ser más productivo.

CLI te da el control absoluto

Cuando uno ejecuta operaciones con el mouse, o programas desde el servidor de imágenes, no siempre se tienen presente todas las configuraciones extra que se ejecutan al momento de dar click, esto no sucede con la terminal, aquí tu tienes el poder absoluto de lo que se ejecuta o no, con qué opción o hasta qué punto. Con el tiempo te vas dando cuenta que necesitas menos de lo que piensas, y eso te ayuda a hacer las cosas de forma más centrada.

GUI también tiene lo suyo

No voy a decir que todos deberíamos usar CLI siempre, eso tampoco es lo ideal, yo mismo uso GUIs casi todo el tiempo, para escribir este post estoy usando mi Chrome, y para ver mis correos uso Evolution (aunque también uso mutt bastante últimamente). Y supongo que este es el mayor mito de todos… que la gente piense que GNU/Linux son solamente termianles, a mi me gusta mi entorno de escritorio, es bastante minimalista, pero a mi me gusta así 🙂 Y usualmente solo tengo dos o tres programas corriendo, mi Chrome, mi Evolution y mi terminal 🙂

Estos son unos de los motivos por los que me gustan tanto las CLI y por los que los invito a darles una oportunidad, puede que después terminen como yo usando más CLIs que GUIs 😉 Saludos