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.
Ler a história completaO desafio: uniformizar a colaboração entre contribuidores de open-source
Enquanto organização independente criada para promover a inovação através do desenvolvimento e colaboração abertos, a .NET Foundation suporta um grande e complexo conjunto de projetos open-source, incluindo o .NET Core. A equipa dos Serviços de Engenharia do Microsoft .NET 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 repositórios git diferentes no GitHub, um vasto leque de ferramentas e vários sistemas de integração contínua (CI) diferentes em utilização em todo o projeto, havia muita confusão que inibia a produtividade. A mera escala do projeto agravava a complexidade. Por exemplo, o repositório do Roslyn (compilador C#) executa sozinho mais de 600 000 testes automatizados para uma iteração de um pedido Pull. Com mais de 50 pedidos Pull por semana, cada um com múltiplas iterações, o número de testes de CI é de milhares de milhões. Para CoreFx (bibliotecas), os números são ainda maiores. À medida que a equipa dos Serviços de Engenharia do .NET delineava os planos para a versão .NET Core 3.0, decidiu fazer grandes alterações para estabelecer uma maior consistência e possibilitar que os contribuidores concretizassem o máximo 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 facilitar a movimentação dos programadores entre diferentes partes da pilha de software, a equipa dos Serviços de Engenharia do .NET trabalhou para unir todos os repositórios numa estrutura de diretórios, num conjunto de comandos e numa lógica de compilação e teste comuns. A equipa eliminou barreiras adicionais à produtividade ao mover todos os fluxos de trabalho existentes dos diferentes sistemas de CI para um único sistema no Azure Pipelines. Uma vez que o sistema é totalmente gerido, já não tem o fardo de gerir a infraestrutura do servidor de CI. A equipa está agora a praticar configuração como código através de ficheiros YAML armazenados no GitHub, e os pipelines YAML são utilizados em todo o lado. Enquanto alguns repositórios faziam anteriormente CI em série, o que exigia aos programadores que esperassem, por vezes, duas ou três horas entre iterações no código, todos os pipelines de CI estão agora paralelizados para possibilitar 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.