xref: /linux/Documentation/translations/pt_BR/process/6.Followthrough.rst (revision 72fdff1416e280e2baaa3cca69574defb998437e)
1*e6ad39d8SDaniel Pereira.. SPDX-License-Identifier: GPL-2.0
2*e6ad39d8SDaniel Pereira
3*e6ad39d8SDaniel PereiraAcompanhamento
4*e6ad39d8SDaniel Pereira==============
5*e6ad39d8SDaniel Pereira
6*e6ad39d8SDaniel PereiraNeste ponto, você seguiu as diretrizes apresentadas até aqui e, com a
7*e6ad39d8SDaniel Pereiraadição de suas próprias habilidades de engenharia, enviou uma série perfeita
8*e6ad39d8SDaniel Pereirade patches. Um dos maiores erros que até mesmo desenvolvedores experientes
9*e6ad39d8SDaniel Pereirado kernel podem cometer é concluir que o seu trabalho agora está concluído.
10*e6ad39d8SDaniel PereiraNa verdade, o envio de patches indica uma transição para a próxima etapa
11*e6ad39d8SDaniel Pereirado processo, possivelmente com uma quantidade considerável de trabalho
12*e6ad39d8SDaniel Pereiraainda por fazer.
13*e6ad39d8SDaniel Pereira
14*e6ad39d8SDaniel PereiraÉ raro um patch ser tão bom em seu primeiro envio que não haja margem para
15*e6ad39d8SDaniel Pereiramelhorias. O processo de desenvolvimento do kernel reconhece esse fato e,
16*e6ad39d8SDaniel Pereiracomo resultado, é fortemente orientado para o aprimoramento do código
17*e6ad39d8SDaniel Pereiraenviado. Espera-se que você, como autor desse código, trabalhe junto à
18*e6ad39d8SDaniel Pereiracomunidade do kernel para garantir que seu código esteja de acordo com os
19*e6ad39d8SDaniel Pereirapadrões de qualidade do kernel. A falha em participar desse processo muito
20*e6ad39d8SDaniel Pereiraprovavelmente impedirá a inclusão de seus patches na árvore principal
21*e6ad39d8SDaniel Pereira(*mainline*).
22*e6ad39d8SDaniel Pereira
23*e6ad39d8SDaniel Pereira
24*e6ad39d8SDaniel PereiraTrabalhando com revisores
25*e6ad39d8SDaniel Pereira-------------------------
26*e6ad39d8SDaniel Pereira
27*e6ad39d8SDaniel PereiraUm patch de qualquer relevância resultará em uma série de comentários de outros
28*e6ad39d8SDaniel Pereiradesenvolvedores à medida que eles revisam o código. Trabalhar com revisores
29*e6ad39d8SDaniel Pereirapode ser, para muitos desenvolvedores, a parte mais intimidadora do processo
30*e6ad39d8SDaniel Pereirade desenvolvimento do kernel. No entanto, a vida pode se tornar muito mais
31*e6ad39d8SDaniel Pereirafácil se você mantiver algumas coisas em mente:
32*e6ad39d8SDaniel Pereira
33*e6ad39d8SDaniel Pereira* Se você explicou bem o seu patch, os revisores entenderão o seu valor
34*e6ad39d8SDaniel Pereira  e o porquê de você ter tido o trabalho de escrevê-lo. Contudo, esse valor
35*e6ad39d8SDaniel Pereira  não os impedirá de fazer uma pergunta fundamental: como será manter um
36*e6ad39d8SDaniel Pereira  kernel com este código inserido nele daqui a cinco ou dez anos? Muitas das
37*e6ad39d8SDaniel Pereira  mudanças que podem lhe pedir para fazer — desde ajustes de estilo de código
38*e6ad39d8SDaniel Pereira  até reescritas substanciais — vêm do entendimento de que o Linux ainda estará
39*e6ad39d8SDaniel Pereira  por aqui e sob desenvolvimento daqui a uma década.
40*e6ad39d8SDaniel Pereira
41*e6ad39d8SDaniel Pereira* A revisão de código é um trabalho árduo e uma ocupação relativamente
42*e6ad39d8SDaniel Pereira  ingrata; as pessoas lembram quem escreveu o código do kernel, mas há pouca
43*e6ad39d8SDaniel Pereira  fama duradoura para aqueles que o revisaram. Portanto, os revisores podem
44*e6ad39d8SDaniel Pereira  ficar ranzinzas, especialmente quando veem os mesmos erros sendo cometidos
45*e6ad39d8SDaniel Pereira  repetidamente. Se você receber uma revisão que pareça irritada, insultuosa
46*e6ad39d8SDaniel Pereira  ou abertamente ofensiva, resista ao impulso de responder à altura. A revisão
47*e6ad39d8SDaniel Pereira  de código diz respeito ao código, não às pessoas, e os revisores de código
48*e6ad39d8SDaniel Pereira  não estão atacando você pessoalmente.
49*e6ad39d8SDaniel Pereira
50*e6ad39d8SDaniel Pereira* Da mesma forma, os revisores de código não estão tentando promover os
51*e6ad39d8SDaniel Pereira  interesses de seus empregadores em detrimento dos seus. Os desenvolvedores
52*e6ad39d8SDaniel Pereira  do kernel geralmente esperam continuar trabalhando no kernel daqui a muitos
53*e6ad39d8SDaniel Pereira  anos, mas entendem que seu empregador pode mudar. Quase sem exceção, eles
54*e6ad39d8SDaniel Pereira  estão verdadeiramente trabalhando em prol da criação do melhor kernel possível;
55*e6ad39d8SDaniel Pereira  eles não estão tentando causar desconforto aos concorrentes de seus empregadores.
56*e6ad39d8SDaniel Pereira
57*e6ad39d8SDaniel Pereira* Esteja preparado para solicitações aparentemente tolas de mudanças no estilo
58*e6ad39d8SDaniel Pereira  de codificação e pedidos para refatorar parte do seu código em seções
59*e6ad39d8SDaniel Pereira  compartilhadas do kernel. Uma das funções dos mantenedores é manter as coisas
60*e6ad39d8SDaniel Pereira  com a mesma aparência. Às vezes, isso significa que aquele truque inteligente
61*e6ad39d8SDaniel Pereira  (*clever hack*) em seu driver para contornar um problema
62*e6ad39d8SDaniel Pereira
63*e6ad39d8SDaniel PereiraNote que você não precisa concordar com todas as mudanças sugeridas pelos
64*e6ad39d8SDaniel Pereirarevisores. Se você acredita que o revisor entendeu mal o seu código, explique
65*e6ad39d8SDaniel Pereirao que realmente está acontecendo. Se tiver uma objeção técnica a uma mudança
66*e6ad39d8SDaniel Pereirasugerida, descreva-a e justifique a sua solução para o problema. Se as suas
67*e6ad39d8SDaniel Pereiraexplicações fizerem sentido, o revisor as aceitará. Contudo, caso a sua
68*e6ad39d8SDaniel Pereiraexplicação não seja persuasiva — especialmente se outros começarem a concordar
69*e6ad39d8SDaniel Pereiracom o revisor —, reserve um tempo para repensar as coisas. Pode ser fácil ficar
70*e6ad39d8SDaniel Pereiraceguificado por sua própria solução para um problema, a ponto de não perceber
71*e6ad39d8SDaniel Pereiraque algo está fundamentalmente errado ou que, talvez, você não esteja sequer
72*e6ad39d8SDaniel Pereiraresolvendo o problema certo.
73*e6ad39d8SDaniel Pereira
74*e6ad39d8SDaniel PereiraAndrew Morton sugeriu que todo comentário de revisão que não resulte em uma
75*e6ad39d8SDaniel Pereiraalteração de código deveria, em vez disso, resultar em um comentário adicional
76*e6ad39d8SDaniel Pereirano próprio código; isso pode ajudar os futuros revisores a evitar as dúvidas
77*e6ad39d8SDaniel Pereiraque surgiram da primeira vez.
78*e6ad39d8SDaniel Pereira
79*e6ad39d8SDaniel PereiraUm erro fatal é ignorar os comentários de revisão na esperança de que eles
80*e6ad39d8SDaniel Pereiradesapareçam. Eles não vão desaparecer. Se você reenviar o código sem ter
81*e6ad39d8SDaniel Pereirarespondido aos comentários que recebeu da vez anterior, é provável que descubra
82*e6ad39d8SDaniel Pereiraque os seus patches não vão a lugar nenhum.
83*e6ad39d8SDaniel Pereira
84*e6ad39d8SDaniel PereiraPor falar em reenviar código: tenha em mente que os revisores não vão se
85*e6ad39d8SDaniel Pereiralembrar de todos os detalhes do código que você enviou da última vez. Portanto,
86*e6ad39d8SDaniel Pereiraé sempre uma boa ideia lembrar os revisores dos problemas levantados
87*e6ad39d8SDaniel Pereiraanteriormente e de como você lidou com eles; o registro de alterações
88*e6ad39d8SDaniel Pereira(*changelog*) do patch é um bom lugar para esse tipo de informação. Os revisores
89*e6ad39d8SDaniel Pereiranão deveriam ter que vasculhar os arquivos das listas de discussão para se
90*e6ad39d8SDaniel Pereirafamiliarizarem com o que foi dito na última vez; se você ajudá-los a começar
91*e6ad39d8SDaniel Pereiracom o pé direito, eles estarão de melhor humor quando revisitarem o seu código.
92*e6ad39d8SDaniel Pereira
93*e6ad39d8SDaniel PereiraE se você tentou fazer tudo certo e as coisas ainda não estão avançando? A
94*e6ad39d8SDaniel Pereiramaioria das divergências técnicas pode ser resolvida por meio de discussão,
95*e6ad39d8SDaniel Pereiramas há momentos em que alguém simplesmente precisa tomar uma decisão. Se você
96*e6ad39d8SDaniel Pereiraacredita genuinamente que essa decisão está indo contra você de forma errada,
97*e6ad39d8SDaniel Pereiravocê sempre pode tentar recorrer a uma instância superior. Até o momento em
98*e6ad39d8SDaniel Pereiraque este texto foi escrito, essa instância superior costuma ser Andrew Morton.
99*e6ad39d8SDaniel PereiraAndrew goza de um enorme respeito na comunidade de desenvolvimento do kernel;
100*e6ad39d8SDaniel Pereiraele frequentemente consegue destravar uma situação que parece desesperadoramente
101*e6ad39d8SDaniel Pereirabloqueada. Recorrer a Andrew, no entanto, não deve ser feito de ânimo leve e nem
102*e6ad39d8SDaniel Pereiraantes que todas as outras alternativas tenham sido esgotadas. E tenha em mente,
103*e6ad39d8SDaniel Pereiraé claro, que ele também pode não concordar com você.
104*e6ad39d8SDaniel Pereira
105*e6ad39d8SDaniel PereiraO que acontece a seguir
106*e6ad39d8SDaniel Pereira-----------------------
107*e6ad39d8SDaniel Pereira
108*e6ad39d8SDaniel PereiraSe um patch for considerado algo bom para ser adicionado ao kernel, e assim
109*e6ad39d8SDaniel Pereiraque a maioria dos problemas de revisão tiver sido resolvida, o próximo passo
110*e6ad39d8SDaniel Pereirageralmente é a entrada na árvore de um mantenedor de subsistema. Como isso
111*e6ad39d8SDaniel Pereirafunciona varia de um subsistema para o outro; cada mantenedor tem sua própria
112*e6ad39d8SDaniel Pereiramaneira de fazer as coisas. Em particular, pode haver mais de uma árvore — uma,
113*e6ad39d8SDaniel Pereiratalvez, dedicada a patches planejados para a próxima janela de mesclagem
114*e6ad39d8SDaniel Pereira(*merge window*), e outra para trabalhos de longo prazo.
115*e6ad39d8SDaniel Pereira
116*e6ad39d8SDaniel PereiraPara patches que se aplicam a áreas para quais não há uma árvore de subsistema
117*e6ad39d8SDaniel Pereiraóbvia (patches de gerenciamento de memória, por exemplo), a árvore padrão
118*e6ad39d8SDaniel Pereirageralmente acaba sendo a *-mm*. Patches que afetam múltiplos subsistemas
119*e6ad39d8SDaniel Pereiratambém podem acabar passando pela árvore *-mm*.
120*e6ad39d8SDaniel Pereira
121*e6ad39d8SDaniel PereiraA inclusão em uma árvore de subsistema pode trazer um nível mais alto de
122*e6ad39d8SDaniel Pereiravisibilidade para um patch. Agora, outros desenvolvedores que trabalham com
123*e6ad39d8SDaniel Pereiraaquela árvore receberão o patch por padrão. As árvores de subsistemas tipicamente
124*e6ad39d8SDaniel Pereiraalimentam a *linux-next* também, tornando seus conteúdos visíveis para a
125*e6ad39d8SDaniel Pereiracomunidade de desenvolvimento como um todo. Neste ponto, há uma boa chance de
126*e6ad39d8SDaniel Pereiravocê receber mais comentários de um novo conjunto de revisores; esses
127*e6ad39d8SDaniel Pereiracomentários precisam ser respondidos da mesma forma que na rodada anterior.
128*e6ad39d8SDaniel Pereira
129*e6ad39d8SDaniel PereiraO que também pode acontecer neste ponto, dependendo da natureza do seu patch,
130*e6ad39d8SDaniel Pereiraé surgirem conflitos com o trabalho que está sendo feito por outros. No pior
131*e6ad39d8SDaniel Pereirados casos, conflitos pesados de patches podem fazer com que alguns trabalhos
132*e6ad39d8SDaniel Pereirasejam deixados em segundo plano, para que os patches restantes possam ser
133*e6ad39d8SDaniel Pereiraajustados e mesclados. Outras vezes, a resolução de conflitos envolverá trabalhar
134*e6ad39d8SDaniel Pereirajunto a outros desenvolvedores e, possivelmente, mover alguns patches entre
135*e6ad39d8SDaniel Pereiraárvores para garantir que tudo se aplique de forma limpa. Este trabalho pode ser
136*e6ad39d8SDaniel Pereiraárduo, mas console-se com uma vantagem: antes do surgimento da árvore *linux-next*,
137*e6ad39d8SDaniel Pereiraesses conflitos frequentemente só apareciam durante a janela de mesclagem e
138*e6ad39d8SDaniel Pereiratinham que ser resolvidos às pressas. Agora eles podem ser resolvidos com calma,
139*e6ad39d8SDaniel Pereiraantes que a janela de mesclagem se abra.
140*e6ad39d8SDaniel Pereira
141*e6ad39d8SDaniel PereiraUm belo dia, se tudo correr bem, você fará login e verá que o seu patch foi
142*e6ad39d8SDaniel Pereiramesclado ao kernel principal (*mainline*). Parabéns! No entanto, assim que a
143*e6ad39d8SDaniel Pereiracomemoração terminar (e você tiver se adicionado ao arquivo MAINTAINERS), vale
144*e6ad39d8SDaniel Pereiraa pena lembrar de um pequeno fato importante: o trabalho ainda não acabou. A
145*e6ad39d8SDaniel Pereiramesclagem na árvore principal traz os seus próprios desafios.
146*e6ad39d8SDaniel Pereira
147*e6ad39d8SDaniel PereiraPara começar, a visibilidade do seu patch aumentou ainda mais. Pode haver
148*e6ad39d8SDaniel Pereirauma nova rodada de comentários de desenvolvedores que não estavam cientes do
149*e6ad39d8SDaniel Pereirapatch antes. Pode ser tentador ignorá-los, já que não há mais nenhuma dúvida
150*e6ad39d8SDaniel Pereirasobre a mesclagem do seu código. No entanto, resista a essa tentação; você
151*e6ad39d8SDaniel Pereiraainda precisa ser receptivo aos desenvolvedores que tiverem dúvidas ou
152*e6ad39d8SDaniel Pereirasugestões.
153*e6ad39d8SDaniel Pereira
154*e6ad39d8SDaniel PereiraMais importante ainda: a inclusão na árvore principal coloca o seu código
155*e6ad39d8SDaniel Pereiranas mãos de um grupo muito maior de testadores. Mesmo que você tenha contribuído
156*e6ad39d8SDaniel Pereiracom um driver para um hardware que ainda não está disponível, você se
157*e6ad39d8SDaniel Pereirasurpreenderá com a quantidade de pessoas que compilarão seu código em seus
158*e6ad39d8SDaniel Pereirapróprios kernels. E, logicamente, onde há testadores, haverá relatórios de
159*e6ad39d8SDaniel Pereiraerros (*bug reports*).
160*e6ad39d8SDaniel Pereira
161*e6ad39d8SDaniel PereiraO pior tipo de relatório de erro são as regressões (*regressions*). Se o seu
162*e6ad39d8SDaniel Pereirapatch causar uma regressão, você descobrirá uma quantidade desconfortável de
163*e6ad39d8SDaniel Pereiraolhos voltados para você; as regressões precisam ser corrigidas o mais rápido
164*e6ad39d8SDaniel Pereirapossível. Se você não estiver disposto ou for incapaz de corrigir a regressão
165*e6ad39d8SDaniel Pereira(e ninguém mais fizer isso por você), seu patch quase certamente será removido
166*e6ad39d8SDaniel Pereiradurante o período de estabilização. Além de anular todo o trabalho que você teve
167*e6ad39d8SDaniel Pereirapara colocar seu patch na árvore principal, ter um patch removido como resultado
168*e6ad39d8SDaniel Pereirada falha em corrigir uma regressão pode muito bem tornar mais difícil para você
169*e6ad39d8SDaniel Pereiramesclar trabalhos no futuro.
170*e6ad39d8SDaniel Pereira
171*e6ad39d8SDaniel PereiraDepois que todas as regressões tiverem sido tratadas, pode haver outros erros
172*e6ad39d8SDaniel Pereiracomuns com os quais lidar. O período de estabilização é a sua melhor oportunidade
173*e6ad39d8SDaniel Pereirapara corrigir esses problemas e garantir que a estreia do seu código em um
174*e6ad39d8SDaniel Pereiralançamento do kernel principal seja o mais sólida possível. Portanto, por favor,
175*e6ad39d8SDaniel Pereiraresponda aos relatórios de erros e corrija os problemas, se for viável. É para
176*e6ad39d8SDaniel Pereiraisso que serve o período de estabilização; você pode começar a criar novos
177*e6ad39d8SDaniel Pereirapatches fantásticos assim que quaisquer problemas com os antigos tiverem sido
178*e6ad39d8SDaniel Pereiraresolvidos.
179*e6ad39d8SDaniel Pereira
180*e6ad39d8SDaniel PereiraE não se esqueça de que existem outros marcos que também podem gerar relatórios
181*e6ad39d8SDaniel Pereirade erros: o próximo lançamento estável da árvore principal, o momento em que
182*e6ad39d8SDaniel Pereiradistribuidores proeminentes adotarem uma versão do kernel que contenha o seu
183*e6ad39d8SDaniel Pereirapatch, etc. Continuar respondendo a esses relatórios é uma questão de orgulho
184*e6ad39d8SDaniel Pereirabásico pelo seu trabalho. Se isso não for motivação suficiente, contudo, também
185*e6ad39d8SDaniel Pereiravale a pena considerar que a comunidade de desenvolvimento se lembra dos
186*e6ad39d8SDaniel Pereiradesenvolvedores que perdem o interesse em seu próprio código após a mesclagem.
187*e6ad39d8SDaniel PereiraA próxima vez que você enviar um patch, eles o avaliarão sob a suposição de
188*e6ad39d8SDaniel Pereiraque você não estará por perto para mantê-lo depois.
189*e6ad39d8SDaniel Pereira
190*e6ad39d8SDaniel Pereira
191*e6ad39d8SDaniel PereiraOutras coisas que podem acontecer
192*e6ad39d8SDaniel Pereira---------------------------------
193*e6ad39d8SDaniel Pereira
194*e6ad39d8SDaniel PereiraUm dia, você poderá abrir o seu cliente de e-mail e ver que alguém lhe enviou
195*e6ad39d8SDaniel Pereiraum patch para o seu código. Afinal, essa é uma das vantagens de ter o seu
196*e6ad39d8SDaniel Pereiracódigo disponível publicamente. Se você concordar com o patch, poderá encaminhá-lo
197*e6ad39d8SDaniel Pereirapara o mantenedor do subsistema (certifique-se de incluir uma linha ``From:``
198*e6ad39d8SDaniel Pereiraadequada para que a atribuição de autoria esteja correta e adicione a sua
199*e6ad39d8SDaniel Pereiraprópria assinatura — *signoff*) ou enviar uma resposta com um ``Acked-by:``
200*e6ad39d8SDaniel Pereirae deixar que o remetente original o envie para cima.
201*e6ad39d8SDaniel Pereira
202*e6ad39d8SDaniel PereiraSe você não concordar com o patch, envie uma resposta educada explicando o
203*e6ad39d8SDaniel Pereiramotivo. Se possível, diga ao autor quais alterações precisam ser feitas para
204*e6ad39d8SDaniel Pereiraque o patch seja aceitável para você. Existe uma certa resistência em mesclar
205*e6ad39d8SDaniel Pereirapatches que sofrem oposição do autor e mantenedor do código, mas isso tem limite.
206*e6ad39d8SDaniel PereiraSe você for visto como alguém que está bloqueando um bom trabalho sem necessidade,
207*e6ad39d8SDaniel Pereiraesses patches eventualmente seguirão outro fluxo ao seu redor e entrarão na
208*e6ad39d8SDaniel Pereiraárvore principal de qualquer maneira. No kernel do Linux, ninguém tem poder de
209*e6ad39d8SDaniel Pereiraveto absoluto sobre nenhum código. Exceto, talvez, o Linus.
210*e6ad39d8SDaniel Pereira
211*e6ad39d8SDaniel PereiraEm ocasiões muito raras, você poderá ver algo completamente diferente: outro
212*e6ad39d8SDaniel Pereiradesenvolvedor envia uma solução diferente para o seu problema. Nesse ponto,
213*e6ad39d8SDaniel Pereiraas chances são de que um dos dois patches não seja mesclado, e o argumento
214*e6ad39d8SDaniel Pereira"o meu chegou primeiro" não é considerado um argumento técnico convincente.
215*e6ad39d8SDaniel PereiraSe o patch de outra pessoa deslocar o seu e entrar na árvore principal, existe
216*e6ad39d8SDaniel Pereirarealmente apenas uma maneira de responder: fique satisfeito pelo fato de o seu
217*e6ad39d8SDaniel Pereiraproblema ter sido resolvido e siga adiante com o seu trabalho. Ter o próprio
218*e6ad39d8SDaniel Pereiratrabalho deixado de lado dessa maneira pode ser doloroso e desanimador, mas a
219*e6ad39d8SDaniel Pereiracomunidade se lembrará da sua reação muito depois de terem esquecido de quem
220*e6ad39d8SDaniel Pereirafoi o patch que realmente foi mesclado.
221