O que o Rails realmente integra

Prévia grátis 5 min de leitura

É sexta-feira à tarde, e uma query devolve linhas que você não pediu. Você abre o código do Active Record no seu bundle, acha o trecho que monta a condição e vê a correção. São quatro linhas.

Escrever essas quatro linhas não é a parte difícil. Fazer com que sejam integradas a um framework do qual inúmeras aplicações dependem é outro trabalho, com regras próprias. Quase ninguém explica essas regras antes de você gastar um fim de semana nelas.

Então aqui estão, antes do fim de semana.

O filtro, dito com clareza

O Rails não trata todas as contribuições do mesmo jeito. Três tipos de mudança entram por três portas bem diferentes:

Tipo de mudança O que precisa trazer Com que frequência entra
Correção de documentação O texto corrigido Muito frequente
Correção de bug Uma reprodução executável e um teste que falha Frequente
Nova funcionalidade Um argumento de que toda aplicação Rails precisa dela Raramente

Essa tabela é toda a estratégia desta lição. Uma correção de documentação é o maior valor que você produz por hora, e ela é bem-vinda. Uma correção de bug com um teste que falha é a contribuição de código mais confiável que existe. Uma funcionalidade é uma aposta arriscada, e o motivo quase não tem a ver com a qualidade do seu código.

Por que funcionalidades são recusadas

Cada método público que o Rails entrega é uma promessa que ele precisa cumprir por anos. Alguém vai chamá-lo em produção, numa aplicação que ninguém do time jamais viu, e uma refatoração futura precisa mantê-lo funcionando. Quem paga esse custo para sempre são pessoas que não o escreveram.

Então o mantenedor não pergunta "isso está correto?" ou "isso está bem escrito?". A pergunta é mais perto disto: toda aplicação Rails precisa disso, ou só uma? Uma funcionalidade que serve lindamente à sua arquitetura e a nenhuma outra pertence a uma gem, e não ao framework. Recusá-la não é um julgamento sobre o código.

É também por isso que uma ideia de funcionalidade aberta como issue, sem código, não vai a lugar nenhum. O guia de contribuição pede que ninguém abra pedidos de funcionalidade no GitHub Issues: uma funcionalidade nova precisa de alguém que escreva o código. Se você quer opinião antes de construir, o guia aponta o fórum de discussão do Rails core. Ter essa conversa antes é o jeito mais barato de não escrever um patch que ninguém queria.

Por que a documentação é subestimada

Os desenvolvedores tratam correções de documentação como o que você contribui quando não é bom o bastante para uma contribuição de verdade. É o contrário. Uma frase errada na documentação da API engana todo mundo que a lê, até alguém corrigir. Quem está mais bem posicionado para perceber é quem acabou de perder uma hora com ela: você, hoje, com a aba do navegador ainda aberta.

Mudanças de documentação também pulam quase todo o atrito. Não há teste que falha para montar nem reprodução para reduzir. E como elas não quebram nada, um pull request só de documentação põe [ci skip] no título, e o build completo não roda para ele.

A parte que fica mesmo que você nunca abra um PR

Há uma habilidade escondida por baixo de tudo isso. Para corrigir algo no Rails você precisa ler o Rails, e o código-fonte completo de cada framework que você usa já está no seu bundle, nesta máquina, agora. Aprender a responder uma pergunta abrindo esse código, em vez de procurar um post de blog, vale mais numa carreira do que a maioria dos patches integrados.

Este curso ensina a contribuir, e ensina esse hábito de leitura como a coisa que você leva de qualquer jeito.

O que este curso cobre

A lição 2 é a reprodução executável: um único arquivo Ruby autossuficiente, que instala as próprias dependências, sobe uma aplicação Rails em miniatura e falha. É a habilidade mais útil aqui, porque um relatório de bug que ninguém consegue rodar é um relatório de bug que ninguém vai corrigir.

A lição 3 põe um checkout do Rails rodando na sua máquina. Ela ensina a rodar os testes de um componente, em vez de todos, e depois a escrever o teste que falha antes de a sua correção existir.

A lição 4 é o próprio pull request: o tamanho do diff, quando uma entrada no CHANGELOG é exigida e como ela é, as convenções de mensagem de commit, rebase e squash, e o que o build confere. Essa lição traz o desafio de código.

A lição 5 é o que acontece depois que você aperta o botão, que ninguém descreve. Ela cobre triagem, silêncio, como insistir sem virar a pessoa que todo mundo silencia e por que um pull request fechado em geral não é sobre você.

A lição 6 cobre backports e branches de release, e por que uma correção integrada hoje pode levar um ano para chegar à sua aplicação.

A lição 7 põe você de volta no seu bundle, lendo o Rails como fonte primária, e fecha o ciclo.

Comece pela reprodução. Todo o resto deste curso depende de o bug poder ser executado.

Aula 1 de 7 · grátis

Continue com a aula 2

O relato de bug executável

Como escrever uma reprodução num só arquivo com bundler/inline, testar no edge Rails e reduzir a falha.

Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.

Digite para buscar...