Eu testei o Google IDX (Codespaces para Google), e aqui estão minhas impressões.

O Que é o projeto IDX?

De acordo com a documentação do projeto: O Projeto IDX é um Ambiente de Desenvolvimento Integrado (IDE) experimental baseado na web. O IDX pode auxiliar na criação e implantação de aplicativos em diversas pilhas de tecnologia sem a dificuldade de configurar ambientes de desenvolvimento para você e outros membros da equipe. O IDX é executado em Máquinas Virtuais (VMs) totalmente configuráveis no Google Cloud para manter seu ambiente de desenvolvimento confiável, seguro e totalmente personalizável, assim como um ambiente de desenvolvimento local.

Os novos modelos de projeto no IDX auxiliam no desenvolvimento de aplicativos da web utilizando frameworks como Angular, Next.js, React, Svelte e Vue. O IDX também inclui modelos para o desenvolvimento de aplicativos multiplataforma utilizando o Flutter através do navegador.

Image description

Eu me inscrevi na lista de espera para testar o projeto e, após alguns meses, o e-mail finalmente chegou com uma prévia disponível, embora limitada devido a certos fatores. Bem, neste artigo, compartilharei minhas impressões como desenvolvedor de software. Comecei a programar com um computador que era terrível em termos de capacidade de processamento e memória. Na época, como estudante, sempre busquei ferramentas que pudessem superar essas limitações, e os compiladores online eram essenciais para aprender. Acredito que as tecnologias de desenvolvimento em nuvem, como Codespaces e Amazon Cloud9, são muito benéficas para aqueles que enfrentam dificuldades com configurações de ambiente e na construção de aplicativos da web robustos devido às limitações de memória e capacidade de processamento da máquina local.

Configurando um projeto no IDX

Nesta ferramenta, há uma funcionalidade para configurar um projeto da web sem a necessidade de configurar variáveis de ambiente, instalar dependências ou criar pastas. Você simplesmente seleciona o framework, e ele configura todo o ambiente de desenvolvimento para você. A desvantagem é que isso leva bastante tempo, mas a vantagem é que, se você não quiser gastar muito tempo fazendo isso em sua máquina local ou utilizando sua memória, é excelente. Existem vários modelos de configuração disponíveis, mas como é uma versão de teste, é normal que esteja limitada a algumas tecnologias, que são organizadas em categorias: web (front-end e back-end), mobile, IA, aprendizado de máquina. A lista de frameworks para a prévia é bastante limitada, incluindo Flask, Angular, React, Vue, Svelte, e todas as outras tecnologias, como mobile e IA, são mantidas pela Google, como é o caso do Flutter para mobile. Depois de criá-lo, você tem a opção de compartilhar o ambiente criado com outras pessoas.

Image description

IDE na Nuvem

O IDX é construído sobre o conhecido projeto Code OSS e é executado em uma máquina virtual (VM) completa, alimentada pela tecnologia Google Cloud. Você pode trazer seus próprios aplicativos da web e móveis Flutter para o IDX. Você também pode começar a integrar-se com repositórios públicos ou privados no GitHub. O IDX vem com extensões pré-instaladas para ajudá-lo a configurar seu espaço de trabalho e começar a codificar. Você também tem acesso a várias outras extensões disponíveis no OpenVSX.

Um espaço de trabalho no IDX é um ambiente de desenvolvimento que contém tudo o que você precisa para desenvolver seu aplicativo. Isso inclui o código, um editor de código (com plugins relevantes para seu projeto) e conjuntos de ferramentas compatíveis com o desenvolvimento de aplicativos. O processo é semelhante à criação de um novo projeto no ambiente de desenvolvimento do seu computador local, exceto que você tem um computador e um sistema operacional totalmente pré-configurados e dedicados exclusivamente para a construção de um aplicativo.

Os espaços de trabalho do projeto IDX são otimizados para conter uma única base de código por vez. Isso permite manter ambientes e dependências no nível do sistema de diferentes aplicativos isolados uns dos outros.

Se você está criando um novo aplicativo, use os modelos de espaço de trabalho gerenciados no IDX para começar rapidamente. Outra opção é importar bases de código de aplicativos para o IDX.

Image description

Neste caso, eu criei um projeto baseado em Flask e, após alguns cliques, tudo estava pronto para uso.

NIX

O IDX utiliza o Nix para definir a configuração do ambiente para cada espaço de trabalho. O Nix é um gerenciador de pacotes puramente funcional que atribui identificadores únicos a cada dependência, o que significa que seu ambiente pode conter várias versões da mesma dependência perfeitamente. Ele também é reprodutível e declarativo. No contexto do IDX, isso significa que você pode compartilhar seu arquivo de configuração Nix entre vários espaços de trabalho para carregar a mesma configuração de ambiente. Saiba mais sobre Nix + IDX.

Crie ou edite o arquivo .idx/dev.nix A configuração do ambiente é definida no arquivo .idx/dev.nix no repositório do seu código. Este arquivo permite que você especifique pacotes instalados, variáveis de ambiente e extensões Code OSS.

Confira o exemplo de arquivo .idx/dev.nix abaixo para uma configuração básica de ambiente de espaço de trabalho que permite visualizações de aplicativos no IDX:

{ pkgs, ... }: {

  # Which nixpkgs channel to use.
  channel = "stable-23.11"; # or "unstable"

  # Use https://search.nixos.org/packages to find packages
  packages = [
    pkgs.nodejs_18
  ];

  # Sets environment variables in the workspace
  env = {
    SOME_ENV_VAR = "hello";
  };

  # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
  idx.extensions = [
    "angular.ng-template"
  ];

  # Enable previews and customize configuration
  idx.previews = {
    enable = true;
    previews = [
      {
        command = [
          "npm"
          "run"
          "start"
          "--"
          "--port"
          "$PORT"
          "--host"
          "0.0.0.0"
          "--disable-host-check"
        ];
        manager = "web";
        id = "web";
      }
    ];
  };
}

Ponto Positivo - Desenvolvimento Mobile em Flutter

Um aspecto positivo é que se você não teve experiência com desenvolvimento móvel e quer programar algo em Flutter, ou se você não quer passar pelo incômodo de configurar todo o ambiente Android, o IDX é perfeito para você. Quando selecionamos um modelo Flutter, temos todo o ambiente de emulação Android pronto, diretamente no navegador. Isso é incrível!

Image description

Conclusão - Minha Humilde Opinião

Bem, ultimamente tenho usado bastante o Codespaces para diversos tipos de projetos. Quando sei que vou utilizar muitos recursos da minha máquina para desenvolvimento em inteligência artificial ou realidade aumentada, por exemplo, sempre opto por criar um repositório no GitHub e iniciar um Codespace. Especialmente quando se trata de tecnologias JavaScript que possuem vários módulos que precisam ser instalados. O IDX tem muito potencial, especialmente como um IDE para aplicações que utilizarão principalmente tecnologias do Google. Claro, existem muitos pontos positivos e negativos. Por exemplo, a interface móvel não é tão boa, e a inteligência artificial está longe do que temos no Co-Pilot.

Para aqueles que apenas querem aprender uma linguagem ou algo semelhante, especialmente para experimentar, é ótimo. Você pode criar um modelo e brincar com aquele framework que prometeu aprender, mas sempre achou muito trabalhoso passar por todo o processo de instalação.