Saltar al contenido

Linux en el escritorio como desarrollador web | Leer las hojas de té

He estado usando Ubuntu como mi sistema operativo de escritorio doméstico principal durante el último año y medio, así que pensé que sería un buen momento para escribir mis experiencias. Con suerte, esto será interesante para otros desarrolladores web que actualmente usan Mac o Windows y pueden tener curiosidad por Linux.

Mi configuración básica. Dell XPS 13, mouse trackball Kensington (sí, soy un bicho raro al que le gustan los trackballs), teclado mágico de Apple (todavía prefiero la sensación) y un monitor BenQ (porque juego algunos juegos en los que el retraso de visualización es importante)

Nota: en esta publicación, hablaré principalmente de Ubuntu. He jugado con otras distribuciones de Linux, pero me quedo con Ubuntu porque si tengo un problema, puedo buscarlo en Google y encontrar una respuesta el 99,9% del tiempo.

Algo de historia

Me cambié a Linux por primera vez en 2007, cuando estaba en la universidad. En ese momento, percibí que era un gran avance con respecto a Windows Vista (¡mucho más rápido y mejor para los programadores!), Pero también traía muchos dolores de cabeza:

Alrededor de 2012 me cambié a Mac, principalmente porque me di cuenta de que todos los desarrolladores web que daban una charla en una conferencia usaban uno. Luego me convertí en un usuario dual de Windows / Mac cuando me uní a Microsoft en 2016, y no volví a considerar Linux hasta después de dejar Microsoft en 2018.

Me complace decir que ninguno de mis viejos dolores de cabeza con Linux existirá más en 2020. En mi Dell XPS 13 (que viene con Ubuntu preinstalado), WiFi y múltiples monitores funcionan de inmediato. Y como parece que todo es una aplicación de Electron o un sitio web en estos días, es raro encontrar una aplicación para el consumidor que no sea compatible con Linux. (Al menos, los que me importan; ¡estoy seguro de que puedes encontrar un contraejemplo!) La mayor queja que tengo hoy en día es con las fuentes, que están muy lejos de jugar con los controladores WiFi.

Bien, basta de historia, hablemos de lo bueno y lo malo de Linux en 2020, desde la perspectiva de un desarrollador web.

La linea de comando

Tiendo a vivir y respirar en la línea de comandos, y para mí, la línea de comandos en Linux es insuperable.

La razón principal debería ser clara: si está escribiendo código que se ejecutará en un servidor en algún lugar, ese servidor probablemente ejecutará Linux. Incluso si no está haciendo muchas cosas de administrador de sistemas, probablemente esté usando Linux para ejecutar su infraestructura de prueba e IC. Entonces, eventualmente, su código tendrá que ejecutarse en Linux.

Usar Linux como su máquina de escritorio simplifica mucho las cosas. Todos mis servidores ejecutan Ubuntu, al igual que mis pruebas de Travis CI, al igual que mi escritorio. Sé que mis scripts de shell se ejecutarán exactamente igual en todos estos entornos. Si alguna vez ha tenido dolores de cabeza con diferencias sutiles entre el shell de Mac y Linux (por ejemplo, versiones incompatibles de grep, tary sed con banderas ligeramente diferentes, por lo que debe usar ggrep y gtar… ugh), entonces sabes de lo que estoy hablando.

Si es un usuario de Mac, la parte más difícil de cambiar a la terminal de Linux probablemente serán los atajos de teclado de iTerm que ha memorizado para abrir pestañas y paneles. Encontré que la solución más simple era usar tmux en su lugar. Como beneficio adicional, tmux también se ejecuta en Mac, por lo que si aprende los atajos de teclado una vez, puede usarlos en todas partes. Configuré mi terminal para que abra automáticamente tmux al inicio.

Ah, la línea de comandos en Linux. Se siente como en casa.

Dado que la línea de comando es el principal punto de venta de Linux (IMO), es tentador usar Windows con el Subsistema de Windows para Linux. Esta es definitivamente una opción viable y totalmente razonable, especialmente si hay un programa de Windows que realmente necesita (o si es un jugador de PC). Para mí, sin embargo, no hago muchos juegos de PC, y mi experiencia con WSL es que, aunque la compatibilidad fue excelente, el rendimiento fue pobre. npm install tomaría órdenes de magnitud más en WSL en comparación con la máquina equivalente de Mac o Linux. (Sin embargo, tenga en cuenta que estaba usando WSL en 2016-2018, y me dijeron que ha mejorado desde entonces).

Aún así, para mí, simplemente no encuentro Windows de mi gusto. La interfaz de usuario siempre ha sintió lento y torpe para mí, que puede ser solo mi percepción, aunque cuando leo publicaciones de blog como esta de Bruce Dawson me siento un poco reivindicado. (Iconos de la barra de tareas al hacer clic con el botón derecho es ¡lento! ¿Por qué?) En cualquier caso, Ubuntu se inicia rápido, las actualizaciones del sistema son rápidas y discretas, y no me falta ninguna aplicación imprescindible para mí. Así que ejecuto Ubuntu al 100%, ni siquiera con arranque dual.

