Skip to content

Instantly share code, notes, and snippets.

@marcelgsantos
Created December 27, 2021 00:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marcelgsantos/cdb52653cf6c4e03d85a1dbf9c40f4e9 to your computer and use it in GitHub Desktop.
Save marcelgsantos/cdb52653cf6c4e03d85a1dbf9c40f4e9 to your computer and use it in GitHub Desktop.

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

Aprendendo sobre RFC O que é uma 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!

RFC's no PHP 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 implementação 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 implementação 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 seja realizada.
  • Impacto da RFC: Neste tópico você apresenta como sua RFC vai impactar o ecossistema do PHP, o impacto no modo 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 implementação 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 implementaçã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 uma 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 tirar sua RFC do status "Em discussão" e levar para o status de "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.

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 e-mail para a lista interna seguindo o seguinte padrão: [VOTE] {RFC Title} no assunto do e-mail.

Sistema de votação das RFCs 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.

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 ser determinando para diversos problemas em todo o ecossistema!

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.
  • Líderes de desenvolvimento de ferramentas que utilizam PHP (frameworks, bibliotecas, CMSs e afins).
  • Participantes regulares das discussões internas.

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.

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:

Sugestões

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment