| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542 |
- .. include:: ../disclaimer-sp.rst
- :Original: Documentation/process/2.Process.rst
- :Translator: Avadhut Naik <avadhut.naik@amd.com>
- .. _sp_development_process:
- Cómo funciona el proceso de desarrollo
- ======================================
- El desarrollo del kernel de Linux a principios de la década de 1990 fue
- un asunto relajado, con un número relativamente pequeño de usuarios y
- desarrolladores involucrados. Con una base de usuarios en los millones y
- alrededor de 2,000 desarrolladores involucrados durante un año, el kernel
- ha tenido que adaptar varios procesos para mantener el desarrollo sin
- problemas. Se requiere una comprensión solida de cómo funciona el proceso
- para ser una parte efectiva del mismo.
- El panorama general
- -------------------
- Los desarrolladores del kernel utilizan un proceso de lanzamiento basado
- en el tiempo de manera flexible, con uno nuevo lanzamiento principal del
- kernel ocurriendo cada dos o tres meses. El historial reciente de
- lanzamientos se ve así:
- ====== ==================
- 5.0 Marzo 3, 2019
- 5.1 Mayo 5, 2019
- 5.2 Julio 7, 2019
- 5.3 Septiembre 15, 2019
- 5.4 Noviembre 24, 2019
- 5.5 Enero 6, 2020
- ====== ==================
- Cada lanzamiento 5.x es un lanzamiento principal del kernel con nuevas
- características, cambios internos en la API y más. Un lanzamiento típico
- puede contener alrededor de 13,000 conjuntos de cambios incluyendo en
- varias centenas de miles de líneas de código. 5.x es la vanguardia del
- desarrollo del kernel de Linux; el kernel utiliza un modelo de desarrollo
- continuo que está integrando continuamente cambios importantes.
- Se sigue una disciplina relativamente sencilla con respecto a la fusión
- de parches para cada lanzamiento. Al comienzo de cada ciclo de desarrollo,
- se dice que la "merge window" (ventana de fusión) está abierta. En ese
- momento, el código que se considera lo suficientemente estable (y que es
- aceptado por la comunidad de desarrollo) se fusiona en el kernel mainline.
- La mayor parte de los cambios para un nuevo ciclo de desarrollo (y todos
- los cambios principales) se fusionarán durante este tiempo, a un ritmo
- cercano a los 1,000 cambios (“parches” o “conjuntos de cambios”) por
- día.
- (Aparte, vale la pena señalar que los cambios integrados durante la
- ventana de fusión no surgen de la nada; han sido recolectados, probados
- y montados con anticipación. Como funciona ese proceso se describirá en
- detalle más adelante).
- La ventana de fusión dura aproximadamente dos semanas. Al final de este
- tiempo, Linux Torvalds declarará que la ventana está cerrada y publicará
- el primero de los kernels “rc”. Para el kernel destinado a ser 5.6, por
- ejemplo, el lanzamiento al final de la ventana de fusión se llamará
- 5.6-rc1. El lanzamiento -rc1 señala que el tiempo para fusionar nuevas
- características ha pasado y que el tiempo para estabilizar el siguiente
- kernel ha comenzado.
- Durante las próximas seis a diez semanas, solo los parches que solucionen
- problemas deben enviarse al mainline. En ocasiones, se permitirá un cambio
- más significativo, pero tales ocasiones son raras; los desarrolladores que
- intentan fusionar nuevas características fuera de la ventana de fusión
- suelen recibir una recepción poco amistosa. Como regla general, si se
- pierde la ventana de fusión de una característica determinada, lo mejor
- que puede hacer es esperar al siguiente ciclo de desarrollo. (Se hace una
- excepción ocasional para los drivers de hardware que no se admitía
- anteriormente; si no afectan a ningún código en árbol, no pueden causar
- regresiones y debería ser seguro agregarlos en cualquier momento).
- A medida que las correcciones se abren paso en el mainline, la tasa de
- parches se ralentizará con el tiempo. Linus lanza nuevos kernels -rc
- aproximadamente una vez a la semana; una serie normal llegará a algún
- punto entre -rc6 y -rc9 antes de que se considere que el kernel es
- suficientemente estable y realice el lanzamiento final. En ese momento,
- todo el proceso vuelve a empezar.
- Como ejemplo, así fue el ciclo de desarrollo de 5.4 (todas las fechas son
- de 2019):
- ============== =======================================
- Septiembre 15 5.3 lanzamiento estable
- Septiembre 30 5.4-rc1, la ventana de fusion se cierra
- Octubre 6 5.4-rc2
- Octubre 13 5.4-rc3
- Octubre 20 5.4-rc4
- Octubre 27 5.4-rc5
- Noviembre 3 5.4-rc6
- Noviembre 10 5.4-rc7
- Noviembre 17 5.4-rc8
- Noviembre 24 5.4 lanzamiento estable
- ============== =======================================
- ¿Cómo deciden los desarrolladores cuándo cerrar el ciclo de desarrollo
- y crear el lanzamiento estable? La métrica más significativa utilizada
- es la lista de regresiones de lanzamientos anteriores. Ningunos errores
- son bienvenidos, pero aquellos que rompen sistemas que funcionaron en el
- pasado se consideran especialmente graves. Por esta razón, los parches
- que causan regresiones se ven con malos ojos y es bastante probable que
- se reviertan durante el periodo de estabilización.
- El objetivo de los desarrolladores es corregir todas las regresiones
- conocidas antes de que se realice el lanzamiento estable. En el mundo
- real, este tipo de perfección es difícil de lograr; hay demasiados
- variables en un proyecto de este tamaño. Llega un punto en el que
- retrasar el lanzamiento final solo empeora el problema; la pila de cambios
- que esperan la siguiente ventana de fusión crecerá, creando aún más
- regresiones la próxima vez. Por lo tanto, la mayoría de los kernels 5.x
- se lanzan con un punado de regresiones conocidas, aunque, con suerte,
- ninguna de ellas es seria.
- Una vez que se realiza un lanzamiento estable, su mantenimiento continuo
- se transfiere al “equipo estable”, actualmente encabezado por Greg
- Kroah-Hartman. El equipo estable lanzará actualizaciones ocasionales al
- lanzamiento estable utilizando el esquema de numeración 5.x.y. Para ser
- considerado para un lanzamiento de actualización, un parche debe
- (1) corregir un error significativo y (2) ya estar fusionado en el
- mainline para el siguiente kernel de desarrollo. Por lo general, los
- kernels recibirán actualizaciones estables durante un poco más de un
- ciclo de desarrollo después de su lanzamiento inicial. Así, por ejemplo,
- la historia del kernel 5.2 se veía así (todas las fechas en 2019):
- ============== ===============================
- Julio 7 5.2 lanzamiento estable
- Julio 14 5.2.1
- Julio 21 5.2.2
- Julio 26 5.2.3
- Julio 28 5.2.4
- Julio 31 5.2.5
- ... ...
- Octubre 11 5.2.21
- ============== ===============================
- 5.2.21 fue la última actualización estable del lanzamiento 5.2.
- Algunos kernels se designan como kernels “a largo plazo”; recibirán
- soporte durante un periodo más largo. Consulte el siguiente enlace para
- obtener la lista de versiones activas del kernel a largo plazos y sus
- maintainers:
- https://www.kernel.org/category/releases.html
- La selección de un kernel para soporte a largo plazo es puramente una
- cuestión de que un maintainer tenga la necesidad y el tiempo para
- mantener ese lanzamiento. No hay planes conocidos para ofrecer soporte a
- largo plazo para ningún lanzamiento especifico próximo.
- Ciclo de vida de un parche
- --------------------------
- Los parches no van directamente desde el teclado del desarrollador al
- kernel mainline. Hay, en cambio, un proceso algo complicado (aunque algo
- informal) diseñado para garantizar que cada parche sea revisado en cuanto
- a calidad y que cada parche implemente un cambio que es deseable tener en
- el mainline. Este proceso puede ocurrir rápidamente para correcciones
- menores, o, en el caso de cambios grandes y controvertidos, continuar
- durante años. Gran parte de la frustración de los desarrolladores proviene
- de la falta de compresión de este proceso o de sus intentos de eludirlo.
- Con la esperanza de reducir esa frustración, este documento describirá
- cómo un parche entra en el kernel. Lo que sigue a continuación es una
- introducción que describe el proceso de una manera tanto idealizada. Un
- tratamiento mucho más detallado vendrá en secciones posteriores.
- Las etapas por las que pasa un parche son, generalmente:
- - Diseño. Aquí es donde se establecen los requisitos reales para el
- parche – y la forma en que se cumplirán esos requisitos. El trabajo
- de diseño a menudo se realiza sin involucrar a la comunidad, pero es
- mejor hacer este trabajo de manera abierta si es posible; puede ahorrar
- mucho tiempo rediseñando las cosas más tarde.
- - Revisión inicial. Los parches se publican en la lista de correo
- relevante y los desarrolladores en esa lista responden con cualquier
- comentario que puedan tener. Este proceso debería revelar cualquier
- problema importante con un parche si todo va bien.
- - Revisión más amplia. Cuando el parche se acerca a estar listo para su
- inclusión en el mainline, debe ser aceptado por un maintainer del
- subsistema relevante – aunque esta aceptación no es una garantía de
- que el parche llegara hasta el mainline. El parche aparecerá en el
- árbol de subsistemas del maintainer y en los árboles -next (descritos
- a continuación). Cuando el proceso funciona, este paso conduce a una
- revisión exhaustiva del parche y al descubrimiento de cualquier
- problema resultante de la integración de este parche con el trabajo
- realizado por otros.
- - Tenga en cuenta que la mayoría de los maintainers también tienen
- trabajos diurnos, por lo que fusionar su parche no puede ser su máxima
- prioridad. Si su parche está recibiendo comentarios sobre los cambios
- que se necesitan, debería realizar esos cambios o justificar por qué
- no deberían realizarse. Si su parche no tiene quejas de revisión, pero
- no está siendo fusionado por el maintainer apropiado del subsistema o
- del driver, debe ser persistente en la actualización del parche
- al kernel actual para que se aplique limpiamente y seguir enviándolo
- para su revisión y fusión.
- - Fusión en el mainline. Eventualmente, un parche exitoso se fusionará
- en el repositorio mainline administrado por Linux Torvalds. Mas
- comentarios y/o problemas pueden surgir en este momento; es importante
- que el desarrollador responda a estos y solucione cualquier problema
- que surja.
- - Lanzamiento estable. El número de usuarios potencialmente afectados por
- el parche es ahora grande, por lo que, una vez más, pueden surgir
- nuevos problemas.
- - Mantenimiento a largo plazo. Si bien un desarrollador puede olvidarse
- del código después de fusionarlo, ese comportamiento tiende a dejar
- una impresión negativa en la comunidad de desarrollo. Fusionar el
- código elimina parte de la carga de mantenimiento; otros solucionarán
- los problemas causados por los cambios en la API. Sin embargo, el
- desarrollador original debe seguir asumiendo la responsabilidad del
- código si quiere seguir siendo útil a largo plazo.
- Uno de los peores errores cometidos por los desarrolladores del kernel
- (o sus empleadores) es tratar de reducir el proceso a un solo paso de
- “fusión en el mainline”. Este enfoque conduce invariablemente a la
- frustración de todos los involucrados.
- Cómo se integran los parches en el kernel
- -----------------------------------------
- Hay exactamente una persona que puede fusionar parches en el repositorio
- mainline del kernel: Linus Torvalds. Pero, por ejemplo, de los más de
- 9,500 parches que se incluyeron en el kernel 2.6.38, solo 112 (alrededor
- del 1.3%) fueron elegidos directamente por Linus mismo. El proyecto del
- kernel ha crecido mucho desde hace tiempo a un tamaño en el que ningún
- desarrollador individual podría inspeccionar y seleccionar todos los
- parches sin ayuda. La forma que los desarrolladores del kernel han
- abordado este crecimiento es a través del uso de un sistema jerárquico
- alrededor de una cadena de confianza.
- La base de código del kernel se descompone lógicamente en un conjunto de
- subsistemas: redes, soporte de arquitectura especifica, gestión de
- memoria, dispositivos de video, etc. La mayoría de los subsistemas tienen
- un maintainer designado, un desarrollador que tiene la responsabilidad
- general del código dentro de ese subsistema. Estos maintainers de
- subsistemas son los guardianes (en cierto modo) de la parte del kernel que
- gestionan; son los que (usualmente) aceptarán un parche para incluirlo en
- el kernel mainline.
- Cada uno de los maintainers del subsistema administra su propia versión
- del árbol de fuentes del kernel, generalmente (pero, ciertamente no
- siempre) usando la herramienta de administración de código fuente de git.
- Herramientas como git (y herramientas relacionadas como quilt o mercurial)
- permiten a los maintainers realizar un seguimiento de una lista de
- parches, incluida la información de autoría y otros metadatos. En
- cualquier momento, el maintainer puede identificar qué parches de su
- repositorio no se encuentran en el mainline.
- Cuando se abre la ventana de fusión, los maintainers de nivel superior
- le pedirán a Linus que “extraiga” los parches que han seleccionado para
- fusionar de sus repositorios. Si Linus está de acuerdo, el flujo de
- parches fluirá hacia su repositorio, convirtiéndose en parte del kernel
- mainline. La cantidad de atención que Linus presta a los parches
- específicos recibidos en una operación de extracción varia. Está claro
- que, a veces, examina bastante de cerca. Pero, como regla general, Linus
- confía en que los maintainers del subsistema no envíen parches
- defectuosos al upstream.
- Los maintainers de subsistemas, a su vez, pueden extraer parches de otros
- maintainers. Por ejemplo, el árbol de red se construye a partir de
- parches que se acumulan primero en arboles dedicados a drivers de
- dispositivos de red, redes inalámbricas, etc. Esta cadena de repositorios
- puede ser arbitrariamente larga, aunque rara vez supera los dos o tres
- enlaces. Dado que cada maintainer de la cadena confía en los que
- administran árboles de nivel inferior, este proceso se conoce como la
- “cadena de confianza”.
- Claramente, en un sistema como este, lograr que los parches se integren
- en el kernel depende de encontrar el maintainer adecuado. Enviar parches
- directamente a Linus no es normalmente la forma correcta de hacerlo.
- Árboles siguientes (next)
- -------------------------
- La cadena de árboles de subsistemas guía el flujo de parches en el
- kernel, pero también plantea una pregunta interesante: ¿Qué pasa si
- alguien quiere ver todos los parches que se están preparando para la
- próxima ventana de fusión? Los desarrolladores estarán interesados en
- saber que otros cambios están pendientes para ver si hay algún conflicto
- del que preocuparse; un parche que cambia un prototipo de función del
- núcleo del kernel, por ejemplo, entrará en conflicto con cualquier otro
- parche que utilice la forma anterior de esa función. Los revisores y
- probadores quieren tener acceso a los cambios en su forma integrada antes
- de que todos esos cambios se integren en el kernel mainline. Uno podría
- extraer cambios de todos los árboles de subsistemas interesantes, pero
- eso sería un trabajo tedioso y propenso a errores.
- La respuesta viene en forma de árboles -next, donde los árboles de
- subsistemas se recopilan para pruebas y revisiones. El más antiguo de
- estos árboles, mantenido por Andrew Morton, se llama “-mm” (por gestión
- de la memoria, que es como comenzó). El árbol “-mm” integra parches
- de una larga lista de árboles de subsistemas; también tiene algunos
- parches destinados a ayudar con la depuración.
- Más allá de eso, -mm contiene una colección significativa de parches
- que han sido seleccionados directamente por Andrew. Estos parches pueden
- haber sido publicados en una lista de correo o aplicarse a una parte del
- kernel para la que no hay un árbol de subsistemas designado. Como
- resultado, -mm funciona como una especie de árbol de subsistemas de
- último recurso; si no hay otro camino obvio para un parche en el mainline,
- es probable que termine en -mm. Los parches misceláneos que se acumulan
- en -mm eventualmente se enviarán a un árbol de subsistema apropiado o se
- enviarán directamente a Linus. En un ciclo de desarrollo típico,
- aproximadamente el 5-10% de los parches que van al mainline llegan allí
- a través de -mm.
- El parche -mm actual está disponible en el directorio “mmotm” (-mm
- del momento) en:
- https://www.ozlabs.org/~akpm/mmotm/
- Sin embargo, es probable que el uso del árbol MMOTM sea una experiencia
- frustrante; existe una posibilidad definitiva de que ni siquiera se
- compile.
- El árbol principal para la fusión de parches del siguiente ciclo es
- linux-next, mantenido por Stephen Rothwell. El árbol linux-next es, por
- diseño, una instantánea de cómo se espera que se vea el mainline después
- de que se cierre la siguiente ventana de fusión. Los árboles linux-next
- se anuncian en las listas de correo linux-kernel y linux-next cuando se
- ensamblan; Se pueden descargar desde:
- https://www.kernel.org/pub/linux/kernel/next/
- Linux-next se ha convertido en una parte integral del proceso de
- desarrollo del kernel; todos los parches fusionados durante una ventana
- de fusión determinada deberían haber encontrado su camino en linux-next
- en algún momento antes de que se abra la ventana de fusión.
- Árboles de staging
- ------------------
- El árbol de fuentes del kernel contiene el directorio drivers/staging/,
- donde residen muchos subdirectorios para drivers o sistemas de archivos
- que están en proceso de ser agregados al árbol del kernel. Permanecen
- en drivers/staging mientras aún necesitan más trabajo; una vez
- completados, se pueden mover al kernel propiamente dicho. Esta es una
- forma de realizar un seguimiento de los drivers drivers que no están a la
- altura de la codificación o los estándares de calidad del kernel de
- Linux, pero que las personas pueden querer usarlos y realizar un
- seguimiento del desarrollo.
- Greg Kroah-Hartman mantiene actualmente el árbol de staging. Los drivers
- que aun necesitan trabajo se le envían, y cada driver tiene su propio
- subdirectorio en drivers/staging/. Junto con los archivos de origen del
- driver, también debe haber un archivo TODO en el directorio. El archivo
- TODO enumera el trabajo pendiente que el driver necesita para ser aceptado
- en el kernel propiamente dicho, así como una lista de personas a las que
- Cc’d para cualquier parche para el driver. Las reglas actuales exigen
- que los drivers que contribuyen a staging deben, como mínimo, compilarse
- correctamente.
- El staging puede ser una forma relativamente fácil de conseguir nuevos
- drivers en el mainline donde, con suerte, llamarán la atención de otros
- desarrolladores y mejorarán rápidamente. Sin embargo, la entrada en el
- staging no es el final de la historia; el código que no está viendo
- progreso regular eventualmente será eliminado. Los distribuidores también
- tienden a ser relativamente reacios a habilitar los drivers de staging.
- Por lo tanto, el staging es, en el mejor de los casos, una parada en el
- camino para hacia convertirse en un apropiado driver del mainline.
- Herramientas
- ------------
- Como se puede ver en el texto anterior, el proceso de desarrollo del
- kernel depende en gran medida de la capacidad de dirigir colecciones de
- parches en varias direcciones. Todo ello no funcionaría tan bien como lo
- hace sin herramientas apropiadamente potentes. Los tutoriales sobre cómo
- usar estas herramientas están mucho más allá del alcance de este
- documento, pero hay espacio para algunos consejos.
- Con mucho, el sistema de gestión de código fuente dominante utilizado
- por la comunidad del kernel es git. Git es uno de los varios sistemas de
- control de versiones distribuidos que se están desarrollando en la
- comunidad de software libre. Está bien ajustado para el desarrollo de
- kernel, ya que funciona bastante bien cuando se trata de grandes
- repositorios y grandes cantidades de parches. También tiene la reputación
- de ser difícil de aprender y usar, aunque ha mejorado con el tiempo.
- Algún tipo de familiaridad con git es casi un requisito para los
- desarrolladores del kernel; incluso si no lo usan para su propio
- trabajo, necesitarán git para mantenerse al día con lo que otros
- desarrolladores (y el mainline) están haciendo.
- Git ahora está empaquetado por casi todas las distribuciones de Linux.
- Hay una página de inicio en:
- https://git-scm.com/
- Esa página tiene punteros a documentación y tutoriales.
- Entre los desarrolladores de kernel que no usan git, la opción más
- popular es casi con certeza Mercurial:
- https://www.selenic.com/mercurial/
- Mercurial comparte muchas características con git, pero proporciona una
- interfaz que muchos encuentran más fácil de usar.
- Otra herramienta que vale la pena conocer es Quilt:
- https://savannah.nongnu.org/projects/quilt/
- Quilt es un sistema de gestión de parches, en lugar de un sistema de
- gestión de código fuente. No rastrea el historial a lo largo del tiempo;
- en cambio, está orientado al seguimiento de un conjunto especifico de
- cambios en relación con una base de código en evolución. Algunos de los
- principales maintainers de subsistemas utilizan Quilt para gestionar los
- parches destinados a ir upstream. Para la gestión de ciertos tipos de
- árboles (por ejemplo, -mm) Quilt es la mejor herramienta para el trabajo.
- Listas de correo
- ----------------
- Una gran parte del trabajo de desarrollo del kernel de Linux se realiza a
- través de listas de correo. Es difícil ser un miembro plenamente funcional
- de la comunidad sin unirse al menos a una lista en algún parte. Pero las
- listas de correo de Linux también representan un peligro potencial para
- los desarrolladores, que corren el riesgo de quedar enterrados bajo una
- carga de correo electrónico, incumplir las convenciones utilizadas en las
- listas de Linux, o ambas cosas.
- La mayoría de las listas de correo del kernel se ejecutan en
- vger.kernel.org; la lista principal se puede encontrar en:
- http://vger.kernel.org/vger-lists.html
- Sim embargo, hay listas alojadas en otros lugares; varios de ellos se
- encuentran en redhat.com/mailman/listinfo.
- La lista de correo principal para el desarrollo del kernel es, por
- supuesto, linux-kernel. Esta lista es un lugar intimidante; el volumen
- puede alcanzar 500 mensajes por día, la cantidad de ruido es alta, la
- conversación puede ser muy técnica y los participantes no siempre se
- preocupan por mostrar un alto grado de cortesía. Pero no hay otro lugar
- donde la comunidad de desarrollo del kernel se reúna como un todo; los
- desarrolladores que eviten esta lista se perderán información importante.
- Hay algunos consejos que pueden ayudar a sobrevivir en el kernel de Linux:
- - Haga que la lista se entregue en una carpeta separada, en lugar de su
- buzón principal. Uno debe ser capaz de ignorar el flujo durante
- periodos prolongados.
- - No trate de seguir cada conversación, nadie lo hace. Es importante
- filtrar tanto por el tema de interés (aunque tenga en cuenta que las
- conversaciones prolongadas pueden alejarse del asunto original sin
- cambiar la línea de asunto del correo electrónico) por las personas
- que participan.
- - No alimente a los trolls. Si alguien está tratando de provocar una
- respuesta de enojo, ignórelos.
- - Al responder al correo electrónico del kernel de Linux (o al de otras
- listas) conserve el encabezado Cc: para todos los involucrados. En
- ausencia de una razón solida (como una solicitud explícita), nunca debe
- eliminar destinarios. Asegúrese siempre de que la persona a la que está
- respondiendo esté en la lista Cc:. Esta convención también hace que no
- sea necesario solicitar explícitamente que se le copie en las respuestas
- a sus publicaciones.
- - Busque en los archivos de la lista (y en la red en su conjunto) antes
- de hacer preguntas. Algunos desarrolladores pueden impacientarse con
- las personas que claramente no han hecho sus deberes.
- - Utilice respuestas intercaladas (“en línea”), lo que hace que su
- respuesta sea más fácil de leer. (Es decir, evite top-posting – la
- práctica de poner su respuesta encima del texto citado al que está
- respondiendo.) Para obtener más información, consulte
- :ref:`Documentation/translations/sp_SP/process/submitting-patches.rst <sp_interleaved_replies>`.
- - Pregunte en la lista de correo correcta. linux-kernel puede ser el
- punto de encuentro general, pero no es el mejor lugar para encontrar
- desarrolladores de todos los subsistemas.
- El último punto, encontrar la lista de correo correcta, es una fuente
- común de errores para desarrolladores principiantes. Alguien que haga
- una pregunta relacionada con las redes en linux-kernel seguramente
- recibirá una surgencia educada para preguntar en la lista de netdev en su
- lugar, ya que esa es la lista frecuentada por la mayoría de los
- desarrolladores de redes. Existen otras listas para los subsistemas SCSI,
- video4linux, IDE, sistema de archivos, etc. El mejor lugar para buscar
- listas de correo es en el archivo MAINTAINERS incluido con el código
- fuente del kernel.
- Comenzar con el desarrollo del kernel
- -------------------------------------
- Las preguntas sobre como comenzar con el proceso de desarrollo del kernel
- son comunes, tanto de individuos como de empresas. Igualmente comunes son
- los pasos en falso que hacen que el comienzo de la relación sea más
- difícil de lo que tiene que ser.
- Las empresas a menudo buscan contratar desarrolladores conocidos para
- iniciar un grupo de desarrollo. De hecho, esta puede ser una técnica
- efectiva. Pero también tiende a ser caro y no hace mucho para crecer el
- grupo de desarrolladores de kernel experimentados. Es posible poner al
- día a los desarrolladores internos en el desarrollo de kernel de Linux,
- dada la inversión de algún tiempo. Tomarse este tiempo puede dotar a un
- empleador de un grupo de desarrolladores que comprendan tanto el kernel
- como la empresa, y que también puedan ayudar a educar a otros. A medio
- plazo, este es a menudo el enfoque más rentable.
- Los desarrolladores individuales, a menudo, comprensiblemente, no tienen
- un lugar para empezar. Comenzar con un proyecto grande puede ser
- intimidante; a menudo uno quiere probar las aguas con algo más pequeño
- primero. Este es el punto en el que algunos desarrolladores se lanzan a
- la creación de parches para corregir errores ortográficos o problemas
- menores de estilo de codificación. Desafortunadamente, dicho parches
- crean un nivel de ruido que distrae a la comunidad de desarrollo en su
- conjunto, por lo que, cada vez más, se los mira con desprecio. Los nuevos
- desarrolladores que deseen presentarse a la comunidad no recibirán la
- recepción que desean por estos medios.
- Andrew Morton da este consejo (traducido) para los aspirantes a
- desarrolladores de kernel.
- ::
- El proyecto #1 para los principiantes en el kernel seguramente debería
- ser “asegúrese de que el kernel funcione perfectamente en todo momento
- en todas las máquinas que pueda conseguir”. Por lo general, la forma
- de hacer esto es trabajar con otros para arreglar las cosas (¡esto
- puede requerir persistencia!), pero eso está bien, es parte del
- desarrollo del kernel.
- (https://lwn.net/Articles/283982/)
- En ausencia de problemas obvios que solucionar, se aconseja a los
- desarrolladores que consulten las listas actuales de regresiones y errores
- abiertos en general. Nunca faltan problemas que necesitan solución; al
- abordar estos problemas, los desarrolladores ganarán experiencia con el
- proceso mientras, al mismo tiempo, se ganarán el respeto del resto de la
- comunidad de desarrollo.
|