GRPC RFCS
Introdução
Leia as regras de governança e as diretrizes de contribuição da organização GRPC antes de prosseguir.
Este repo contém as propostas de design para alterações substanciais de recursos para o GRPC que precisam ser projetadas antecipadamente. O objetivo do processo de design inicial é::
- Forneça maior visibilidade à comunidade sobre as próximas mudanças e as considerações de design ao seu redor.
- Forneça capacidade de raciocinar sobre "conjuntos" maiores de alterações grandes demais para serem cobertas em um problema ou em um PR.
- Estabeleça um processo consistente para a participação estruturada da comunidade em grandes mudanças, especialmente aquelas que afetam vários tempos de execução e implementações.
Pré -requisitos
Esse processo precisa ser seguido para qualquer alteração significativa no GRPC que precise de design. Alterações consideradas significativas podem ser:
- Recursos que precisam de implementação nos tempos de execução e idiomas.
- Alterações do processo que afetam como o produto GRPC é implementado.
- Quebrar mudanças na API pública (ou seja, grandes mudanças).
Processo
- Fork o repositório e copie o modelo grfc-template.md.
- Renomeie-o para
$CategoryName-$Summary , por exemplo: A6-client-retries.md (consulte as definições de categoria abaixo)- Para propostas específicas do idioma, inclua o nome do idioma:
L##-$Language-$Summary . Nomes canônicos: core , cpp , csharp , go , java , node , objc , php , python , ruby .
- Escreva o RFC.
- Envie uma solicitação de tração.
- Alguém da equipe GRPC será designado como aprovador como parte desta revisão. Depois que o aprovador for atribuído, o proprietário precisa iniciar uma discussão sobre o GRPC-IO e atualizar o PR com o link de discussão. Depois disso, o proprietário deve atualizar o GRFC para o estado da
In Review . Espera -se que o aprovador ajude o proprietário ao longo desse processo, conforme necessário. - Por pelo menos um período de 10 dias úteis (o período mínimo de comentários), espera -se que o proprietário responda aos comentários e faça atualizações na RFC como novas confirmações com o PR. Através do processo, a discussão precisa ser mantida no segmento designado na lista de discussão para evitar conversas de lança. O proprietário é incentivado a solicitar o máximo de feedback sobre a proposta possível durante esse período. Os comentários de RP devem ser limitados à formatação e ao vocabulário.
- Se houver consenso considerado pelo aprovador durante o período de comentários, o aprovador marcará a proposta como final e atribuirá um número GRFC. Uma vez atribuído (como parte do fechamento da discussão), o proprietário atualizará o estado do PR como final e enviará o PR. Os compromissos não devem ser esmagados; O histórico de compromissos serve como um registro de alterações feitas na proposta.
Aprovador
- Por padrão,
a11r é o aprovador, a menos que outro aprovador seja atribuído por proposta. - Se o aprovador atribuído e o proprietário não puderem resolver um problema satisfatoriamente, o aprovador final ainda será
a11r .
Categorias de propostas
As propostas devem ser numeradas em ordem crescente.
-
#An - afeta todos os idiomas. -
#Pnn - afeta os processos, como o próprio processo de proposta. -
#Lnnn - Alterações específicas do idioma em APIs externas ou suporte da plataforma. -
#Gnnnn - Alterações no nível do protocolo.
Status da proposta
- Todo candidato de proposta não comprometida começa no projeto
Draft . - Depois de aceitar para revisão e publicado no grupo, ele entra no estado
In Review . - Uma vez aprovado para envio pelo árbitro, ele entra no estado
Final . Somente pequenas mudanças são permitidas (o que se qualifica como menor é deixado para o aprovador). - Se uma proposta precisar ser revisitada, ela poderá ser transferida de volta ao
Draft ou In Review . Isso pode acontecer se os problemas forem descobertos durante a implementação. Nesse ponto, o processo de revisão, conforme descrito acima, deve ser seguido. - Depois que uma proposta é
Final e se for implementada por um idioma, ela poderá ser atualizada para um status de Implemented com os idiomas implementadores listados. (As versões de listagem não são necessárias.)