desarrollo web

Para el desarrollador web promedio, la mayoría de las cosas que necesita funcionarán bien en Linux. Puede ejecutar Chrome y VS Code (o WebStorm, mi preferencia), y todas sus utilidades de línea de comandos como node y npm funcionará igual. Puede utilizar para administrar las versiones de Node. Hasta aquí todo bien.

Como desarrollador web, el mayor problema con el que me he encontrado es no tener una forma rápida de probar los tres motores de navegador principales: Blink (Chrome), Gecko (Firefox) y WebKit (Safari). Especialmente ahora que Edge se ha convertido en Chromium y el linaje Trident / EdgeHTML está desapareciendo lentamente, es realmente atractivo que, con una Mac, pueda probar los tres motores de navegador principales sin tener que cambiar a otra máquina o usar una herramienta como BrowserStack.

En Linux, por supuesto, tenemos Chrome y Firefox, y estos se ejecutan casi igual que en una Mac, por lo que se ajustan perfectamente. Para WebKit incluso tenemos GNOME Web (también conocido como Epiphany Browser), pero solo lo considero “correcto” como un sustituto de Safari. No es compatible con algunas de las API específicas de Safari (por ejemplo, filtro de fondo, Apple Pay, etc.), y es terriblemente lento, pero es bueno para una verificación rápida para ver si algún fragmento de código se ejecutará bien en Safari. o no.

GNOME Web en HTML5Test. Safari no lo es.

Desafortunadamente para mí, no considero que eso sea “suficientemente bueno”, especialmente porque la gran mayoría de los usuarios de Safari están en iOS, así que esa es la plataforma que realmente quieres probar. Y aquí es donde Linux se encuentra con su mayor inconveniente desde la perspectiva de un desarrollador web: depurar iOS Safari.

Si desea depurar Chrome o Firefox en Android, no hay problema. adb funciona bien en Linux, puede ejecutar chrome:inspect en Chrome o depuración remota en Firefox, y todo funciona muy bien. Sin embargo, para iOS Safari, la mejor opción que tiene es remotedebug-ios-webkit-adapter, que usa ios-webkit-debug-proxy bajo el capó.

Esencialmente, este es un conjunto elaborado de herramientas que hace que iOS Safari se parezca a Chrome, de modo que pueda usar Chrome DevTools para depurarlo. Lo más sorprendente de esto es … ¡realmente funciona! Siempre que pueda hacer que las dependencias extrañas se ejecuten correctamente, tendrá sus Chrome DevTools familiares conectadas a un dispositivo iOS.

Lo crea o no, puede depurar iOS Safari desde Linux.

Si tiene un iPhone o iPod Touch de repuesto, esta no es una mala opción. Pero aún está muy lejos de la experiencia optimizada en una Mac, donde puede ejecutar rápidamente un simulador de iOS con cualquier versión de iOS de su elección, y donde la depuración de Safari funciona de inmediato.

Para las pruebas de accesibilidad, es una historia similar. Por supuesto, Firefox y Chrome tienen herramientas de accesibilidad, pero no sustituyen a VoiceOver en Mac o NVDA en Windows. Linux tiene el lector de pantalla Orca, pero no veo mucho sentido en probarlo, ya que no es representativo del uso real del lector de pantalla. Especialmente dado que los lectores de pantalla pueden tener errores o peculiaridades, prefiero probar el verdadero. Así que tengo una Mac Mini y una computadora de escritorio barata de Windows por esta razón.

En resumen, usar Linux como su entorno de escritorio si es un desarrollador web es bastante bueno. Probablemente no se pierda mucho, tan pronto como vuelva a conectar su cerebro para obtener los atajos de teclado correctos.

Encuentro que las cosas principales que extraño estos días son algunas de las mejores aplicaciones integradas de Apple, como Preview o Garage Band. Me encanta Preview por tomar una captura de pantalla rápida y dibujar flechas y cuadros en ella (algo que hago sorprendentemente a menudo), y no he encontrado ningún buen sustituto en Linux. (Yo uso Pinta, que está bien). Otras aplicaciones como ImageOptim tampoco tienen una versión para Linux.

Entonces, si depende de algunas aplicaciones solo para Mac, o si necesita la mejor depuración de Safari e iOS de su clase, entonces no recomendaría Linux sobre Mac. Si su enfoque principal es la accesibilidad, es posible que tampoco sea suficiente para usted (aunque algo como Assistiv Labs puede cambiar este cálculo). Pero para todo lo demás, es un excelente sistema operativo de escritorio para el desarrollo web.

Gracias a Ben Frain por preguntar acerca de mis experiencias con Linux e inspirar esta publicación de blog.

Este contenido se publicó originalmente aquí.