162306a36Sopenharmony_ci.. include:: ./disclaimer-sp.rst
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci:Original: :ref:`Documentation/process/howto.rst <process_howto>`
462306a36Sopenharmony_ci:Translator: Carlos Bilbao <carlos.bilbao@amd.com>
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci.. _sp_process_howto:
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciCómo participar en el desarrollo del kernel de Linux
962306a36Sopenharmony_ci====================================================
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciEste documento es el principal punto de partida. Contiene instrucciones
1262306a36Sopenharmony_cisobre cómo convertirse en desarrollador del kernel de Linux y explica cómo
1362306a36Sopenharmony_citrabajar con el y en su desarrollo. El documento no tratará ningún aspecto
1462306a36Sopenharmony_citécnico relacionado con la programación del kernel, pero le ayudará
1562306a36Sopenharmony_ciguiándole por el camino correcto.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciSi algo en este documento quedara obsoleto, envíe parches al maintainer de
1862306a36Sopenharmony_cieste archivo, que se encuentra en la parte superior del documento.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciIntroducción
2162306a36Sopenharmony_ci------------
2262306a36Sopenharmony_ci¿De modo que quiere descubrir como convertirse en un/a desarrollador/a del
2362306a36Sopenharmony_cikernel de Linux? Tal vez su jefe le haya dicho, "Escriba un driver de
2462306a36Sopenharmony_ciLinux para este dispositivo." El objetivo de este documento en enseñarle
2562306a36Sopenharmony_citodo cuanto necesita para conseguir esto, describiendo el proceso por el
2662306a36Sopenharmony_cique debe pasar, y con indicaciones de como trabajar con la comunidad.
2762306a36Sopenharmony_ciTambién trata de explicar las razones por las cuales la comunidad trabaja
2862306a36Sopenharmony_cide la forma en que lo hace.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciEl kernel esta principalmente escrito en C, con algunas partes que son
3162306a36Sopenharmony_cidependientes de la arquitectura en ensamblador. Un buen conocimiento de C
3262306a36Sopenharmony_cies necesario para desarrollar en el kernel. Lenguaje ensamblador (en
3362306a36Sopenharmony_cicualquier arquitectura) no es necesario excepto que planee realizar
3462306a36Sopenharmony_cidesarrollo de bajo nivel para dicha arquitectura. Aunque no es un perfecto
3562306a36Sopenharmony_cisustituto para una educación sólida en C y/o años de experiencia, los
3662306a36Sopenharmony_cisiguientes libros sirven, como mínimo, como referencia:
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci- "The C Programming Language" de Kernighan e Ritchie [Prentice Hall]
3962306a36Sopenharmony_ci- "Practical C Programming" de Steve Oualline [O'Reilly]
4062306a36Sopenharmony_ci- "C:  A Reference Manual" de Harbison and Steele [Prentice Hall]
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciEl kernel está escrito usando GNU C y la cadena de herramientas GNU. Si
4362306a36Sopenharmony_cibien se adhiere al estándar ISO C89, utiliza una serie de extensiones que
4462306a36Sopenharmony_cino aparecen en dicho estándar. El kernel usa un C independiente de entorno,
4562306a36Sopenharmony_cisin depender de la biblioteca C estándar, por lo que algunas partes del
4662306a36Sopenharmony_ciestándar C no son compatibles. Divisiones de long long arbitrarios o
4762306a36Sopenharmony_cide coma flotante no son permitidas. En ocasiones, puede ser difícil de
4862306a36Sopenharmony_cientender las suposiciones que el kernel hace respecto a la cadena de
4962306a36Sopenharmony_ciherramientas y las extensiones que usa, y desafortunadamente no hay
5062306a36Sopenharmony_cireferencia definitiva para estas. Consulte las páginas de información de
5162306a36Sopenharmony_cigcc (`info gcc`) para obtener información al respecto.
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciRecuerde que está tratando de aprender a trabajar con una comunidad de
5462306a36Sopenharmony_cidesarrollo existente. Es un grupo diverso de personas, con altos estándares
5562306a36Sopenharmony_cide código, estilo y procedimiento. Estas normas han sido creadas a lo
5662306a36Sopenharmony_cilargo del tiempo en función de lo que se ha encontrado que funciona mejor
5762306a36Sopenharmony_cipara un equipo tan grande y geográficamente disperso. Trate de aprender
5862306a36Sopenharmony_citanto como le sea posible acerca de estos estándares antes de tiempo, ya
5962306a36Sopenharmony_cique están bien documentados; no espere que la gente se adapte a usted o a
6062306a36Sopenharmony_cila forma de hacer las cosas en su empresa.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ciCuestiones legales
6362306a36Sopenharmony_ci------------------
6462306a36Sopenharmony_ciEl código fuente del kernel de Linux se publica bajo licencia GPL. Por
6562306a36Sopenharmony_cifavor, revise el archivo COPYING, presente en la carpeta principal del
6662306a36Sopenharmony_cicódigo fuente, para detalles de la licencia. Si tiene alguna otra pregunta
6762306a36Sopenharmony_cisobre licencias, contacte a un abogado, no pregunte en listas de discusión
6862306a36Sopenharmony_cidel kernel de Linux. La gente en estas listas no son abogadas, y no debe
6962306a36Sopenharmony_ciconfiar en sus opiniones en materia legal.
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciPara preguntas y respuestas más frecuentes sobre la licencia GPL, consulte:
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci	https://www.gnu.org/licenses/gpl-faq.html
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciDocumentación
7662306a36Sopenharmony_ci--------------
7762306a36Sopenharmony_ciEl código fuente del kernel de Linux tiene una gran variedad de documentos
7862306a36Sopenharmony_cique son increíblemente valiosos para aprender a interactuar con la
7962306a36Sopenharmony_cicomunidad del kernel. Cuando se agregan nuevas funciones al kernel, se
8062306a36Sopenharmony_cirecomienda que se incluyan nuevos archivos de documentación que expliquen
8162306a36Sopenharmony_cicómo usar la función. Cuando un cambio en el kernel hace que la interfaz
8262306a36Sopenharmony_cique el kernel expone espacio de usuario cambie, se recomienda que envíe la
8362306a36Sopenharmony_ciinformación o un parche en las páginas del manual que expliquen el cambio
8462306a36Sopenharmony_cia mtk.manpages@gmail.com, y CC la lista linux-api@vger.kernel.org.
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciEsta es la lista de archivos que están en el código fuente del kernel y son
8762306a36Sopenharmony_cide obligada lectura:
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci  :ref:`Documentation/admin-guide/README.rst <readme>`
9062306a36Sopenharmony_ci    Este archivo ofrece una breve descripción del kernel de Linux y
9162306a36Sopenharmony_ci    describe lo que es necesario hacer para configurar y compilar el
9262306a36Sopenharmony_ci    kernel. Quienes sean nuevos en el kernel deben comenzar aquí.
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci  :ref:`Documentation/process/changes.rst <changes>`
9562306a36Sopenharmony_ci    Este archivo proporciona una lista de los niveles mínimos de varios
9662306a36Sopenharmony_ci    paquetes que son necesarios para construir y ejecutar el kernel
9762306a36Sopenharmony_ci    exitosamente.
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci  :ref:`Documentation/process/coding-style.rst <codingstyle>`
10062306a36Sopenharmony_ci    Esto describe el estilo de código del kernel de Linux y algunas de los
10162306a36Sopenharmony_ci    razones detrás de esto. Se espera que todo el código nuevo siga las
10262306a36Sopenharmony_ci    directrices de este documento. La mayoría de los maintainers solo
10362306a36Sopenharmony_ci    aceptarán parches si se siguen estas reglas, y muchas personas solo
10462306a36Sopenharmony_ci    revisan el código si tiene el estilo adecuado.
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci  :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
10762306a36Sopenharmony_ci    Este archivo describe en gran detalle cómo crear con éxito y enviar un
10862306a36Sopenharmony_ci    parche, que incluye (pero no se limita a):
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci       - Contenidos del correo electrónico (email)
11162306a36Sopenharmony_ci       - Formato del email
11262306a36Sopenharmony_ci       - A quien se debe enviar
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci    Seguir estas reglas no garantiza el éxito (ya que todos los parches son
11562306a36Sopenharmony_ci    sujetos a escrutinio de contenido y estilo), pero en caso de no seguir
11662306a36Sopenharmony_ci    dichas reglas, el fracaso es prácticamente garantizado.
11762306a36Sopenharmony_ci    Otras excelentes descripciones de cómo crear parches correctamente son:
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci	"The Perfect Patch"
12062306a36Sopenharmony_ci		https://www.ozlabs.org/~akpm/stuff/tpp.txt
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	"Linux kernel patch submission format"
12362306a36Sopenharmony_ci		https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci  :ref:`Documentation/process/stable-api-nonsense.rst <stable_api_nonsense>`
12662306a36Sopenharmony_ci    Este archivo describe la lógica detrás de la decisión consciente de
12762306a36Sopenharmony_ci    no tener una API estable dentro del kernel, incluidas cosas como:
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci      - Capas intermedias del subsistema (por compatibilidad?)
13062306a36Sopenharmony_ci      - Portabilidad de drivers entre sistemas operativos
13162306a36Sopenharmony_ci      - Mitigar el cambio rápido dentro del árbol de fuentes del kernel (o
13262306a36Sopenharmony_ci        prevenir cambios rápidos)
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci     Este documento es crucial para comprender la filosofía del desarrollo
13562306a36Sopenharmony_ci     de Linux y es muy importante para las personas que se mudan a Linux
13662306a36Sopenharmony_ci     tras desarrollar otros sistemas operativos.
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci  :ref:`Documentation/process/security-bugs.rst <securitybugs>`
13962306a36Sopenharmony_ci    Si cree que ha encontrado un problema de seguridad en el kernel de
14062306a36Sopenharmony_ci    Linux, siga los pasos de este documento para ayudar a notificar a los
14162306a36Sopenharmony_ci    desarrolladores del kernel y ayudar a resolver el problema.
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci  :ref:`Documentation/process/management-style.rst <managementstyle>`
14462306a36Sopenharmony_ci    Este documento describe cómo operan los maintainers del kernel de Linux
14562306a36Sopenharmony_ci    y los valores compartidos detrás de sus metodologías. Esta es una
14662306a36Sopenharmony_ci    lectura importante para cualquier persona nueva en el desarrollo del
14762306a36Sopenharmony_ci    kernel (o cualquier persona que simplemente sienta curiosidad por
14862306a36Sopenharmony_ci    el campo IT), ya que clarifica muchos conceptos erróneos y confusiones
14962306a36Sopenharmony_ci    comunes sobre el comportamiento único de los maintainers del kernel.
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci  :ref:`Documentation/process/stable-kernel-rules.rst <stable_kernel_rules>`
15262306a36Sopenharmony_ci    Este archivo describe las reglas sobre cómo se suceden las versiones
15362306a36Sopenharmony_ci    del kernel estable, y qué hacer si desea obtener un cambio en una de
15462306a36Sopenharmony_ci    estas publicaciones.
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci  :ref:`Documentation/process/kernel-docs.rst <kernel_docs>`
15762306a36Sopenharmony_ci    Una lista de documentación externa relativa al desarrollo del kernel.
15862306a36Sopenharmony_ci    Por favor consulte esta lista si no encuentra lo que están buscando
15962306a36Sopenharmony_ci    dentro de la documentación del kernel.
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci  :ref:`Documentation/process/applying-patches.rst <applying_patches>`
16262306a36Sopenharmony_ci    Una buena introducción que describe exactamente qué es un parche y cómo
16362306a36Sopenharmony_ci    aplicarlo a las diferentes ramas de desarrollo del kernel.
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ciEl kernel también tiene una gran cantidad de documentos que pueden ser
16662306a36Sopenharmony_cigenerados automáticamente desde el propio código fuente o desde
16762306a36Sopenharmony_ciReStructuredText markups (ReST), como este. Esto incluye un descripción
16862306a36Sopenharmony_cicompleta de la API en el kernel y reglas sobre cómo manejar cerrojos
16962306a36Sopenharmony_ci(locking) correctamente.
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ciTodos estos documentos se pueden generar como PDF o HTML ejecutando::
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci	make pdfdocs
17462306a36Sopenharmony_ci	make htmldocs
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_cirespectivamente desde el directorio fuente principal del kernel.
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ciLos documentos que utilizan el markup ReST se generarán en
17962306a36Sopenharmony_ciDocumentation/output. También se pueden generar en formatos LaTeX y ePub
18062306a36Sopenharmony_cicon::
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci	make latexdocs
18362306a36Sopenharmony_ci	make epubdocs
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ciConvertirse en un/a desarrollador/a de kernel
18662306a36Sopenharmony_ci---------------------------------------------
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ciSi no sabe nada sobre el desarrollo del kernel de Linux, debería consultar
18962306a36Sopenharmony_ciel proyecto Linux KernelNewbies:
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci	https://kernelnewbies.org
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ciConsiste en una útil lista de correo donde puede preguntar casi cualquier
19462306a36Sopenharmony_citipo de pregunta básica de desarrollo del kernel (asegúrese de buscar en
19562306a36Sopenharmony_cilos archivos primero, antes de preguntar algo que ya ha sido respondido en
19662306a36Sopenharmony_ciel pasado.) También tiene un canal IRC que puede usar para hacer preguntas
19762306a36Sopenharmony_cien tiempo real, y una gran cantidad de documentación útil para ir
19862306a36Sopenharmony_ciaprendiendo sobre el desarrollo del kernel de Linux.
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ciEl sitio web tiene información básica sobre la organización del código,
20162306a36Sopenharmony_cisubsistemas, y proyectos actuales (tanto dentro como fuera del árbol).
20262306a36Sopenharmony_ciTambién describe alguna información logística básica, como cómo compilar
20362306a36Sopenharmony_ciun kernel y aplicar un parche.
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ciSi no sabe por dónde quiere empezar, pero quieres buscar alguna tarea que
20662306a36Sopenharmony_cicomenzar a hacer para unirse a la comunidad de desarrollo del kernel,
20762306a36Sopenharmony_ciacuda al proyecto Linux Kernel Janitor:
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci	https://kernelnewbies.org/KernelJanitors
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ciEs un gran lugar para comenzar. Describe una lista de problemas
21262306a36Sopenharmony_cirelativamente simples que deben limpiarse y corregirse dentro del código
21362306a36Sopenharmony_cifuente del kernel de Linux árbol de fuentes. Trabajando con los
21462306a36Sopenharmony_cidesarrolladores a cargo de este proyecto, aprenderá los conceptos básicos
21562306a36Sopenharmony_cipara incluir su parche en el árbol del kernel de Linux, y posiblemente
21662306a36Sopenharmony_cidescubrir en la dirección en que trabajar a continuación, si no tiene ya
21762306a36Sopenharmony_ciuna idea.
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ciAntes de realizar cualquier modificación real al código del kernel de
22062306a36Sopenharmony_ciLinux, es imperativo entender cómo funciona el código en cuestión. Para
22162306a36Sopenharmony_cieste propósito, nada es mejor que leerlo directamente (lo más complicado
22262306a36Sopenharmony_ciestá bien comentado), tal vez incluso con la ayuda de herramientas
22362306a36Sopenharmony_ciespecializadas. Una de esas herramientas que se recomienda especialmente
22462306a36Sopenharmony_cies el proyecto Linux Cross-Reference, que es capaz de presentar el código
22562306a36Sopenharmony_cifuente en un formato de página web indexada y autorreferencial. Una
22662306a36Sopenharmony_ciexcelente puesta al día del repositorio del código del kernel se puede
22762306a36Sopenharmony_ciencontrar en:
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci	https://elixir.bootlin.com/
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ciEl proceso de desarrollo
23262306a36Sopenharmony_ci------------------------
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ciEl proceso de desarrollo del kernel de Linux consiste actualmente de
23562306a36Sopenharmony_cidiferentes "branches" (ramas) con muchos distintos subsistemas específicos
23662306a36Sopenharmony_cia cada una de ellas. Las diferentes ramas son:
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci  - El código principal de Linus (mainline tree)
23962306a36Sopenharmony_ci  - Varios árboles estables con múltiples major numbers
24062306a36Sopenharmony_ci  - Subsistemas específicos
24162306a36Sopenharmony_ci  - linux-next, para integración y testing
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ciMainline tree (Árbol principal)
24462306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_ciEl mainline tree es mantenido por Linus Torvalds, y puede encontrarse en
24762306a36Sopenharmony_cihttps://kernel.org o en su repo.  El proceso de desarrollo es el siguiente:
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ci  - Tan pronto como se lanza un nuevo kernel, se abre una ventana de dos
25062306a36Sopenharmony_ci    semanas, durante este período de tiempo, los maintainers pueden enviar
25162306a36Sopenharmony_ci    grandes modificaciones a Linus, por lo general los parches que ya se
25262306a36Sopenharmony_ci    han incluido en el linux-next durante unas semanas. La forma preferida
25362306a36Sopenharmony_ci    de enviar grandes cambios es usando git (la herramienta de
25462306a36Sopenharmony_ci    administración de código fuente del kernel, más información al respecto
25562306a36Sopenharmony_ci    en https://git-scm.com/), pero los parches simples también son validos.
25662306a36Sopenharmony_ci  - Después de dos semanas, se lanza un kernel -rc1 y la atención se centra
25762306a36Sopenharmony_ci    en hacer el kernel nuevo lo más estable ("solido") posible. La mayoría
25862306a36Sopenharmony_ci    de los parches en este punto deben arreglar una regresión. Los errores
25962306a36Sopenharmony_ci    que siempre han existido no son regresiones, por lo tanto, solo envíe
26062306a36Sopenharmony_ci    este tipo de correcciones si son importantes. Tenga en cuenta que se
26162306a36Sopenharmony_ci    podría aceptar un controlador (o sistema de archivos) completamente
26262306a36Sopenharmony_ci    nuevo después de -rc1 porque no hay riesgo de causar regresiones con
26362306a36Sopenharmony_ci    tal cambio, siempre y cuando el cambio sea autónomo y no afecte áreas
26462306a36Sopenharmony_ci    fuera del código que se está agregando. git se puede usar para enviar
26562306a36Sopenharmony_ci    parches a Linus después de que se lance -rc1, pero los parches también
26662306a36Sopenharmony_ci    deben ser enviado a una lista de correo pública para su revisión.
26762306a36Sopenharmony_ci  - Se lanza un nuevo -rc cada vez que Linus considera que el árbol git
26862306a36Sopenharmony_ci    actual esta en un estado razonablemente sano y adecuado para la prueba.
26962306a36Sopenharmony_ci    La meta es lanzar un nuevo kernel -rc cada semana.
27062306a36Sopenharmony_ci  - El proceso continúa hasta que el kernel se considera "listo", y esto
27162306a36Sopenharmony_ci    puede durar alrededor de 6 semanas.
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ciVale la pena mencionar lo que Andrew Morton escribió en las listas de
27462306a36Sopenharmony_cicorreo del kernel de Linux, sobre lanzamientos del kernel (traducido):
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci	*"Nadie sabe cuándo se publicara un nuevo kernel, pues esto sucede
27762306a36Sopenharmony_ci	según el estado de los bugs, no de una cronología preconcebida."*
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ciVarios árboles estables con múltiples major numbers
28062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ciLos kernels con versiones de 3 partes son kernels estables. Estos contienen
28362306a36Sopenharmony_cicorrecciones relativamente pequeñas y críticas para problemas de seguridad
28462306a36Sopenharmony_cio importantes regresiones descubiertas para una publicación de código.
28562306a36Sopenharmony_ciCada lanzamiento en una gran serie estable incrementa la tercera parte de
28662306a36Sopenharmony_cila versión número, manteniendo las dos primeras partes iguales.
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ciEsta es la rama recomendada para los usuarios que quieren la versión
28962306a36Sopenharmony_ciestable más reciente del kernel, y no están interesados en ayudar a probar
29062306a36Sopenharmony_civersiones en desarrollo/experimentales.
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ciLos árboles estables son mantenidos por el equipo "estable"
29362306a36Sopenharmony_ci<stable@vger.kernel.org>, y se liberan (publican) según lo dicten las
29462306a36Sopenharmony_cinecesidades. El período de liberación normal es de aproximadamente dos
29562306a36Sopenharmony_cisemanas, pero puede ser más largo si no hay problemas apremiantes. Un
29662306a36Sopenharmony_ciproblema relacionado con la seguridad, en cambio, puede causar un
29762306a36Sopenharmony_cilanzamiento casi instantáneamente.
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ciEl archivo :ref:`Documentación/proceso/stable-kernel-rules.rst <stable_kernel_rules>`
30062306a36Sopenharmony_cien el árbol del kernel documenta qué tipos de cambios son aceptables para
30162306a36Sopenharmony_ciel árbol estable y cómo funciona el proceso de lanzamiento.
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ciSubsistemas específicos
30462306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~
30562306a36Sopenharmony_ciLos maintainers de los diversos subsistemas del kernel --- y también muchos
30662306a36Sopenharmony_cidesarrolladores de subsistemas del kernel --- exponen su estado actual de
30762306a36Sopenharmony_cidesarrollo en repositorios fuente. De esta manera, otros pueden ver lo que
30862306a36Sopenharmony_ciestá sucediendo en las diferentes áreas del kernel. En áreas donde el
30962306a36Sopenharmony_cidesarrollo es rápido, se le puede pedir a un desarrollador que base sus
31062306a36Sopenharmony_cienvíos en tal árbol del subsistema del kernel, para evitar conflictos entre
31162306a36Sopenharmony_cieste y otros trabajos ya en curso.
31262306a36Sopenharmony_ci
31362306a36Sopenharmony_ciLa mayoría de estos repositorios son árboles git, pero también hay otros
31462306a36Sopenharmony_ciSCM en uso, o colas de parches que se publican como series quilt. Las
31562306a36Sopenharmony_cidirecciones de estos repositorios de subsistemas se enumeran en el archivo
31662306a36Sopenharmony_ciMAINTAINERS. Muchos de estos se pueden ver en https://git.kernel.org/.
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ciAntes de que un parche propuesto se incluya con dicho árbol de subsistemas,
31962306a36Sopenharmony_cies sujeto a revisión, que ocurre principalmente en las listas de correo
32062306a36Sopenharmony_ci(ver la sección respectiva a continuación). Para varios subsistemas del
32162306a36Sopenharmony_cikernel, esta revisión se rastrea con la herramienta patchwork. Patchwork
32262306a36Sopenharmony_ciofrece una interfaz web que muestra publicaciones de parches, cualquier
32362306a36Sopenharmony_cicomentario sobre un parche o revisiones a él, y los maintainers pueden
32462306a36Sopenharmony_cimarcar los parches como en revisión, aceptado, o rechazado. La mayoría de
32562306a36Sopenharmony_ciestos sitios de trabajo de parches se enumeran en
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_cihttps://patchwork.kernel.org/.
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_cilinux-next, para integración y testing
33062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33162306a36Sopenharmony_ci
33262306a36Sopenharmony_ciAntes de que las actualizaciones de los árboles de subsistemas se combinen
33362306a36Sopenharmony_cicon el árbol principal, necesitan probar su integración. Para ello, existe
33462306a36Sopenharmony_ciun repositorio especial de pruebas en el que se encuentran casi todos los
33562306a36Sopenharmony_ciárboles de subsistema, actualizado casi a diario:
33662306a36Sopenharmony_ci
33762306a36Sopenharmony_ci	https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ciDe esta manera, linux-next ofrece una perspectiva resumida de lo que se
34062306a36Sopenharmony_ciespera que entre en el kernel principal en el próximo período de "merge"
34162306a36Sopenharmony_ci(fusión de código). Los testers aventureros son bienvenidos a probar
34262306a36Sopenharmony_cilinux-next en ejecución.
34362306a36Sopenharmony_ci
34462306a36Sopenharmony_ciReportar bugs
34562306a36Sopenharmony_ci-------------
34662306a36Sopenharmony_ci
34762306a36Sopenharmony_ciEl archivo 'Documentación/admin-guide/reporting-issues.rst' en el
34862306a36Sopenharmony_cidirectorio principal del kernel describe cómo informar un posible bug del
34962306a36Sopenharmony_cikernel y detalles sobre qué tipo de información necesitan los
35062306a36Sopenharmony_cidesarrolladores del kernel para ayudar a rastrear la fuente del problema.
35162306a36Sopenharmony_ci
35262306a36Sopenharmony_ciGestión de informes de bugs
35362306a36Sopenharmony_ci------------------------------
35462306a36Sopenharmony_ci
35562306a36Sopenharmony_ciUna de las mejores formas de poner en práctica sus habilidades de hacking
35662306a36Sopenharmony_cies arreglando errores reportados por otras personas. No solo ayudará a
35762306a36Sopenharmony_cihacer el kernel más estable, también aprenderá a solucionar problemas del
35862306a36Sopenharmony_cimundo real y mejora sus habilidades, y otros desarrolladores se darán
35962306a36Sopenharmony_cicuenta de tu presencia. La corrección de errores es una de las mejores
36062306a36Sopenharmony_ciformas de ganar méritos entre desarrolladores, porque no a muchas personas
36162306a36Sopenharmony_ciles gusta perder el tiempo arreglando los errores de otras personas.
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ciPara trabajar en informes de errores ya reportados, busque un subsistema
36462306a36Sopenharmony_cique le interese. Verifique el archivo MAINTAINERS donde se informan los
36562306a36Sopenharmony_cierrores de ese subsistema; con frecuencia será una lista de correo, rara
36662306a36Sopenharmony_civez un rastreador de errores (bugtracker). Busque en los archivos de dicho
36762306a36Sopenharmony_cilugar para informes recientes y ayude donde lo crea conveniente. También es
36862306a36Sopenharmony_ciposible que desee revisar https://bugzilla.kernel.org para informes de
36962306a36Sopenharmony_cierrores; solo un puñado de subsistemas del kernel lo emplean activamente
37062306a36Sopenharmony_cipara informar o rastrear; sin embargo, todos los errores para todo el kernel
37162306a36Sopenharmony_cise archivan allí.
37262306a36Sopenharmony_ci
37362306a36Sopenharmony_ciListas de correo
37462306a36Sopenharmony_ci-----------------
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ciComo se explica en algunos de los documentos anteriores, la mayoría de
37762306a36Sopenharmony_cidesarrolladores del kernel participan en la lista de correo del kernel de
37862306a36Sopenharmony_ciLinux. Detalles sobre cómo para suscribirse y darse de baja de la lista se
37962306a36Sopenharmony_cipueden encontrar en:
38062306a36Sopenharmony_ci
38162306a36Sopenharmony_ci	http://vger.kernel.org/vger-lists.html#linux-kernel
38262306a36Sopenharmony_ci
38362306a36Sopenharmony_ciExisten archivos de la lista de correo en la web en muchos lugares
38462306a36Sopenharmony_cidistintos. Utilice un motor de búsqueda para encontrar estos archivos. Por
38562306a36Sopenharmony_ciejemplo:
38662306a36Sopenharmony_ci
38762306a36Sopenharmony_ci	http://dir.gmane.org/gmane.linux.kernel
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ciEs muy recomendable que busque en los archivos sobre el tema que desea
39062306a36Sopenharmony_citratar, antes de publicarlo en la lista. Un montón de cosas ya discutidas
39162306a36Sopenharmony_cien detalle solo se registran en los archivos de la lista de correo.
39262306a36Sopenharmony_ci
39362306a36Sopenharmony_ciLa mayoría de los subsistemas individuales del kernel también tienen sus
39462306a36Sopenharmony_cipropias lista de correo donde hacen sus esfuerzos de desarrollo. Revise el
39562306a36Sopenharmony_ciarchivo MAINTAINERS para obtener referencias de lo que estas listas para
39662306a36Sopenharmony_cilos diferentes grupos.
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ciMuchas de las listas están alojadas en kernel.org. La información sobre
39962306a36Sopenharmony_ciestas puede ser encontrada en:
40062306a36Sopenharmony_ci
40162306a36Sopenharmony_ci	http://vger.kernel.org/vger-lists.html
40262306a36Sopenharmony_ci
40362306a36Sopenharmony_ciRecuerde mantener buenos hábitos de comportamiento al usar las listas.
40462306a36Sopenharmony_ciAunque un poco cursi, la siguiente URL tiene algunas pautas simples para
40562306a36Sopenharmony_ciinteractuar con la lista (o cualquier lista):
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ci	http://www.albion.com/netiquette/
40862306a36Sopenharmony_ci
40962306a36Sopenharmony_ciSi varias personas responden a su correo, el CC (lista de destinatarios)
41062306a36Sopenharmony_cipuede hacerse bastante grande. No elimine a nadie de la lista CC: sin una
41162306a36Sopenharmony_cibuena razón, o no responda solo a la dirección de la lista. Acostúmbrese
41262306a36Sopenharmony_cia recibir correos dos veces, una del remitente y otra de la lista, y no
41362306a36Sopenharmony_ciintente ajustar esto agregando encabezados de correo astutos, a la gente no
41462306a36Sopenharmony_cile gustará.
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ciRecuerde mantener intacto el contexto y la atribución de sus respuestas,
41762306a36Sopenharmony_cimantenga las líneas "El hacker John Kernel escribió ...:" en la parte
41862306a36Sopenharmony_cisuperior de su respuesta, y agregue sus declaraciones entre las secciones
41962306a36Sopenharmony_ciindividuales citadas en lugar de escribiendo en la parte superior del
42062306a36Sopenharmony_cicorreo electrónico.
42162306a36Sopenharmony_ci
42262306a36Sopenharmony_ciSi incluye parches en su correo, asegúrese de que sean texto legible sin
42362306a36Sopenharmony_ciformato como se indica en :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`.
42462306a36Sopenharmony_ciLos desarrolladores del kernel no quieren lidiar con archivos adjuntos o
42562306a36Sopenharmony_ciparches comprimidos; y pueden querer comentar líneas individuales de su
42662306a36Sopenharmony_ciparche, que funciona sólo de esa manera. Asegúrese de emplear un programa
42762306a36Sopenharmony_cide correo que no altere los espacios ni los tabuladores. Una buena primera
42862306a36Sopenharmony_ciprueba es enviarse el correo a usted mismo, e intentar aplicar su
42962306a36Sopenharmony_cipropio parche. Si eso no funciona, arregle su programa de correo o
43062306a36Sopenharmony_cireemplace hasta que funcione.
43162306a36Sopenharmony_ci
43262306a36Sopenharmony_ciSobretodo, recuerde de ser respetuoso con otros subscriptores.
43362306a36Sopenharmony_ci
43462306a36Sopenharmony_ciColaborando con la comunidad
43562306a36Sopenharmony_ci----------------------------
43662306a36Sopenharmony_ci
43762306a36Sopenharmony_ciEl objetivo de la comunidad del kernel es proporcionar el mejor kernel
43862306a36Sopenharmony_ciposible. Cuando envíe un parche para su aceptación, se revisará en sus
43962306a36Sopenharmony_ciméritos técnicos solamente. Entonces, ¿qué deberías ser?
44062306a36Sopenharmony_ci
44162306a36Sopenharmony_ci  - críticas
44262306a36Sopenharmony_ci  - comentarios
44362306a36Sopenharmony_ci  - peticiones de cambios
44462306a36Sopenharmony_ci  - peticiones de justificaciones
44562306a36Sopenharmony_ci  - silencio
44662306a36Sopenharmony_ci
44762306a36Sopenharmony_ciRecuerde, esto es parte de introducir su parche en el kernel. Tiene que ser
44862306a36Sopenharmony_cicapaz de recibir críticas y comentarios sobre sus parches, evaluar
44962306a36Sopenharmony_cia nivel técnico y re-elaborar sus parches o proporcionar razonamiento claro
45062306a36Sopenharmony_ciy conciso de por qué no se deben hacer tales cambios. Si no hay respuestas
45162306a36Sopenharmony_cia su publicación, espere unos días e intente de nuevo, a veces las cosas se
45262306a36Sopenharmony_cipierden dado el gran volumen.
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_ci¿Qué no debería hacer?
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_ci  - esperar que su parche se acepte sin preguntas
45762306a36Sopenharmony_ci  - actuar de forma defensiva
45862306a36Sopenharmony_ci  - ignorar comentarios
45962306a36Sopenharmony_ci  - enviar el parche de nuevo, sin haber aplicados los cambios pertinentes
46062306a36Sopenharmony_ci
46162306a36Sopenharmony_ciEn una comunidad que busca la mejor solución técnica posible, siempre habrá
46262306a36Sopenharmony_cidiferentes opiniones sobre lo beneficioso que es un parche. Tiene que ser
46362306a36Sopenharmony_cicooperativo y estar dispuesto a adaptar su idea para que encaje dentro
46462306a36Sopenharmony_cidel kernel, o al menos esté dispuesto a demostrar que su idea vale la pena.
46562306a36Sopenharmony_ciRecuerde, estar equivocado es aceptable siempre y cuando estés dispuesto a
46662306a36Sopenharmony_citrabajar hacia una solución que sea correcta.
46762306a36Sopenharmony_ci
46862306a36Sopenharmony_ciEs normal que las respuestas a su primer parche sean simplemente una lista
46962306a36Sopenharmony_cide una docena de cosas que debe corregir. Esto **no** implica que su
47062306a36Sopenharmony_ciparche no será aceptado, y **no** es personal. Simplemente corrija todos
47162306a36Sopenharmony_cilos problemas planteados en su parche, y envié otra vez.
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_ciDiferencias entre la comunidad kernel y las estructuras corporativas
47462306a36Sopenharmony_ci--------------------------------------------------------------------
47562306a36Sopenharmony_ci
47662306a36Sopenharmony_ciLa comunidad del kernel funciona de manera diferente a la mayoría de los
47762306a36Sopenharmony_cientornos de desarrollo tradicionales en empresas. Aquí hay una lista de
47862306a36Sopenharmony_cicosas que puede intentar hacer para evitar problemas:
47962306a36Sopenharmony_ci
48062306a36Sopenharmony_ci  Cosas buenas que decir respecto a los cambios propuestos:
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_ci    - "Esto arregla múltiples problemas."
48362306a36Sopenharmony_ci    - "Esto elimina 2000 lineas de código."
48462306a36Sopenharmony_ci    - "Aquí hay un parche que explica lo que intento describir."
48562306a36Sopenharmony_ci    - "Lo he testeado en 5 arquitecturas distintas..."
48662306a36Sopenharmony_ci    - "Aquí hay una serie de parches menores que..."
48762306a36Sopenharmony_ci    - "Esto mejora el rendimiento en maquinas típicas..."
48862306a36Sopenharmony_ci
48962306a36Sopenharmony_ci  Cosas negativas que debe evitar decir:
49062306a36Sopenharmony_ci
49162306a36Sopenharmony_ci    - "Lo hicimos así en AIX/ptx/Solaris, de modo que debe ser bueno..."
49262306a36Sopenharmony_ci    - "Llevo haciendo esto 20 años, de modo que..."
49362306a36Sopenharmony_ci    - "Esto lo necesita mi empresa para ganar dinero"
49462306a36Sopenharmony_ci    - "Esto es para la linea de nuestros productos Enterprise"
49562306a36Sopenharmony_ci    - "Aquí esta el documento de 1000 paginas describiendo mi idea"
49662306a36Sopenharmony_ci    - "Llevo 6 meses trabajando en esto..."
49762306a36Sopenharmony_ci    - "Aquí esta un parche de 5000 lineas que..."
49862306a36Sopenharmony_ci    - "He rescrito todo el desastre actual, y aquí esta..."
49962306a36Sopenharmony_ci    - "Tengo un deadline, y este parche debe aplicarse ahora."
50062306a36Sopenharmony_ci
50162306a36Sopenharmony_ciOtra forma en que la comunidad del kernel es diferente a la mayoría de los
50262306a36Sopenharmony_cientornos de trabajo tradicionales en ingeniería de software, es la
50362306a36Sopenharmony_cinaturaleza sin rostro de interacción. Una de las ventajas de utilizar el
50462306a36Sopenharmony_cicorreo electrónico y el IRC como formas principales de comunicación es la
50562306a36Sopenharmony_cino discriminación por motivos de género o raza. El entorno de trabajo del
50662306a36Sopenharmony_cikernel de Linux acepta a mujeres y minorías porque todo lo que eres es una
50762306a36Sopenharmony_cidirección de correo electrónico. El aspecto internacional también ayuda a
50862306a36Sopenharmony_cinivelar el campo de juego porque no puede adivinar el género basado en
50962306a36Sopenharmony_ciel nombre de una persona. Un hombre puede llamarse Andrea y una mujer puede
51062306a36Sopenharmony_cillamarse Pat. La mayoría de las mujeres que han trabajado en el kernel de
51162306a36Sopenharmony_ciLinux y han expresado una opinión han tenido experiencias positivas.
51262306a36Sopenharmony_ci
51362306a36Sopenharmony_ciLa barrera del idioma puede causar problemas a algunas personas que no se
51462306a36Sopenharmony_cisientes cómodas con el inglés. Un buen dominio del idioma puede ser
51562306a36Sopenharmony_cinecesario para transmitir ideas correctamente en las listas de correo, por
51662306a36Sopenharmony_cilo que le recomendamos que revise sus correos electrónicos para asegurarse
51762306a36Sopenharmony_cide que tengan sentido en inglés antes de enviarlos.
51862306a36Sopenharmony_ci
51962306a36Sopenharmony_ciDivida sus cambios
52062306a36Sopenharmony_ci---------------------
52162306a36Sopenharmony_ci
52262306a36Sopenharmony_ciLa comunidad del kernel de Linux no acepta con gusto grandes fragmentos de
52362306a36Sopenharmony_cicódigo, sobretodo a la vez. Los cambios deben introducirse correctamente,
52462306a36Sopenharmony_cidiscutidos y divididos en pequeñas porciones individuales. Esto es casi
52562306a36Sopenharmony_ciexactamente lo contrario de lo que las empresas están acostumbradas a hacer.
52662306a36Sopenharmony_ciSu propuesta también debe introducirse muy temprano en el proceso de
52762306a36Sopenharmony_cidesarrollo, de modo que pueda recibir comentarios sobre lo que está
52862306a36Sopenharmony_cihaciendo. También deje que la comunidad sienta que está trabajando con
52962306a36Sopenharmony_ciellos, y no simplemente usándolos como un vertedero para su función. Sin
53062306a36Sopenharmony_ciembargo, no envíe 50 correos electrónicos a una vez a una lista de correo,
53162306a36Sopenharmony_cisu serie de parches debe casi siempre ser más pequeña que eso.
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ciLas razones para dividir las cosas son las siguientes:
53462306a36Sopenharmony_ci
53562306a36Sopenharmony_ci1) Los cambios pequeños aumentan la probabilidad de que sus parches sean
53662306a36Sopenharmony_ci   aplicados, ya que no requieren mucho tiempo o esfuerzo para verificar su
53762306a36Sopenharmony_ci   exactitud. Un parche de 5 líneas puede ser aplicado por un maintainer
53862306a36Sopenharmony_ci   con apenas una segunda mirada. Sin embargo, un parche de 500 líneas
53962306a36Sopenharmony_ci   puede tardar horas en ser revisado en términos de corrección (el tiempo
54062306a36Sopenharmony_ci   que toma es exponencialmente proporcional al tamaño del parche, o algo
54162306a36Sopenharmony_ci   así).
54262306a36Sopenharmony_ci
54362306a36Sopenharmony_ci   Los parches pequeños también facilitan la depuración cuando algo falla.
54462306a36Sopenharmony_ci   Es mucho más fácil retirar los parches uno por uno que diseccionar un
54562306a36Sopenharmony_ci   parche muy grande después de haber sido aplicado (y roto alguna cosa).
54662306a36Sopenharmony_ci
54762306a36Sopenharmony_ci2) Es importante no solo enviar pequeños parches, sino también reescribir
54862306a36Sopenharmony_ci   y simplificar (o simplemente reordenar) los parches antes de enviarlos.
54962306a36Sopenharmony_ci
55062306a36Sopenharmony_ciEsta es una analogía del desarrollador del kernel Al Viro (traducida):
55162306a36Sopenharmony_ci
55262306a36Sopenharmony_ci	*"Piense en un maestro que califica la tarea de un estudiante de
55362306a36Sopenharmony_ci	matemáticas. El maestro no quiere ver los intentos y errores del
55462306a36Sopenharmony_ci	estudiante antes de que se les ocurriera la solución. Quiere ver la
55562306a36Sopenharmony_ci	respuesta más limpia y elegante. Un buen estudiante lo sabe, y nunca
55662306a36Sopenharmony_ci	presentaría su trabajo intermedio antes de tener la solución final.*
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_ci	*Lo mismo ocurre con el desarrollo del kernel. Los maintainers y
55962306a36Sopenharmony_ci	revisores no quieren ver el proceso de pensamiento detrás de la solución
56062306a36Sopenharmony_ci	al problema que se está resolviendo. Quieren ver un solución simple y
56162306a36Sopenharmony_ci	elegante."*
56262306a36Sopenharmony_ci
56362306a36Sopenharmony_ciPuede resultar un reto mantener el equilibrio entre presentar una solución
56462306a36Sopenharmony_cielegante y trabajar junto a la comunidad, discutiendo su trabajo inacabado.
56562306a36Sopenharmony_ciPor lo tanto, es bueno comenzar temprano en el proceso para obtener
56662306a36Sopenharmony_ci"feedback" y mejorar su trabajo, pero también mantenga sus cambios en
56762306a36Sopenharmony_cipequeños trozos que pueden ser aceptados, incluso cuando toda su labor no
56862306a36Sopenharmony_ciestá listo para inclusión en un momento dado.
56962306a36Sopenharmony_ci
57062306a36Sopenharmony_ciTambién tenga en cuenta que no es aceptable enviar parches para su
57162306a36Sopenharmony_ciinclusión que están sin terminar y serán "arreglados más tarde".
57262306a36Sopenharmony_ci
57362306a36Sopenharmony_ciJustifique sus cambios
57462306a36Sopenharmony_ci----------------------
57562306a36Sopenharmony_ci
57662306a36Sopenharmony_ciAdemás de dividir sus parches, es muy importante que deje a la comunidad de
57762306a36Sopenharmony_ciLinux sabe por qué deberían agregar este cambio. Nuevas características
57862306a36Sopenharmony_cidebe justificarse como necesarias y útiles.
57962306a36Sopenharmony_ci
58062306a36Sopenharmony_ciDocumente sus cambios
58162306a36Sopenharmony_ci---------------------
58262306a36Sopenharmony_ci
58362306a36Sopenharmony_ciCuando envíe sus parches, preste especial atención a lo que dice en el
58462306a36Sopenharmony_citexto de su correo electrónico. Esta información se convertirá en el
58562306a36Sopenharmony_ciChangeLog del parche, y se conservará para que todos la vean, todo el
58662306a36Sopenharmony_citiempo. Debe describir el parche por completo y contener:
58762306a36Sopenharmony_ci
58862306a36Sopenharmony_ci  - por qué los cambios son necesarios
58962306a36Sopenharmony_ci  - el diseño general de su propuesta
59062306a36Sopenharmony_ci  - detalles de implementación
59162306a36Sopenharmony_ci  - resultados de sus experimentos
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_ciPara obtener más detalles sobre cómo debería quedar todo esto, consulte la
59462306a36Sopenharmony_cisección ChangeLog del documento:
59562306a36Sopenharmony_ci
59662306a36Sopenharmony_ci  "The Perfect Patch"
59762306a36Sopenharmony_ci      https://www.ozlabs.org/~akpm/stuff/tpp.txt
59862306a36Sopenharmony_ci
59962306a36Sopenharmony_ciTodas estas cuestiones son a veces son muy difíciles de conseguir. Puede
60062306a36Sopenharmony_cillevar años perfeccionar estas prácticas (si es que lo hace). Es un proceso
60162306a36Sopenharmony_cicontinuo de mejora que requiere mucha paciencia y determinación. Pero no se
60262306a36Sopenharmony_cirinda, es posible. Muchos lo han hecho antes, y cada uno tuvo que comenzar
60362306a36Sopenharmony_ciexactamente donde está usted ahora.
60462306a36Sopenharmony_ci
60562306a36Sopenharmony_ci----------
60662306a36Sopenharmony_ci
60762306a36Sopenharmony_ciGracias a Paolo Ciarrocchi que permitió que la sección "Development Process"
60862306a36Sopenharmony_cise basara en el texto que había escrito (https://lwn.net/Articles/94386/),
60962306a36Sopenharmony_ciy a Randy Dunlap y Gerrit Huizenga por algunas de la lista de cosas que
61062306a36Sopenharmony_cidebes y no debes decir. También gracias a Pat Mochel, Hanna Linder, Randy
61162306a36Sopenharmony_ciDunlap, Kay Sievers, Vojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook,
61262306a36Sopenharmony_ciAndrew Morton, Andi Kleen, Vadim Lobanov, Jesper Juhl, Adrian Bunk,
61362306a36Sopenharmony_ciKeri Harris, Frans Pop, David A. Wheeler, Junio Hamano, Michael Kerrisk y
61462306a36Sopenharmony_ciAlex Shepard por su revisión, comentarios y contribuciones. Sin su ayuda,
61562306a36Sopenharmony_cieste documento no hubiera sido posible.
61662306a36Sopenharmony_ci
61762306a36Sopenharmony_ciMaintainer: Greg Kroah-Hartman <greg@kroah.com>
618