Se você planeja adicionar, alterar ou remover um recurso voltado para o usuário ou fazer uma mudança arquitetônica significativa no Bazel, é necessário escrever um projeto documento e revise-o antes de enviar a alteração.
Veja alguns exemplos de alterações significativas:
- Adição ou exclusão de regras de build nativas
- Alterações interruptivas nas regras nativas
- Mudanças na semântica de uma regra de build nativa que afetam o comportamento de mais do que uma regra única
- Mudanças na API de definição de regras do Bazel
- Mudanças nas APIs que o Bazel usa para se conectar a outros sistemas
- Mudanças na linguagem, na semântica ou nas APIs Starlark
- Mudanças que podem ter um efeito geral no desempenho ou na memória do Bazel uso (para o bem ou para o mal)
- Mudanças em APIs internas amplamente utilizadas
- Mudanças nas sinalizações e na interface de linha de comando.
Motivos para revisões de design
Ao escrever um documento de design, você pode coordenar com outros desenvolvedores do Bazel e procure orientação da equipe principal dele. Por exemplo, quando uma proposta é adicionada, remove ou modifica qualquer função ou objeto disponível em BUILD, WORKSPACE ou bzl, adicione a equipe Starlark como revisores. Os documentos de design são revisados antes do envio porque:
- O Bazel é um sistema muito complexo. mudanças locais aparentemente inofensivas podem ter consequências globais significativas.
- A equipe recebe muitas solicitações de recursos dos usuários. essas solicitações precisam ser são avaliadas não só pela viabilidade técnica, mas pela importância em relação outras solicitações de recursos.
- Os recursos do Bazel são frequentemente implementados por pessoas de fora da equipe principal. esses colaboradores têm níveis muito variados de experiência com o Bazel.
- A equipe do Bazel tem vários níveis de experiência. nenhum membro da equipe tenha um entendimento completo de todos os aspectos do Bazel.
- As mudanças no Bazel precisam considerar a compatibilidade com versões anteriores e evitar interrupções. mudanças.
A política de revisão de design do Bazel ajuda a maximizar a probabilidade de:
- todas as solicitações de recursos recebem um nível de referência de análise.
- as pessoas certas avaliarão os designs antes de investirmos em implementação que pode não funcionar.
Para ajudar você a começar, confira os documentos de design na Repositório de propostas do Bazel. Os designs estão em desenvolvimento, então os detalhes da implementação podem mudar com o tempo e com feedback. Os documentos publicados do projeto capturam o projeto inicial, e não às mudanças contínuas à medida que os designs são implementados. Sempre acesse documentação para descrições das funcionalidades atuais do Bazel.
Fluxo de trabalho do colaborador
Como colaborador, você pode escrever um documento de design, enviar solicitações de envio e solicitar revisores para sua proposta.
Escrever o documento de design
Todos os documentos de design precisam ter um cabeçalho que inclua:
- autor
- data da última grande alteração
- lista de revisores, incluindo um (e somente um) revisor de leads
- status atual (rascunho, em análise, aprovado, rejeitado implementados, implementados)
- link para a conversa (adicionado após o anúncio)
O documento pode ser escrito como um Documento Google legível por todos ou usando Markdown. Leia abaixo sobre Comparação do Markdown / Documentos Google.
As propostas que têm impacto visível ao usuário devem ter uma seção documentando o o impacto na compatibilidade com versões anteriores (e um plano de lançamento, se necessário).
Criar uma solicitação de envio
Compartilhe seu documento de design criando uma solicitação de envio (PR) para adicionar o documento ao o índice de design. Adicionar seu arquivo de marcação ou um link de documento para seu RP.
Quando possível, escolha um revisor principal. e copie os outros revisores. Se você não escolher um revisor líder, um Bazel o mantenedor atribuirá um ao seu RP.
Depois de criar seu PR, os revisores podem fazer comentários preliminares durante a revisão de código. Por exemplo, o revisor líder pode sugerir revisores adicionais ou apontar as informações que estão faltando. O revisor líder aprova o PR quando que o processo de revisão pode começar. Isso não significa que a proposta é perfeita ou serão aprovados; isso significa que ela contém informações suficientes para inicie a discussão.
Anunciar a nova proposta
Enviar um aviso para bazel-dev quando o PR é enviado.
Você pode copiar outros grupos (por exemplo, bazel-discuss (em inglês) para receber feedback dos usuários finais do Bazel).
Iterar com os revisores
Qualquer pessoa interessada pode comentar sobre sua proposta. Tente responder a perguntas, esclarecer a proposta e abordar preocupações.
A discussão deve acontecer na conversa do anúncio. Se a proposta estiver em um Documentos Google, comentários podem ser usados no lugar (Observação: comentários anônimos são permitido).
Atualizar o status
Crie um novo PR para atualizar o status da proposta, quando a iteração for concluído. Envie o PR para o mesmo revisor principal e copie os outros revisores.
Para aceitar oficialmente a proposta, o revisor líder aprova a RP depois garantindo que os outros revisores concordem com a decisão.
Deve haver pelo menos uma semana entre o primeiro anúncio e a aprovação de uma proposta. Isso garante que os usuários tenham tempo suficiente para ler o documento e compartilhar preocupações.
A implementação pode começar antes de a proposta ser aceita, por exemplo, como prova de conceito ou experimentação. No entanto, não é possível enviar a alteração antes que a revisão seja concluída.
Como escolher um revisor de leads
Um revisor de leads deve ser um especialista no domínio que seja:
- Conhecer os subsistemas relevantes.
- Objetivos e capazes de fornecer feedback construtivo
- Disponível durante todo o período de revisão para liderar o processo
Verifique os contatos de várias equipes rótulos.
Markdown x Documentos Google
Decida o que funciona melhor para você, já que ambos são aceitos.
Benefícios de usar o Google Docs:
- Eficaz para brainstorming, pois é fácil no início.
- Edição colaborativa.
- Iteração rápida.
- Uma maneira fácil de sugerir edições.
Benefícios do uso de arquivos Markdown:
- Limpar URLs para vinculação.
- Registro explícito de revisões.
- Não esqueça de configurar os direitos de acesso antes de divulgar um link.
- Facilmente pesquisável com mecanismos de pesquisa.
- Tecnologia moderna: um texto simples não fica à vontade de nenhuma ferramenta específica e não requer conexão com a Internet.
- É possível atualizá-los mesmo que o autor não esteja mais por perto.
- Eles podem ser processados automaticamente (atualizar/detectar links inativos, buscar lista de autores etc.).
Você pode optar por iterar em um documento Google e depois convertê-lo em Markdown para posteridade.
Como usar o Google Docs
Para consistência, use o modelo de documento de design do Bazel. Ele inclui o cabeçalho necessário e cria recursos consistência com outros documentos relacionados ao Bazel. Para fazer isso, clique em Arquivo > Faça uma cópia ou clique neste link para fazer uma cópia do documento de design modelo.
Para tornar seu documento legível para todos, clique em Compartilhar > Avançado > Alterar... e escolha "Ativado - Qualquer pessoa com o link". Se você permitir comentários no documento, qualquer pessoa pode comentar anonimamente, mesmo sem uma Conta do Google.
Como usar Markdown
Os documentos são armazenados no GitHub e usam Variação de Markdown do GitHub (link em inglês) (Especificação).
Crie um PR para atualizar um documento. Mudanças significativas devem ser e revisado pelos revisores de documentos. Mudanças triviais (como erros de digitação, formatação) pode ser aprovado por qualquer pessoa.
Fluxo de trabalho do revisor
Um revisor comenta, analisa e aprova documentos de design.
Responsabilidades gerais do revisor
Você é responsável por revisar os documentos de design, pedindo informações, se necessário, e a aprovação de um projeto que seja aprovado no processo de revisão.
Ao receber uma nova proposta
- Dê uma olhada no documento.
- Comente se faltarem informações críticas ou se o design não se encaixar com as metas do projeto.
- Sugira revisores adicionais.
- Aprove o PR quando ele estiver pronto para revisão.
Durante o processo de revisão
- Participar de um diálogo com o autor do design sobre questões que são problemáticas ou precise de esclarecimentos.
- Se apropriado, convide comentários de pessoas que não sejam revisores que devem estar cientes o design.
- Decidir quais comentários devem ser abordados pelo autor como um pré-requisito para aprovação.
- Escrever "LGTM" (Tudo certo para mim) na conversa quando você estiver satisfeitas com o estado atual da proposta.
Siga esse processo para todas as solicitações de revisão de design. Não aprovar designs afeta o Bazel se eles não estiverem no índice de design.
Responsabilidades do revisor líder
Você é responsável por decidir sobre a implementação. de um design pendente. Se não puder fazer isso, você deve identificar um delegado adequado (reatribuir o RP a ele) ou reatribuir o bug a um Gerenciador do Bazel para disposição posterior.
Durante o processo de revisão
- Garantir que o processo de iteração de comentários e design avance de forma construtiva.
- Antes da aprovação, garanta que as preocupações dos outros revisores foram resolvido.
Após a aprovação de todos os revisores
- Confirme se já se passou pelo menos uma semana desde o anúncio no dia lista de e-mails.
- Verifique se o RP atualiza o status.
- Aprove o PR enviado pelo autor da proposta.
Rejeição de designs
- Garantir que o autor da RP envia uma RP; ou enviar um RP.
- O RP atualiza o status do documento.
- Adicione um comentário ao documento explicando por que o design não pode ser aprovado em seu estado atual e descrevendo as próximas etapas, se houver (como "revisitar inválido suposições e reenviá-lo").