Como o WSL2 mudou minha perspectiva quanto a desenvolver Software no Windows

Atualizado em

Após dez anos desenvolvendo usando Macs, me peguei otimista quanto ao uso do WSL quando a Microsoft anunciou a integração com o Bash em meados de 2016.

Testei assim que consegui, não pareceu usável mas era promissor. Apesar de não usar diariamente, mantive um WSL rodando Ubuntu 18.04 para pequenas coisas, afinal é sempre bom ter um bash à disposição.

Com o lançamento do WSL2 este ano e a integração com Docker, resolvi levar as coisas mais a sério com um objetivo muito simples: desenvolver no Windows. Sempre trabalhei com web, onde as coisas teoricamente são simples, vamos só instalar um node.js aqui, um ruby ali, o que poderia dar errado?

Eu queria mais. Percebi que estar apto a desenvolver no WSL não seria suficiente pra mim, então meu desafio se tornou ter um terminal completamente condizente ao meu terminal de trabalho atual no Mac, e isso implicava em configurar um ZSH com direito a vários aliases e functions, um spaceship configurado, fontes powerline, tema de cores e tudo que eu tinha direito. Além disso, eu queria todas minhas dependências instaladas: LaTeX, pandoc, vários pacotes tex, nvm, rvm, PostgreSQL, etc. O objetivo passou a ser: ter um dotfiles híbrido, que configurasse tanto um WSL como um OSX.

Eu confesso que adaptar os meus dotfiles foi uma trabalheira danada. Principalmente porque de alguma forma eu perdi o PATH do Windows, que curiosamente é compartilhado com o WSL, e assim não pude usar os binários do docker, do Windows Explorer ou do VSCode. Acabei resolvendo criando um novo WSL e descartando o antigo e acabou por funcionar muito bem.

Meu terminal com ZSH no Windows depois de configurado
Meu terminal com ZSH no Windows depois de configurado

O ZSH funcionou maravilhosamente bem e o novo Windows Terminal deixou muito simples configurar o tema de cores e as fontes. Achei especialmente interessante a integração com o Windows Explorer e VSCode. Para abrir uma pasta do terminal no Explorer podemos, por exemplo, rodar um simples:

explorer.exe ./

O mesmo vale para arquivos de texto serem abertos usando o Visual Studio Code, apenas é claro usando o comando code.

Consegui rodar projetos com dependências complexas com a mesma facilidade que tive pra configurar no OSX. Uma vez tendo tudo escrito nos dotfiles, descartar um WSL e criar um novo se tornou um processo com complexidade desprezível e sem nenhum gasto de tempo em configuração, afinal já estava tudo automatizado.

No fim das contas eu consegui chegar a um terminal plenamente satisfatório com a certeza de que minha próxima máquina de trabalho não será um Mac.