1 pontos por GN⁺ 2024-01-23 | 1 comentários | Compartilhar no WhatsApp
  • Diversion é um sistema de controle de versão voltado a grandes repositórios e colaboração na era da nuvem, com usuários iniciais sendo desenvolvedores de jogos que buscam simplicidade e escalabilidade
  • O Git foi criado em 2005, em um contexto de redes lentas, projetos pequenos e ausência de nuvem, e por isso seria limitado nas dimensões atuais de repositórios, arquivos e número de usuários simultâneos
  • Os sistemas internos de controle de versão do Google e da Meta, além do uso de SVN e Perforce por algumas empresas de jogos, semicondutores e serviços financeiros, são citados como evidência de que o Git não serve para todas as organizações
  • O Diversion processa operações de repositório como commit, branch e merge por chamadas de API sobre armazenamento distribuído, banco de dados, REST API e infraestrutura de nuvem serverless
  • Atualmente está em beta aberta, equipes pequenas podem começar gratuitamente, e melhorias de velocidade, integração com CI, plugins para IDEs e engines de jogos, além de melhorias de usabilidade, estão em andamento

Os limites do Git que o Diversion quer atacar

  • O Diversion é um sistema de controle de versão nativo da nuvem oferecido em diversion.dev
    • Uma demo rápida está disponível em vídeo no YouTube
    • Os usuários iniciais são desenvolvedores de jogos, que veem simplicidade e escalabilidade como vantagens
  • O Git teve um papel importante no avanço do desenvolvimento de software nos últimos 18 anos, mas foi criado para o ambiente de 2005 e não é a ferramenta perfeita para todos os usuários
  • A maior desvantagem é a escalabilidade limitada, que aparece no tamanho do repositório, no tamanho dos arquivos e no número de usuários simultâneos
    • Google e Meta criaram seus próprios sistemas de controle de versão por causa disso
    • Algumas grandes empresas de jogos, semicondutores e serviços financeiros continuam usando ferramentas legadas como SVN e Perforce
  • A complexidade do Git também pode levar à perda real de trabalho
    • Em uma startup anterior, houve um caso em que um cientista de dados usou um comando do Git incorretamente e a equipe perdeu um mês de trabalho
    • Algumas horas depois, foi possível recuperar a partir de um clone do repositório que não havia sido atualizado
  • Ainda assim, os recursos de branch e merge do Git contribuíram muito para práticas modernas de desenvolvimento, como feature branches e CI/CD, além de aumentar a velocidade dos desenvolvedores

Como funciona na nuvem

  • O Diversion busca manter o recurso de branches do Git, mas com um sistema de controle de versão mais simples, rápido e escalável
  • Aplica ao controle de versão o conceito de colaboração em tempo real das ferramentas modernas de nuvem
    • Como no Google Docs e no Figma, é possível compartilhar o estado do trabalho em andamento
    • Nem sempre os desenvolvedores querem expor tudo o que estão fazendo, mas isso pode ser útil para receber feedback antes do commit, detectar e evitar conflitos de merge, ou ver quais partes do codebase outras pessoas estão alterando
  • Sua estrutura interna é baseada em armazenamento distribuído, banco de dados, REST API e infraestrutura de nuvem serverless
    • Todas as operações de repositório, como API calls de commit, branch e merge, são processadas dessa forma
    • O cliente desktop sincroniza em tempo real com a nuvem até mesmo o estado do trabalho em andamento antes do commit
    • Os usuários podem acessar por CLI interativa, Web UI e plugin de IDE
    • No momento, o plugin de IDE oferece suporte ao JetBrains, com mais opções previstas
    • A Web UI permite realizar a maioria das tarefas básicas sem instalar o cliente desktop
  • É compatível com Git e pode sincronizar com repositórios Git existentes
    • Novos commits do Diversion entram no Git, e novos commits do Git também entram no Diversion

Plano de lançamento e condições da beta

  • Há planos de abrir o código como open source quando o codebase estiver maduro e o diretório de repositórios open source estiver implementado no site
    • O código do Diversion também é gerenciado no próprio Diversion
  • No momento, está disponível em beta aberta, e é possível começar em modo self-service clicando em Get Started
    • É possível usar sem precisar conversar com ninguém
    • É gratuito para equipes pequenas, e as informações de preço estão em pricing
  • As melhorias em andamento incluem velocidade, integração com CI, plugins para IDEs e engines de jogos, além de outras melhorias de usabilidade

