SDKMAN - Morto, viva ao longo SDKMAN


TL; DR: SDKMAN CLI será reescrito em Golang

Seis anos se passaram desde que lançamos a primeira versão do SDKMAN. Nas versões anteriores, era conhecido como GVM e era usado para gerenciar o Groovy e ferramentas relacionadas. Logo ficou claro que não deveria se limitar ao ecossistema Groovy e também poderia ser aplicado a outros SDKs da JVM. Nesse ponto, o GVM foi renomeado para SDKMAN. Embora o nome tenha mudado, a tecnologia principal permanece a mesma.

Assim como a GVM uma vez superou seu nome, o SDKMAN superou a tecnologia na qual foi construído. Apesar de os serviços de back-end terem sido substituídos por alternativas melhores, o cliente CLI permaneceu o mesmo e se tornou nossa maior fonte de decepção.

No começo, escolhemos o Bash para criar o GVM, pois ele cobria todos os requisitos. Ele estava disponível em todos os sistemas * nix, funcionou rapidamente e nos forneceu um ambiente de tempo de execução sem dependências ou despesas adicionais. Isso significava que o download de uma nova instalação era praticamente fácil em praticamente qualquer sistema.

Apesar dos benefícios que o Bash nos deu, ao longo do tempo, encontramos muitos problemas com essa escolha:

  • Os usuários do Windows devem passar por etapas instalando o Cygwin / Git Bash
  • nosso software nem sempre funciona bem com conchas alternativas, como casca de peixe
  • hacks especiais devem ser suportados para compatibilidade com o ZSH
  • incompatibilidade entre as principais versões do Bash (e a teimosa recusa da Apple em enviar o OSX com uma versão moderna do Bash devido a problemas de licenciamento bobo)
  • problemas de rede devido ao uso do curl como o principal cliente http
  • dificuldades com o teste eficaz do código Bash

Tudo isso nos diz que é hora de deixar o Bash em favor de outra coisa, então nos últimos meses comecei a estudar o Go como uma alternativa viável. Após ponderar as probabilidades, os profissionais da implementação da CLI no Go podem ser resumidos da seguinte forma:

  • linguagem compilada estaticamente tipada para detectar erros durante o desenvolvimento
  • incrivelmente rápido
  • não é mais viciado em solo instável
  • cria binários compilados nativamente para todas as arquiteturas, eliminando efeitos colaterais inesperados relacionados à plataforma
  • suporte mais fácil para testes de aceitação através do Godog (versão do Cucumber escrita em Go)
  • permite repensar algum comportamento da implementação atual do SDKMAN (mais sobre isso posteriormente)
  • Melhora a colaboração e a contribuição da comunidade
  • simples e vamos fazer esse maldito trabalho (Get Shit Done)

Entendendo tudo isso, decidi construir a primeira versão funcional da nova interface SDKMAN CLI . Após concluir este trabalho, a nova versão se tornará a versão padrão do SDKMAN. Obviamente, isso também nos permitirá reconsiderar como está funcionando atualmente. Seis anos depois, aprendemos que ele funciona e não funciona, e podemos lembrar esse conhecimento em nossa nova e brilhante versão.

Aqui, incentivamos nossa comunidade a participar e se tornar parte da comunicação. Queremos saber quais recursos você gostaria de ver (ou não gostaria). Para fazer isso, abrimos uma nova sala em Gitter . Convidamos você a participar e participar, fornecendo feedback sobre a nova CLI. Ainda usamos o Cucumber para descrever o comportamento em uma linguagem compreensível da mesma maneira que na versão Bash, e solicitamos a todos que participem da implementação de cada função. Como antes, queremos que essas funções constituam documentação ao vivo.

Por isso chamei esse post assim. Gostamos de desenvolver a versão original do SDKMAN, mas percebemos que havia problemas. Agora temos a oportunidade de torná-lo mais confiável e melhorá-lo para todos. Ficaremos felizes por qualquer ajuda no caminho para a implementação da nova CLI!

De um tradutor: SDKMAN é um dos meus gerenciadores de pacotes favoritos, ele inicia a instalação da JVM, Gradle e Kotlin em uma nova máquina. É por isso que, recentemente, nós da Plataforma CUBA começamos a publicar nosso utilitário CLI CUBA no SDKMAN. Fiz esta tradução porque estou feliz em ver o desenvolvimento do SDKMAN e estou ansioso por sua nova versão.

Source: https://habr.com/ru/post/pt424157/


All Articles