DEV Community

Nicolas Rocha Pereira
Nicolas Rocha Pereira

Posted on

O que são RFCs e como elas funcionam na linguagem PHP

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:

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:

Caso o criador da RFC se enquadre em uma das categorias apresentadas acima ele possui direito de voto.

Minha proposta foi negada e agora ?

Caso a sua RFC seja negada, 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:

Discussion (10)

Collapse
fabinhoizzy profile image
Fábio da Silva Alves

Muito bom o artigo !!

Collapse
nicolaspereira profile image
Nicolas Rocha Pereira Author

Obrigado!

Collapse
dev_jessica_felix profile image
Jéssica Félix

parabens pelo artigo!!!

Collapse
nicolaspereira profile image
Nicolas Rocha Pereira Author

Valeu pela leitura e feedback Jéssica

Collapse
diego_b2 profile image
Diego Brocanelli

Excelente texto, parabéns! Mostra o quão democrática a linguagem é, onde sua evolução é guiada e construída pela comunidade.

Collapse
nicolaspereira profile image
Nicolas Rocha Pereira Author

Obrigado Diego, realmente o PHP é muito democrático e mostra a importância da comunidade!

Collapse
arthurabreu00 profile image
Arthur Tavares

👏🏽👏🏽

Collapse
nicolaspereira profile image
Nicolas Rocha Pereira Author

valeu :)

Collapse
isabellaherman profile image
Isabella Herman

🔥

Collapse
nicolaspereira profile image
Nicolas Rocha Pereira Author

valeuu