Un mes con Atom

Un poco de contexto

He sido usuario de Vim durante unos dos años y de Emacs durante varios meses. Desde hace más o menos un mes, estoy con Atom.

Lo cierto es que lo probé varias veces mientras aún estaba en Beta pero lógicamente era poco estable, el ecosistema de plugins muy cambiante y el editor, al menos bajo GNU/Linux bastante lento. Pero con la salida de la versión 1.0 y después de algunas peleas acumuladas con mi configuración de Emacs, me decidí a darle una nueva oportunidad y esta es mi opinión a día de hoy.

Estabilidad y flujo

Para mí la estabilidad del editor es algo fundamental. Cuando pruebo un editor me gusta poder incorporarlo a mi día a día dentro del trabajo porque es cuando realmente le puedo dar la caña suficiente para juzgarlo. Mi tiempo de desarrollo en horas libres es bastante escaso, así que si algo me sirve, tiene que servirme para el día a día.

En este sentido para mí Atom a día de hoy es bastante estable. No voy a decir que no se ha colgado ni una sola vez porque no sería cierto, pero mi sensación general es la de un sistema bastante fluído. Tanto los movimientos dentro de la interfaz, cambios de paneles y pestañas, menús y demás como tiempos de arranque, carga, sistema de actualización de plugins y demás funcionan muy bien.

Arquitectura

En mi caso sólo he probado el editor siempre bajo GNU/Linux porque es el único sistema que uso. Así que no puedo juzgar su integración ni fluidez en otros sistemas operativos. En Linux si que cabe destacar que actualmente sólo existe paquete para sistema de 64 bits, lo que es un impedimento para personas que quieran arrancar el editor en una máquina más antigua que sólo pueda correr versiones de 32 bits del sistema operativo.

Filosofía del editor

No es ningún secreto que Atom es en muchos aspectos una copia de Sublime Text, pero para mí eso no es nada malo que echarle en cara el proyecto. De hecho me parece muy buena idea. El equipo de Github ha cogido como idea de base un editor que se ha convertido casi en un estándar a día de hoy y ofrece sin embargo una implementación diferente con algunos cambios. Y un aspecto que no se puede dejar de lado porque es fundamental, Sublime Text es un software increíble pero es una solución privativa.

La única razón por la que yo no me he lanzado nunca de manera definitiva a usar Sublime Text en mi día a día es justamente esa, así que en mi caso es una diferencia fundamental y determinante que Github tomase la decisión de liberar el código de Atom. El código del editor y el de todos lo paquetes que forman parte del core tienen licencia MIT.

En muchos casos Atom presenta no sólo similitudes en la interfaz, sino que incluso utiliza muchos de los atajos de teclado de Sublime, lo que facilita la transición de un editor al otro para muchos usuarios.

Respecto a la tecnología con la que está implementado, merecería en realidad post aparte, así que resumo diciendo que del desarrollo de Atom y sus necesidades surgió Electron. Se trata de poder desarrollar aplicaciones de escritorio a través de tecnologías web. En esencia HTML, CSS y toneladas de JS dentro de la app, pero transparente para el usuario, que ejecuta una aplicación instalada normalmente en su sistema. Para mi gusto está muy maduro y de hecho tengo ganas de poder meterle mano para algunos proyectos cuando ande un poco más suelto de tiempo.

Plugins

El ecosistema de plugins, con las últimas estabilizaciones de la api del editor está en bastante buen estado. He decir eso si  que a veces existe, como suele pasar en muchos proyectos abiertos, mucha duplicidad en la funcionalidad de los plugins. Hay a veces mucha manía por parte de de los desarrolladores de reimplementar lo mismo una y otra vez en lugar de colaborar en algo que ya existe. No es siempre algo malo y no estoy diciendo que no se deba nunca reinventar la rueda.

En cualquier caso, si se tiene más o menos interiorizado el flujo habitual de interacción en Github, no suele ser complicado tomar la decisión con un vistazo rápido al repositorio, sus issues, estrellas, frecuencia de actualización del código y demás.

No sé si ya existe o no, pero para otros editores he visto páginas de recomendaciones de plugins (más allá de los que destaca el equipo de Atom) clasificados por tipos (lenguaje, funcionalidad…etc) y un ranking de los mejores o más usados. Si no sé ha hecho, creo que sería un proyecto chulo, que además podría hacerse utilizando las apis de Github. Por favor, si alguien lo hace, sería buena idea que la interfaz de la web no esté sólo en inglés. Para mí no es un problema, pero sería un paso importante para empezar a interiorizar un enfoque menos anglocentrista en el mundo del desarrollo.

Atom packages

Si se está interesado en el desarrollo de paquetes para el editor, los desarrollos se hacen en CoffeScript y para hacer búsquedas sobre cuales usar se puede usar la sección correspondiente del editor, dentro de las opciones o en la propia web de atom.io.

Le dedicaré post aparte a algunos de sus usos, pero comentar que atom tiene una herramienta de linea de comandos que me gusta mucho para la gestión de paquetes llamada apm (Atom package management).

apm

Los avisos de actualización de los plugins llegan directamente al editor, por lo que no hay que estar pendiente de mantenimientos en ese sentido.

Control de versiones e interacción con el sistema

