xref: /linux/Documentation/translations/sp_SP/process/6.Followthrough.rst (revision d30c1683aaecb93d2ab95685dc4300a33d3cea7a)
1.. include:: ../disclaimer-sp.rst
2
3:Original: Documentation/process/6.Followthrough.rst
4:Translator: Carlos Bilbao <carlos.bilbao.osdev@gmail.com> and Avadhut Naik <avadhut.naik@amd.com>
5
6.. _sp_development_followthrough:
7
8Seguimiento
9===========
10
11Llegados a este punto, ha seguido las directrices dadas hasta ahora, lo que
12sumado a sus propias habilidades de ingeniería, ha resultado en una serie
13de parches perfectos. Uno de los mayores errores que incluso los
14desarrolladores de kernel experimentados pueden cometer es concluir que su
15trabajo ya está hecho. En verdad, publicar parches indica una transición a
16la siguiente etapa del proceso, con, posiblemente, bastante trabajo aún por
17hacer.
18
19Es raro un parche que sea tan bueno en su primera publicación que no haya
20espacio para la mejora. El proceso de desarrollo del kernel reconoce este
21hecho y, como resultado, está muy orientado hacia la mejora del código
22publicado. Y usted, como autor de ese código, se espera que trabaje con la
23comunidad del kernel para asegurarse de que su código esté a la altura de
24los estándares de calidad del kernel. No participar en este proceso es muy
25probable que impida la inclusión de sus parches en la línea principal.
26
27Trabajando con revisores
28------------------------
29
30Un parche de cualquier importancia resultará en una serie de comentarios de
31otros desarrolladores a medida que revisan el código. Trabajar con los
32revisores puede ser, para muchos desarrolladores, la parte más intimidante
33del proceso de desarrollo del kernel. Sin embargo, la vida puede ser mucho
34más fácil si tiene en cuenta algunas cosas:
35
36- Si ha explicado bien su parche, los revisores entenderán su valor y por
37  qué se tomó la molestia de escribirlo. Pero ese valor no les impedirá
38  hacer una pregunta fundamental: ¿cómo será mantener un kernel con este
39  código en él cinco o diez años después? Muchos de los cambios que se le
40  pueden pedir que haga, desde ajustes de estilo de codificación hasta
41  reescrituras sustanciales, provienen de la comprensión de que Linux
42  seguirá existiendo y en desarrollo dentro de una década.
43
44- La revisión de código es un trabajo arduo y es una ocupación
45  relativamente ingrata; la gente recuerda quién escribió el código del
46  kernel, pero hay poca fama duradera para aquellos que lo revisaron. Así
47  que los revisores pueden ponerse de mal humor, especialmente cuando ven
48  los mismos errores repetirse una y otra vez. Si recibe una revisión que
49  parece enojada, insultante o abiertamente ofensiva, resista el impulso de
50  responder de la misma manera. La revisión de código se trata del código,
51  no de las personas, y los revisores de código no lo están atacando
52  personalmente.
53
54- De manera similar, los revisores de código no están tratando de promover
55  las agendas de sus empleadores a expensas de la suya. Los desarrolladores
56  del kernel a menudo esperan estar trabajando en el kernel dentro de
57  varios años, pero entienden que su empleador podría cambiar.
58  Verdaderamente, casi sin excepción, están trabajando hacia la creación
59  del mejor kernel posible; no están tratando de causar incomodidad a los
60  competidores de sus empleadores.
61
62- Esté preparado para solicitudes aparentemente ridículas de cambios en el
63  estilo de codificación y solicitudes para factorizar parte de su código
64  en partes compartidas del kernel. Una de las tareas que realizan los
65  maintainers es mantener las cosas con una apariencia uniforme. A veces, esto significa que el truco ingenioso en su driver para sortear un problema necesita convertirse en una característica generalizada del kernel lista para la próxima vez.
66
67En resumen, cuando los revisores le envían comentarios, necesita prestar
68atención a las observaciones técnicas que están haciendo. No permita que su
69forma de expresarse o su propio orgullo le impidan hacerlo. Cuando reciba
70comentarios de revisión sobre un parche, tómese el tiempo para entender lo
71que el revisor está tratando de decir. Si es posible, arregle las cosas que
72el revisor le está pidiendo que corrija. Y responda al revisor:
73agradézcales y describa cómo responderá a sus preguntas.
74
75Tenga en cuenta que no tiene que estar de acuerdo con cada cambio sugerido
76por los revisores. Si cree que el revisor ha malinterpretado su código,
77explique lo que realmente está sucediendo. Si tiene una objeción técnica a
78un cambio sugerido, descríbalo y justifique su solución al problema. Si sus
79explicaciones tienen sentido, el revisor las aceptará. Sin embargo, si su
80explicación no resulta persuasiva, especialmente si otros comienzan a estar
81de acuerdo con el revisor, tómese un tiempo para reflexionar nuevamente
82sobre las cosas. Puede ser fácil quedar cegado por su propia solución a un
83problema hasta el punto de no darse cuenta de que algo está
84fundamentalmente mal o, quizás, ni siquiera está resolviendo el problema
85correcto.
86
87Andrew Morton ha sugerido que cada comentario de revisión que no resulte en
88un cambio de código debería resultar en un comentario adicional en el
89código; eso puede ayudar a los revisores futuros a evitar las preguntas que
90surgieron la primera vez.
91
92Un error fatal es ignorar los comentarios de revisión con la esperanza de
93que desaparezcan. No desaparecerán. Si vuelve a publicar código sin haber
94respondido a los comentarios que recibió la vez anterior, es probable que
95descubra que sus parches no van a ninguna parte.
96
97Hablando de volver a publicar código: tenga en cuenta que los revisores no
98recordarán todos los detalles del código que publicó la vez anterior. Así
99que siempre es una buena idea recordarles sobre problemas planteados
100anteriormente y cómo los manejó; el registro de cambios del parche es un
101buen lugar para este tipo de información. Los revisores no deberían tener
102que buscar en los archivos de la lista para familiarizarse con lo que se
103dijo la última vez; si les ayuda a tener un buen comienzo, estarán de mejor
104humor cuando revisiten su código.
105
106¿Qué sucede si ha intentado hacer todo bien y las cosas aún no van a
107ninguna parte? La mayoría de los desacuerdos técnicos pueden resolverse
108mediante discusión, pero hay momentos en los que alguien simplemente tiene
109que tomar una decisión. Si realmente cree que esta decisión está en su
110contra de manera incorrecta, siempre puede intentar apelar a una autoridad
111superior. En el momento de escribir esto, esa autoridad superior tiende a
112ser Andrew Morton. Andrew tiene un gran respeto en la comunidad de
113desarrollo del kernel; a menudo puede desbloquear una situación que parece
114estar irremediablemente bloqueada. Sin embargo, apelar a Andrew no debe
115hacerse a la ligera, y no antes de que se hayan explorado todas las demás
116alternativas. Y tenga en cuenta, por supuesto, que él puede no estar de
117acuerdo con usted tampoco.
118
119¿Qué pasa después?
120--------------------
121
122Si un parche se considera algo bueno para agregar al kernel, y una vez que
123se hayan resuelto la mayoría de los problemas de revisión, el siguiente
124paso suele ser la entrada en el árbol del mantenedor de un subsistema. Cómo
125funciona eso varía de un subsistema a otro; cada mantenedor tiene su propia
126forma de hacer las cosas. En particular, puede haber más de un árbol, uno,
127quizás, dedicado a los parches planificados para la próxima ventana de
128fusión y otro para trabajos a más largo plazo.
129
130Para los parches que se aplican a áreas para las que no hay un árbol de
131subsistema obvio (parches de gestión de memoria, por ejemplo), el árbol
132predeterminado suele ser -mm. Los parches que afectan a múltiples
133subsistemas también pueden terminar pasando por el árbol -mm.
134
135La inclusión en un árbol de subsistema puede dar mayor visibilidad a un
136parche. Ahora, otros desarrolladores que trabajan con ese árbol recibirán
137el parche por defecto. Los árboles de subsistemas típicamente alimentan
138linux-next también, haciendo que su contenido sea visible para la comunidad
139de desarrollo en su conjunto. En este punto, hay una buena probabilidad de
140que reciba más comentarios de un nuevo conjunto de revisores; estos
141comentarios necesitan ser respondidos como en la ronda anterior.
142
143Lo que también puede suceder en este punto, dependiendo de la naturaleza de
144su parche, es que aparezcan conflictos con el trabajo que están realizando
145otros. En el peor de los casos, conflictos pesados de parches pueden
146resultar en que algunos trabajos se pongan en espera para que los parches
147restantes puedan ser ajustados y fusionados. Otras veces, la resolución de
148conflictos involucrará trabajar con otros desarrolladores y, posiblemente,
149mover algunos parches entre árboles para asegurarse de que todo se aplique
150sin problemas. Este trabajo puede ser un dolor, pero cuente sus
151bendiciones: antes de la llegada del árbol linux-next, estos conflictos a
152menudo solo surgían durante la ventana de fusión y tenían que ser abordados
153de prisa. Ahora pueden resolverse con calma, antes de que se abra la
154ventana de fusión (merge window).
155
156Algún día, si todo va bien, iniciará sesión y verá que su parche ha sido
157incluido en el kernel principal. ¡Felicidades! Una vez que la celebración
158termine (y se hayas agregado al archivo MAINTAINERS), vale la pena
159recordar un pequeño hecho importante: el trabajo aún no está hecho. La
160inclusión trae sus propios desafíos.
161
162Para empezar, la visibilidad de su parche ha aumentado una vez más. Puede
163haber una nueva ronda de comentarios de desarrolladores que no estaban al
164tanto del parche antes. Puede ser tentador ignorarlos, ya que ya no hay
165cuestión de que su código sea fusionado. Sin embargo, resista esa
166tentación; aún necesita ser receptivo a los desarrolladores que tienen
167preguntas o sugerencias.
168
169Más importante aún, la inclusión en la línea principal pone su código en
170manos de un grupo mucho más grande de probadores. Incluso si ha contribuido
171un driver para hardware que aún no está disponible, se sorprenderá de
172cuántas personas construirán su código en sus kernels. Y, por supuesto,
173donde hay probadores, habrá informes de errores.
174
175El peor tipo de informes de errores son las regresiones. Si su parche causa
176una regresión, encontrará un número incómodo de ojos sobre usted; las
177regresiones pueden dar lugar a mucho malestar en la comunidad y pueden
178hacer que algunos desarrolladores comiencen a preguntarse si su parche
179realmente debería haber sido fusionado en primer lugar. Así que esté atento
180a los comentarios sobre problemas y, si es posible, corrija los errores de
181inmediato.
182
183Después de haber abordado cualquier regresión, puede haber otros errores
184ordinarios que resolver. El período de estabilización es su mejor
185oportunidad para corregir estos errores y garantizar que el debut de su
186código en una versión del kernel principal sea lo más sólido posible. Así
187que, por favor, responda a los informes de errores y solucione los
188problemas si es posible. Para eso es el período de estabilización; puede
189comenzar a crear parches nuevos y geniales una vez que se hayan resuelto
190los problemas de los antiguos.
191
192Y no olvide que hay otros hitos que también pueden generar informes de
193errores: la próxima versión estable del kernel principal, cuando
194distribuidores prominentes adopten una versión del kernel que contenga su
195parche, etc. Continuar respondiendo a estos informes es una cuestión de
196orgullo básico en su trabajo. Sin embargo, si eso no es suficiente
197motivación, también vale la pena considerar que la comunidad de desarrollo
198recuerda a los desarrolladores que pierden interés en su código después de
199que se fusiona. La próxima vez que publique un parche, lo evaluarán con la
200suposición de que no estará disponible para mantenerlo después.
201
202Otras cosas que pueden suceder
203-------------------------------
204
205Un día, puede que abra su cliente de correo y vea que alguien le ha enviado
206un parche para su código. Esa es una de las ventajas de tener su código
207disponible públicamente, después de todo. Si está de acuerdo con el parche, puede reenviarlo al maintainer del subsistema (asegúrese de incluir una
208línea From: adecuada para que la atribución sea correcta, y añada su propia
209firma), o enviar una respuesta Acked-by: y dejar que el autor original lo
210envíe hacia arriba.
211
212Si no está de acuerdo con el parche, envíe una respuesta educada explicando
213por qué. Si es posible, dígale al autor qué cambios deben hacerse para que
214considere el parche aceptable. Existe una cierta resistencia a incluir
215parches que son rechazados por el autor y el maintainer del código, pero
216esto tiene un límite. Si se interpreta que bloque buen trabajo, esos
217parches eventualmente lo eludirán y se incorporarán al kernel de todos
218modos. En el kernel de Linux, nadie tiene poder de veto absoluto sobre
219ningún código. Excepto quizás Linus.
220
221En muy raras ocasiones, puede encontrar algo completamente diferente: otro
222desarrollador publica una solución distinta a su problema. En ese punto, es
223probable que uno de los dos parches no se incluya, y "el mío fue el
224primero" no se considera un argumento técnico convincente. Si el parche de
225otra persona desplaza al suyo y se incorpora al kernel, realmente solo hay
226una manera de responder: alegrarse de que su problema se haya resuelto y
227continuar con su trabajo. Que su trabajo sea desplazado de esta manera
228puede ser doloroso y desalentador, pero la comunidad recordará su reacción
229mucho después de que hayan olvidado de quién era el parche que realmente se
230incluyó.
231