O que são RFCs e como elas funcionam na linguagem PHP
Nicolas Rocha Pereira
Posted on January 10, 2022
O que é sobre RFC
Você como uma pessoa desenvolvedora é, sem dúvidas, atenta nas novidades das tecnologias que você utiliza no dia a dia. Mas você já se perguntou como funciona para alguma pessoa dar sugestão de um novo método, uma nova funcionalidade ou até mesmo alteração em alguma tecnologia?
Isso é possível utilizando um padrão adotado pela maioria das linguagens chamado RFC ou Request For Comments. Se formos traduzi-lo, significa "Pedidos para Comentários". Esta mecânica é utilizada em muitas tecnologias como por exemplo PHP, Rust, React e o EcmaScript.
É valido lembrar que cada tecnologia possui seus próprios padrões de RFC como templates, fases de discussão e votação. O RFC é um conceito que é aplicado em diversos cenários!
RFCs no PHP
Agora que já sabemos o que é RFC, vamos entender como ela funciona no ecossistema do PHP.
No PHP as RFCs seguem um template e o fato de haver um template é interessante para seguir uma linha lógica e conseguir padronizar o processo.
No template do PHP é sugerido os seguintes campos:
- Introdução: Apresentar a ideia geral da proposta da RFC.
- Proposta: Apresentar a implementação da sua proposta, como vai ser utilizada no dia a dia em forma de código com exemplos e afins.
- Alterações incompatíveis com versões anteriores: caso sua nova funcionalidade seja incompatível com alguma versão anterior do PHP deve se apresentar a incompatibilidade e em quais versões isso ocorre.
- Proposta de Implementação na versão do PHP: Neste campo você apresenta a partir de qual versão do PHP sua implementação será realizada.
- Impacto da RFC: Neste tópico você apresenta como sua RFC vai impactar o ecossistema do PHP, o impacto no CLI, no modo Web, no core do PHP, no arquivo de configuração do PHP (php.ini) e até mesmo se terá a criação de novas constantes.
- Tarefas Abertas: apenas um alerta para você verificar de realmente ter terminado sua implementação antes da votação começar.
- Patches e Testes: Neste campo você pode vincular o link do seu Pull Request no GitHub junto com os testes apresentados.
É valido lembrar que é muito importante detalhar a RFC e propostas de implementação com o máximo de informação possível e exemplos. É a partir da RFC que será escrita a documentação da sua funcionalidade no site do PHP.
Processo de uma RFC
Para você criar uma RFC ou implementar algo é necessário ser membro do PHP Wiki e já ter contribuído de alguma forma para o PHP. Caso você não seja membro do PHP Wiki você pode solicitar para que um membro seja co-autor da RFC com você.
Antes mesmo de criar sua RFC, é necessário apresentar sua solução, quem vai implementá-la e se é uma implementação ou apenas um conceito de implementação para a lista interna de membros do PHP.
O envio deste e-mail permite que as pessoas do grupo validem sua ideia e vejam se a ideia é realmente interessante para o linguagem PHP e, caso você não receba nenhum feedback negativo, você pode começar a desenvolver sua implementação.
Todo o processo de criação da RFC acontece dentro do próprio PHP Wiki, seguindo o template já apresentado neste artigo. Para iniciar a escrita da sua RFC basta:
- Faça login no wiki com sua conta wiki.
- Navegue para um URL como https://wiki.php.net/RFC/my_RFC (use o nome do seu recurso no URL).
- Pressione o botão “Editar esta página”, preencha o modelo fornecido e salve.
- Edite https://wiki.php.net/RFC e vincule seu RFC com o status “Em rascunho”.
- Escreva o RFC.
Após ter terminado de escrever sua RFC é necessário seguir os seguintes passos:
- Mude o status da sua página RFC para “Em discussão”.
- Mude sua seção em https://wiki.php.net/RFC para “Em discussão”.
- Envie um e-mail para internals@lists.php.net apresentando seu RFC.
Após o envio de sua RFC para a lista você poderá receber feedbacks de correções, problemas e melhores implementações. Escute estes feedbacks e atualize sua RFC com os pontos negativos e positivos. Sempre que responder um e-mail referente a sua RFC não esqueça de vincular a URL da RFC!
Para colocá-la em votação é necessário considerar o tempo mínimo de duas semanas a partir da data que você enviou a sua RFC para a lista interna. É importante ter certeza que não tem mais nenhuma discussão aberta sobre sua RFC antes de ela ir para votação, caso tenha algo aberto isso poderá dificultar a aprovação.
Caso tudo esteja correto, é necessário alterar o status da sua RFC para votação e adicionar a Macro de Votação em sua RFC, o exemplo da macro está no site oficial do PHP.
Após realizar essas alterações e colocar sua RFC para votação é necessário colocar o período de votação com a data de início, data de fim e o timezone, é valido lembrar que o período de votação é de, no mínimo, de duas semanas.
Por fim é necessário enviar um outro email para a lista interna seguindo o seguinte padrão: [VOTE] {RFC Title} no assunto do e-mail.
Sistema de votação das RFC's no PHP.
Como dito anteriormente, o período de votação de uma RFC é de, no mínimo, duas semanas a partir da data em que ela foi divulgada na lista interna com o e-mail de abertura de votação. Este prazo mínimo pode ser aumentado conforme necessidade mas nunca pode ser diminuído!
Para sua RFC ser aprovada é necessário 2/3 de votos positivos. Existem alguns casos onde a RFC pode ser muito "polêmica" e este sistema de votação ser alterado.
Quem são as pessoas que podem votar!
O PHP é uma linguagem utilizada por milhares de pessoas em todo mundo e por isso é necessário ouvir seus representantes tanto de comunidades, quanto criadores de frameworks e afins.
Uma implementação errada no PHP pode ocasionar inúmeros problemas em todo o ecossistema!
Pelas razões apresentadas anteriormente podem votar para as decisões de RFC:
- Pessoas com contas VCS no php.net ou seja pessoas que contribuíram com código para o PHP.
- Representantes de comunidades PHP que são indicados por pessoas com contas VCS no php.net.
- Lideres de desenvolvimento de ferramentas que utilizam PHP (Frameworks, Bibliotecas, CMS e afins).
- Participantes regulares das discussões internas.
Algo bem legal é que temos alguns brasileiros que podem votar para as decisões de RFC, sendo eles:
- Jefferson Nathan
- Daniel Rodrigues
- Adiel Cristo
- Er Galvão Abbott
- Gabriel Caruso
- Anderson Casimiro
- Guilherme Blanco
- Klaus Silveira
- Rafael Dohms
- Luís Otávio Cobucci
Caso o criador da RFC se enquadre em uma das categorias apresentadas acima ele possui direito de voto.
Minha proposta foi recusada e agora ?
Caso a sua RFC seja recusada, não se preocupe! Isso é bem comum de acontecer. Um exemplo disso é a proposta para a implementação de enumerations no PHP. Antes de ser aprovada no PHP 8.1, foram submetidas duas outras propostas anteriores que não foram aprovadas.
Para reapresentar sua proposta é necessário que ao menos um desses fatores aconteça:
- 6 meses se passaram a partir do momento da votação anterior OU
- O(s) autor(es) realizaram alterações substanciais na proposta.
Embora seja impossível definir o que são mudanças 'substanciais', elas devem ser materiais o suficiente para que afetem significativamente o resultado de outra votação.
Fique por dentro!
Caso você tenha interesse em saber mais sobre o assunto de RFCs e acompanhar tudo que acontece dentro do PHP, indico os seguintes sites:
externals.io: este site contém todas as discussões da lista interna de e-mails do PHP, dessa forma fica mais fácil de ver as discussões e entender o que está sendo debatido
RFC Watch: este site apresenta em tempo real todos os status das RFCs, como quantos votos receberam e afins.
Blog de Novidades: este é um blog com todas as novidades sobre RFCs, juntamente com informações úteis como status, prazos e números de votos.
Por fim, se você chegou até esta parte do artigo espera que tenha gostado! Este é um assunto bem importante do ecossistema de PHP mas pouco difundido na comunidade brasileira! Gostaria de pedir para que você compartilhe em suas redes sociais e nas comunidades a qual você faz parte.
Gostaria também de agradecer aos revisores deste artigo, que me ajudaram com seu conhecimento técnico sobre o assunto.
Revisores:
Posted on January 10, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.