Como era de esperar, el funcionamiento de Atom está fuertemente relacionado con la plataforma de Github. Es una jugada muy lógica a nivel empresarial. Los plugins cuelgan de su plataforma, lo que le asegura aún más un flujo de interacción de usuarios y crecimiento y uso del número de repositorios activos.

En mi caso no he utilizado tanto las interacciones que el editor ofrece como hacer Blames directamente en Github, abrir urls de su web de manera directa, consultar historiales y demás. Pero si que me resulta útil en el día a día la buena integración que tiene con Git en sí incluso dentro del editor. Como ejemplo, junto a los números de línea podemos ver reflejados los cambios que suponen un añadido de código al repositorio que no se ha *commitado *aún y detalles similares.

En la barra inferior, tenemos todo el tiempo visible la información sobre la rama del proyecto en la que estamos actualmente, así como el número de cambios realizados por commitar.

atom bar

También existen muchos paquetes comunitarios que ofrecen interacciones directas con proyectos y archivos dentro del editor como la posibilidad de hacer un git grep dentro de un repositorio, git blame visualizado en pantalla y muchas cosas más.

Buscar, remplazar y otras tareas repetitivas

Atom presenta las tareas de buscar, reemplazar, mover lineas o bloques, seleccionar lineas completas, el uso de snippets y el ya famoso multicursor para poder editar varias lineas a la vez de una manera muy parecida a la de Sublime Text.  Funciona, lo hace bien y es algo que muchos desarrolladores tienen ya interiorizado que usan de una cierta manera. ¿Para qué cambiarlo?. En resumen, funcionalidades que son básicas para la edición de código de una forma sencilla, sin florituras ni implementaciones raras.

Atom editor buscar y reemplazar

En cuanto al flujo de trabajo con varios archivos, hay algo que gustará a los que vengan de otros editores como VIM o Emacs. La división de la ventana se puede hacer tanto partiendo la pantalla en vertical y horizontal, como después tabajando en pestañas en cada una de ellas.

Atom editor pestañas El sistema de búsqueda de archivos dentro de un proyecto es algo que también funciona muy bien y por suerte es altamente tolerante a los errores de tecleo del usuario, de manera que con saber más o menos cómo se llama un archivo, es muy facil que Atom lo reconozca y nos lo muestre como sugerencia.

Personalización y atajos de teclado

Le quiero dedicar también post aparte, pero las posibilidades de personalización del editor son muy altas. No sólo a nivel visual de la interfaz sino que la experiencia se puede ajustar bastante al gusto del usuario.

Desde el menú de opciones podemos modificar dos temas visuales de manera independiente. Por un lado el tema de la interfaz del editor (color de las ventanas y decoración, menús e incluso iconos  en el explorador de archivos )y por otro el esquema de colores del resaltado de sintaxis del código.

Atom editor temas

Atom editor keymaps

Por otro lado, la personalización de atajos de teclado se puede hacer de manera directa en una archivo en formato CSON. Esto permite además tener por ejemplo las configuraciones en un repositorio y compartirlas entre máquinas. Aquí tengo que poner una pega por algo que no está funcionando muy bien para mi gusto. Muchas de las configuraciones de atajos de teclado presuponen el uso de un Mac y en ocasiones hacerlas funcionar en Linux o poderlas remapear se vuelve un poco engorroso. También hay que andar con ojo cuando alguna no funciona, porque a menudo se debe al choque de configuraciones entre diferentes paquetes.

Por último aclarar que las configuraciones de parámetros como el tabulado, la indentación y similares se pueden hacer por lenguaje de manera bastante cómoda.

Transición desde otros editores

En mi caso como digo vengo de VIM y Emacs, así que problablemente no hay posibilidad de venir de un contexto que se parezca menos a un “editor normal”. Sin embargo y aunque la memoria muscular aún me juega alguna mala pasada con los atajos de teclado, para mi la transición ha sido muy fluida.

Atom menú acciones

Ante las dudas, con una combinación de Ctrl + Mays + p , tenemos lo que llaman la paleta de comandos en la que podemos buscar la acción que queremos realizar y ver además si tiene un atajo asignado. Pero en la mayoría de los casos, los atajos típicos me parece que son fáciles de incorporar y es rápido empezar en un par de días a sentire fluído y cómodo con el editor. Para mí, como comentaba esto es algo vital. Mi interacción con el editor es en un entorno de trabajo exigente que incluye una base de código realmente grande y cambio de tareas entre diferentes lenguajes de programación y sentir el freno de la herramienta en el flujo de trabajo puede llegar a ser muy frustrante.

Fuentes y referencias

Para estar al día del proyecto, recomendaría dirigirse al Discourse de Atom y para lanzarse a empezar a manejarlo, la verdad es que la documentación oficial es bastante completa y para descargarlo, por supuesto,  la web o el repositorio en Github.

Conclusión

Por ahora, como se puede leer me siento muy cómodo en Atom. No voy a probar ningún otro editor para el día a día en muchos meses. Más de una vez he expresado que para mí es fundamental que un desarrollador se familiarice a fondo con las herramientas básicas como el editor hasta el punto de olvidarse de que están ahí, así que a partir de ahora lo que me toca es ponerme muy a fondo a sacar todo el jugo al editor y por el camino publicar varios posts con trucos, configuraciones y otras utlidades que vaya descubriendo.

Pablo Bernardo
Pablo Bernardo

Hola, soy Pablo. Soy programador frontend, padre, estudiante de zen y otras cosas. Para saber más, lee algunas entradas.