1 comentários

 
GN⁺ 2024-01-23
Comentários no Hacker News
  • Cloud-Native Git Alternative

    • "Cloud-native" é um detalhe de implementação e não importa, a menos que haja um plano de vender o novo sistema de controle de versão (VCS) como software empacotado em vez de serviço.
    • Não está claro como ser cloud-native resolve os problemas do dia a dia dos usuários de Git.
  • The biggest drawback of Git is its limited scalability

    • Há curiosidade sobre qual porcentagem de usuários realmente enfrenta problemas de escalabilidade no Git.
    • Já trabalhei em empresas com de centenas a dezenas de milhares de engenheiros, mas pessoalmente nunca enfrentei problemas de escalabilidade no Git.
    • O uso de monorepo pode causar problemas de escalabilidade, mas o próprio monorepo é controverso.
  • Diversion is built on top of distributed storage and databases, accessible via REST API, and runs on serverless cloud infrastructure. Every repository operation is an API call (commit, branch, merge etc.).

    • Do ponto de vista do usuário, há pouco interesse no protocolo interno.
    • Ao usar CLI ou UI, o protocolo interno não importa.
    • Há curiosidade sobre um VCS baseado em árvore sintática abstrata (AST).
  • most notably in games development, semiconductors and financial services are still using legacy tools like SVN and Perforce

    • Melhor focar no fato de que o Git não é adequado para lidar com grandes ativos binários, em vez de na complexidade do Git.
    • Citação de Linus Torvalds sobre o Git não lidar bem com arquivos grandes.
  • it was built for a very different world in 2005 (slow networks, much smaller projects, no cloud)

    • O Git foi projetado em um contexto diferente de 2005, com redes lentas, projetos menores e sem nuvem.
    • Como o Git é distribuído, ele deveria funcionar bem também em ambientes de nuvem.
    • O caso de um cientista de dados destruir um mês de trabalho com um comando errado de Git parece ser um problema de configuração.
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command

    • Seria melhor focar no próprio produto em vez de criticar o Git.
    • O Git é um VCS distribuído, e o problema foi tentar usá-lo de forma centralizada sem backups.
  • git is bad we're better

    • Como desenvolvedor de jogos, não houve muito interesse na proposta apresentada.
    • Um workflow moderno com Git LFS funciona sem atritos.
    • Cloud-native foi apresentado como recurso, mas faltam detalhes sobre suporte a on-premise e nuvem privada self-hosted.
    • Há preferência dos artistas por file locking, e usar locking com streams e branches do P4 é difícil.
  • File locking across branches - coming soon!

    • O recurso de file locking será lançado em breve, mas a proposta ainda precisa melhorar.
  • Git cli UX made be not great, but the git datastructure of representing commits, branches, trees and blobs as immutable pointers and merkle trees is a phenomenal invention.

    • A estrutura de dados do Git é uma invenção fenomenal, mas não há concordância com a ideia de que todos os comandos devam acontecer via REST API.
    • O ponto forte do Git é poder trabalhar offline com clone parcial e sincronizar os commits quando se volta a ficar online.
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command.

    • Reconhece-se a necessidade de melhorar a usabilidade do Git, mas o problema ocorrido parece ter sido uma falha de DevOps.
    • É preciso uma curva de aprendizado mais suave que apresente as vantagens do controle de versão para não programadores, mantendo os recursos avançados.
  • The world needs a git alternative.

    • Há necessidade de uma alternativa ao Git.
    • O Git tem limitações quando várias pessoas fazem commit diariamente no mesmo repositório.
    • Se o Git lidasse melhor com rebase, a velocidade de trabalho das equipes de desenvolvimento de software aumentaria 20%.
  • I get that enterprises will buy anything with "Cloud" or "AI" in the name, but VCS doesn't have anything to do with the cloud.

    • Existe a percepção de que empresas comprarão qualquer coisa que tenha "Cloud" ou "AI" no nome.
    • É importante focar em resolver problemas, não na tecnologia em si.
    • Se a experiência do usuário não for boa, os detalhes técnicos não têm valor.
    • É necessária uma estratégia de vendas para um produto que ofereça uma experiência que reduza o tempo de desenvolvimento, diminua erros e melhore a colaboração.