Proposals e RFCs

Um belo dia você está trabalhando com sua tecnologia favorita. Após vários anos de experiência, você enxerga a possibilidade de melhorar aquele processo ou uso daquela tecnologia. Então, você projeta essa ideia e percebe que ela realmente funciona e pode trazer benefícios. Você está tão feliz e tem tanto orgulho da sua solução, que quer compartilhar isso para outros usuários da sua tecnologia favorita. Para isso, você envia emails para os líderes de desenvolvimento da sua tecnologia, relatando as melhorias que sua proposta pode oferecer. Acontece que eles estão tão ocupados que nem ao menos lêem seu email. Como você não faz parte do time de desenvolvimento, também não há a possibilidade de distribuir essa melhoria para a comunidade, então sua solução cai no esquecimento e nunca será vista ou considerada.

Esse é um acontecimento corriqueiro em comunidades open-source, um bom exemplo disso é o caso do NeoVim, que foi um fork do Vim criado supostamente por causa da rejeição de patches. Comunidades sem um mecanismo de propostas estão dependendo do alinhamento de pensamento, boa vontade ou disponibilidade dos core developers para melhorias ou mudanças sugeridas por usuários comuns. Entretanto, existem meios de contornar essa limitição, um deles são os proposals. Proposals, em português: propostas, como o nome diz, são meios em que usuários podem propor algum tipo de solução, mudança ou melhoria de uma tecnologia. Idealmente elas podem ser feitas por qualquer membro da comunidade. Essa pessoa tem a ideia da solução, escreve um documento contendo toda explicação detalhada sobre o design de sua ideia, suas implicações, seus pontos positivos e negativos, sua implementação, sua relevância, etc. Então, esse documento é submetido como uma proposta, geralmente em algum local centralizado onde todos os membros da comunidade possuem acesso, como: Issues do GitHub, lista de emails, site da tecnologia. Após a proposta ter sido publicada, outros membros da comunidade poderão vê-la e fazer comentários sobre, criando uma discussão sobre a viabilidade da sua proposta ser incorporada. Inevitavelmente, essa discussão chegará a algum líder da comunidade que será responsável por revisá-la, então, baseado nas opiniões dos usuários e na necessidade da comunidade, a proposta pode ser aceita ou rejeitada.

Além de servirem como propostas de ideias, elas podem servir como guias para comunidade e padrões para especificações. Exemplos disso são os RFCs (Request for Comments) da IETF, que são padrões de protocolos e comunicação na internet; PEPs (Python Enhancement Proposals) que são propostas de melhoria da comunidade Python; TC39 são propostas para especificação da linguagem ECMAScript/JavaScript; Existem até mesmo RFCs de 1º de abril ;P

Proposals são muito importantes para constante melhoria de tecnologias e manter a comunidade engajada. Isso faz com que todos os usuários possam participar ativamente das decisões e rumos que a tecnologia tomará. Há uma diminuição na barreira de contribuição, onde tanto o iniciante como o líder máximo do projeto podem contribuir. Diferentes opiniões de diferentes pessoas são levadas em consideração ao invés de uma única pessoa, ou grupo de pessoas com um mesmo pensamento, assim evitando elitismo e centralização de ideias.

Propostas são ótimas, pois estabelece um diálogo onde as partes devem ser ouvidas. Não somente no ambiente técnico, mas em todos, propostas são melhores e mais saudáveis que imposições. Proponha mais e imponha menos.