A equipa da infraestrutura .NET investe na consistência para acelerar a inovação de open-source.

Veja como as ferramentas partilhadas e um sistema de CI único partilhado nos repositórios do GitHub permitem ganhos grandes na produtividade dos programadores.

O desafio: uniformizar a colaboração entre contribuidores de open-source

Na qualidade de organização independente criada para promover a inovação através do desenvolvimento e da colaboração aberta, o .NET Foundation suporta um grande e complexo conjunto de projetos open-source, incluindo o .NET Core. A equipa de serviços de engenharia .NET da Microsoft contribui para o projeto e é responsável por grande parte da infraestrutura que permite que contribuidores de todo o mundo trabalhem em conjunto.

Com dezenas de diferentes repositórios git no GitHub, uma panóplia de ferramentas e diferentes sistemas de integração contínua (CI) em uso em todo o projeto, havia muita confusão que inibia a produtividade. A própria dimensão do projeto acrescentava mais complexidade. Por exemplo, só o repositório Roslyn (compilador C#) executa mais de 600 000 testes automáticos para uma iteração de um pedido pull. Com mais de 50 pedidos pull por semana, cada qual com múltiplas iterações, o número de testes de CI está na ordem dos milhares de milhões. E para o CoreFx (bibliotecas), os números são ainda maiores. À medida que a equipa de serviços de engenharia .NET planeava o lançamento do .NET Core 3.0, decidiu fazer grandes mudanças para estabelecer mais consistência e permitir que os contribuidores obtenham todo o potencial do projeto.

"A distributed repo structure and tooling makes it a lot harder for developers to move from one repo to another … And if it's this hard on Microsoft developers, how can we expect most individual contributors to figure it out?"

Matt Mitchell, Engenheiro Principal de Software dos serviços de engenharia .NET

Melhorar a produtividade através de ferramentas partilhadas e de um sistema de CI único

Para que os programadores possam alternar mais facilmente entre diferentes partes da pilha de software, a equipa de serviços de engenharia .NET decidiu juntar todos os repositórios numa estrutura de diretório comum, criou um conjunto de comandos e trabalhou numa lógica de "compilação e teste". Derrubou mais barreiras à produtividade ao mudar todos os fluxos de trabalho existentes de diferentes sistemas de CI para um sistema único no Azure Pipelines. Uma vez que o sistema é totalmente gerido, a equipa já não está sobrecarregada com a tarefa de gerir a infraestrutura de servidor de CI. A equipa está agora a treinar a configuração como código através de ficheiros YAML que estão armazenados no GitHub e os pipelines do YAML são utilizados em todo o lado. Ao passo que alguns repositórios faziam anteriormente a CI em série, o que obrigava os programadores a, por vezes, terem de esperar duas a três horas entre iterações do código, agora todos os pipelines de CI são paralelizados para permitir iterações mais rápidas.

"Now that we longer need to worry about the operational aspects of CI, we're free to focus on further improvements that will be felt by all—including Microsoft developers and individual contributors alike."

Matt Mitchell, Engenheiro Principal de Software dos serviços de engenharia .NET

Uma colaboração melhor resulta num produto melhor

Atualmente, os programadores podem mais facilmente passar de repositório para repositório, identificar a origem de um erro e propor e testar uma correção sem precisarem do conhecimento especializado que era necessário anteriormente. Esta colaboração open-source uniformizada no GitHub permite-lhes inovar mais depressa enquanto trabalham em equipa para escrever, testar, compilar e entregar software de alta qualidade. E uma vez que a equipa de serviços de engenharia .NET pode fazer alterações à infraestrutura em toda a pilha, está em condições de disponibilizar melhorias às ferramentas de que os programadores podem tirar partido em todos os repositórios de forma mais rápida e eficiente.

Veja mais de perto o percurso e a tomada de decisões da equipa.

Ler a história completa