docs: pt_BR: process: Translate the patch followthrough guide

Translates the section 6.followthrough.rst to Brazilian Portuguese
for the process directory.

Signed-off-by: Daniel Pereira <danielmaraboo@gmail.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Message-ID: <20260703170552.174764-2-danielmaraboo@gmail.com>
This commit is contained in:
Daniel Pereira
2026-07-03 14:05:41 -03:00
committed by Jonathan Corbet
parent acfee2292b
commit e6ad39d809
2 changed files with 221 additions and 0 deletions

View File

@@ -0,0 +1,220 @@
.. SPDX-License-Identifier: GPL-2.0
Acompanhamento
==============
Neste ponto, você seguiu as diretrizes apresentadas até aqui e, com a
adição de suas próprias habilidades de engenharia, enviou uma série perfeita
de patches. Um dos maiores erros que até mesmo desenvolvedores experientes
do kernel podem cometer é concluir que o seu trabalho agora está concluído.
Na verdade, o envio de patches indica uma transição para a próxima etapa
do processo, possivelmente com uma quantidade considerável de trabalho
ainda por fazer.
É raro um patch ser tão bom em seu primeiro envio que não haja margem para
melhorias. O processo de desenvolvimento do kernel reconhece esse fato e,
como resultado, é fortemente orientado para o aprimoramento do código
enviado. Espera-se que você, como autor desse código, trabalhe junto à
comunidade do kernel para garantir que seu código esteja de acordo com os
padrões de qualidade do kernel. A falha em participar desse processo muito
provavelmente impedirá a inclusão de seus patches na árvore principal
(*mainline*).
Trabalhando com revisores
-------------------------
Um patch de qualquer relevância resultará em uma série de comentários de outros
desenvolvedores à medida que eles revisam o código. Trabalhar com revisores
pode ser, para muitos desenvolvedores, a parte mais intimidadora do processo
de desenvolvimento do kernel. No entanto, a vida pode se tornar muito mais
fácil se você mantiver algumas coisas em mente:
* Se você explicou bem o seu patch, os revisores entenderão o seu valor
e o porquê de você ter tido o trabalho de escrevê-lo. Contudo, esse valor
não os impedirá de fazer uma pergunta fundamental: como será manter um
kernel com este código inserido nele daqui a cinco ou dez anos? Muitas das
mudanças que podem lhe pedir para fazer — desde ajustes de estilo de código
até reescritas substanciais — vêm do entendimento de que o Linux ainda estará
por aqui e sob desenvolvimento daqui a uma década.
* A revisão de código é um trabalho árduo e uma ocupação relativamente
ingrata; as pessoas lembram quem escreveu o código do kernel, mas há pouca
fama duradoura para aqueles que o revisaram. Portanto, os revisores podem
ficar ranzinzas, especialmente quando veem os mesmos erros sendo cometidos
repetidamente. Se você receber uma revisão que pareça irritada, insultuosa
ou abertamente ofensiva, resista ao impulso de responder à altura. A revisão
de código diz respeito ao código, não às pessoas, e os revisores de código
não estão atacando você pessoalmente.
* Da mesma forma, os revisores de código não estão tentando promover os
interesses de seus empregadores em detrimento dos seus. Os desenvolvedores
do kernel geralmente esperam continuar trabalhando no kernel daqui a muitos
anos, mas entendem que seu empregador pode mudar. Quase sem exceção, eles
estão verdadeiramente trabalhando em prol da criação do melhor kernel possível;
eles não estão tentando causar desconforto aos concorrentes de seus empregadores.
* Esteja preparado para solicitações aparentemente tolas de mudanças no estilo
de codificação e pedidos para refatorar parte do seu código em seções
compartilhadas do kernel. Uma das funções dos mantenedores é manter as coisas
com a mesma aparência. Às vezes, isso significa que aquele truque inteligente
(*clever hack*) em seu driver para contornar um problema
Note que você não precisa concordar com todas as mudanças sugeridas pelos
revisores. Se você acredita que o revisor entendeu mal o seu código, explique
o que realmente está acontecendo. Se tiver uma objeção técnica a uma mudança
sugerida, descreva-a e justifique a sua solução para o problema. Se as suas
explicações fizerem sentido, o revisor as aceitará. Contudo, caso a sua
explicação não seja persuasiva — especialmente se outros começarem a concordar
com o revisor —, reserve um tempo para repensar as coisas. Pode ser fácil ficar
ceguificado por sua própria solução para um problema, a ponto de não perceber
que algo está fundamentalmente errado ou que, talvez, você não esteja sequer
resolvendo o problema certo.
Andrew Morton sugeriu que todo comentário de revisão que não resulte em uma
alteração de código deveria, em vez disso, resultar em um comentário adicional
no próprio código; isso pode ajudar os futuros revisores a evitar as dúvidas
que surgiram da primeira vez.
Um erro fatal é ignorar os comentários de revisão na esperança de que eles
desapareçam. Eles não vão desaparecer. Se você reenviar o código sem ter
respondido aos comentários que recebeu da vez anterior, é provável que descubra
que os seus patches não vão a lugar nenhum.
Por falar em reenviar código: tenha em mente que os revisores não vão se
lembrar de todos os detalhes do código que você enviou da última vez. Portanto,
é sempre uma boa ideia lembrar os revisores dos problemas levantados
anteriormente e de como você lidou com eles; o registro de alterações
(*changelog*) do patch é um bom lugar para esse tipo de informação. Os revisores
não deveriam ter que vasculhar os arquivos das listas de discussão para se
familiarizarem com o que foi dito na última vez; se você ajudá-los a começar
com o pé direito, eles estarão de melhor humor quando revisitarem o seu código.
E se você tentou fazer tudo certo e as coisas ainda não estão avançando? A
maioria das divergências técnicas pode ser resolvida por meio de discussão,
mas há momentos em que alguém simplesmente precisa tomar uma decisão. Se você
acredita genuinamente que essa decisão está indo contra você de forma errada,
você sempre pode tentar recorrer a uma instância superior. Até o momento em
que este texto foi escrito, essa instância superior costuma ser Andrew Morton.
Andrew goza de um enorme respeito na comunidade de desenvolvimento do kernel;
ele frequentemente consegue destravar uma situação que parece desesperadoramente
bloqueada. Recorrer a Andrew, no entanto, não deve ser feito de ânimo leve e nem
antes que todas as outras alternativas tenham sido esgotadas. E tenha em mente,
é claro, que ele também pode não concordar com você.
O que acontece a seguir
-----------------------
Se um patch for considerado algo bom para ser adicionado ao kernel, e assim
que a maioria dos problemas de revisão tiver sido resolvida, o próximo passo
geralmente é a entrada na árvore de um mantenedor de subsistema. Como isso
funciona varia de um subsistema para o outro; cada mantenedor tem sua própria
maneira de fazer as coisas. Em particular, pode haver mais de uma árvore — uma,
talvez, dedicada a patches planejados para a próxima janela de mesclagem
(*merge window*), e outra para trabalhos de longo prazo.
Para patches que se aplicam a áreas para quais não há uma árvore de subsistema
óbvia (patches de gerenciamento de memória, por exemplo), a árvore padrão
geralmente acaba sendo a *-mm*. Patches que afetam múltiplos subsistemas
também podem acabar passando pela árvore *-mm*.
A inclusão em uma árvore de subsistema pode trazer um nível mais alto de
visibilidade para um patch. Agora, outros desenvolvedores que trabalham com
aquela árvore receberão o patch por padrão. As árvores de subsistemas tipicamente
alimentam a *linux-next* também, tornando seus conteúdos visíveis para a
comunidade de desenvolvimento como um todo. Neste ponto, há uma boa chance de
você receber mais comentários de um novo conjunto de revisores; esses
comentários precisam ser respondidos da mesma forma que na rodada anterior.
O que também pode acontecer neste ponto, dependendo da natureza do seu patch,
é surgirem conflitos com o trabalho que está sendo feito por outros. No pior
dos casos, conflitos pesados de patches podem fazer com que alguns trabalhos
sejam deixados em segundo plano, para que os patches restantes possam ser
ajustados e mesclados. Outras vezes, a resolução de conflitos envolverá trabalhar
junto a outros desenvolvedores e, possivelmente, mover alguns patches entre
árvores para garantir que tudo se aplique de forma limpa. Este trabalho pode ser
árduo, mas console-se com uma vantagem: antes do surgimento da árvore *linux-next*,
esses conflitos frequentemente só apareciam durante a janela de mesclagem e
tinham que ser resolvidos às pressas. Agora eles podem ser resolvidos com calma,
antes que a janela de mesclagem se abra.
Um belo dia, se tudo correr bem, você fará login e verá que o seu patch foi
mesclado ao kernel principal (*mainline*). Parabéns! No entanto, assim que a
comemoração terminar (e você tiver se adicionado ao arquivo MAINTAINERS), vale
a pena lembrar de um pequeno fato importante: o trabalho ainda não acabou. A
mesclagem na árvore principal traz os seus próprios desafios.
Para começar, a visibilidade do seu patch aumentou ainda mais. Pode haver
uma nova rodada de comentários de desenvolvedores que não estavam cientes do
patch antes. Pode ser tentador ignorá-los, já que não há mais nenhuma dúvida
sobre a mesclagem do seu código. No entanto, resista a essa tentação; você
ainda precisa ser receptivo aos desenvolvedores que tiverem dúvidas ou
sugestões.
Mais importante ainda: a inclusão na árvore principal coloca o seu código
nas mãos de um grupo muito maior de testadores. Mesmo que você tenha contribuído
com um driver para um hardware que ainda não está disponível, você se
surpreenderá com a quantidade de pessoas que compilarão seu código em seus
próprios kernels. E, logicamente, onde há testadores, haverá relatórios de
erros (*bug reports*).
O pior tipo de relatório de erro são as regressões (*regressions*). Se o seu
patch causar uma regressão, você descobrirá uma quantidade desconfortável de
olhos voltados para você; as regressões precisam ser corrigidas o mais rápido
possível. Se você não estiver disposto ou for incapaz de corrigir a regressão
(e ninguém mais fizer isso por você), seu patch quase certamente será removido
durante o período de estabilização. Além de anular todo o trabalho que você teve
para colocar seu patch na árvore principal, ter um patch removido como resultado
da falha em corrigir uma regressão pode muito bem tornar mais difícil para você
mesclar trabalhos no futuro.
Depois que todas as regressões tiverem sido tratadas, pode haver outros erros
comuns com os quais lidar. O período de estabilização é a sua melhor oportunidade
para corrigir esses problemas e garantir que a estreia do seu código em um
lançamento do kernel principal seja o mais sólida possível. Portanto, por favor,
responda aos relatórios de erros e corrija os problemas, se for viável. É para
isso que serve o período de estabilização; você pode começar a criar novos
patches fantásticos assim que quaisquer problemas com os antigos tiverem sido
resolvidos.
E não se esqueça de que existem outros marcos que também podem gerar relatórios
de erros: o próximo lançamento estável da árvore principal, o momento em que
distribuidores proeminentes adotarem uma versão do kernel que contenha o seu
patch, etc. Continuar respondendo a esses relatórios é uma questão de orgulho
básico pelo seu trabalho. Se isso não for motivação suficiente, contudo, também
vale a pena considerar que a comunidade de desenvolvimento se lembra dos
desenvolvedores que perdem o interesse em seu próprio código após a mesclagem.
A próxima vez que você enviar um patch, eles o avaliarão sob a suposição de
que você não estará por perto para mantê-lo depois.
Outras coisas que podem acontecer
---------------------------------
Um dia, você poderá abrir o seu cliente de e-mail e ver que alguém lhe enviou
um patch para o seu código. Afinal, essa é uma das vantagens de ter o seu
código disponível publicamente. Se você concordar com o patch, poderá encaminhá-lo
para o mantenedor do subsistema (certifique-se de incluir uma linha ``From:``
adequada para que a atribuição de autoria esteja correta e adicione a sua
própria assinatura — *signoff*) ou enviar uma resposta com um ``Acked-by:``
e deixar que o remetente original o envie para cima.
Se você não concordar com o patch, envie uma resposta educada explicando o
motivo. Se possível, diga ao autor quais alterações precisam ser feitas para
que o patch seja aceitável para você. Existe uma certa resistência em mesclar
patches que sofrem oposição do autor e mantenedor do código, mas isso tem limite.
Se você for visto como alguém que está bloqueando um bom trabalho sem necessidade,
esses patches eventualmente seguirão outro fluxo ao seu redor e entrarão na
árvore principal de qualquer maneira. No kernel do Linux, ninguém tem poder de
veto absoluto sobre nenhum código. Exceto, talvez, o Linus.
Em ocasiões muito raras, você poderá ver algo completamente diferente: outro
desenvolvedor envia uma solução diferente para o seu problema. Nesse ponto,
as chances são de que um dos dois patches não seja mesclado, e o argumento
"o meu chegou primeiro" não é considerado um argumento técnico convincente.
Se o patch de outra pessoa deslocar o seu e entrar na árvore principal, existe
realmente apenas uma maneira de responder: fique satisfeito pelo fato de o seu
problema ter sido resolvido e siga adiante com o seu trabalho. Ter o próprio
trabalho deixado de lado dessa maneira pode ser doloroso e desanimador, mas a
comunidade se lembrará da sua reação muito depois de terem esquecido de quem
foi o patch que realmente foi mesclado.

View File

@@ -22,3 +22,4 @@ conhecimento profundo de programação de kernel para ser compreendida.
3.Early-stage
4.Coding
5.Posting
6.Followthrough