mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
Documentation: Add HOWTO Spanish translation into rst based build system
Add Spanish translation of HOWTO document into rst based documentation build system. Reviewed-by: Bagas Sanjaya <bagasdotme@gmail.com> Signed-off-by: Carlos Bilbao <carlos.bilbao@amd.com> Link: https://lore.kernel.org/r/20221024145521.69465-3-carlos.bilbao@amd.com Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
parent
444064185d
commit
23b8d08e7e
617
Documentation/translations/sp_SP/howto.rst
Normal file
617
Documentation/translations/sp_SP/howto.rst
Normal file
@ -0,0 +1,617 @@
|
||||
.. include:: ./disclaimer-sp.rst
|
||||
|
||||
:Original: :ref:`Documentation/process/howto.rst <process_howto>`
|
||||
:Translator: Carlos Bilbao <carlos.bilbao@amd.com>
|
||||
|
||||
.. _sp_process_howto:
|
||||
|
||||
Cómo participar en el desarrollo del kernel de Linux
|
||||
====================================================
|
||||
|
||||
Este documento es el principal punto de partida. Contiene instrucciones
|
||||
sobre cómo convertirse en desarrollador del kernel de Linux y explica cómo
|
||||
trabajar con el y en su desarrollo. El documento no tratará ningún aspecto
|
||||
técnico relacionado con la programación del kernel, pero le ayudará
|
||||
guiándole por el camino correcto.
|
||||
|
||||
Si algo en este documento quedara obsoleto, envíe parches al maintainer de
|
||||
este archivo, que se encuentra en la parte superior del documento.
|
||||
|
||||
Introducción
|
||||
------------
|
||||
¿De modo que quiere descubrir como convertirse en un/a desarrollador/a del
|
||||
kernel de Linux? Tal vez su jefe le haya dicho, "Escriba un driver de
|
||||
Linux para este dispositivo." El objetivo de este documento en enseñarle
|
||||
todo cuanto necesita para conseguir esto, describiendo el proceso por el
|
||||
que debe pasar, y con indicaciones de como trabajar con la comunidad.
|
||||
También trata de explicar las razones por las cuales la comunidad trabaja
|
||||
de la forma en que lo hace.
|
||||
|
||||
El kernel esta principalmente escrito en C, con algunas partes que son
|
||||
dependientes de la arquitectura en ensamblador. Un buen conocimiento de C
|
||||
es necesario para desarrollar en el kernel. Lenguaje ensamblador (en
|
||||
cualquier arquitectura) no es necesario excepto que planee realizar
|
||||
desarrollo de bajo nivel para dicha arquitectura. Aunque no es un perfecto
|
||||
sustituto para una educación sólida en C y/o años de experiencia, los
|
||||
siguientes libros sirven, como mínimo, como referencia:
|
||||
|
||||
- "The C Programming Language" de Kernighan e Ritchie [Prentice Hall]
|
||||
- "Practical C Programming" de Steve Oualline [O'Reilly]
|
||||
- "C: A Reference Manual" de Harbison and Steele [Prentice Hall]
|
||||
|
||||
El kernel está escrito usando GNU C y la cadena de herramientas GNU. Si
|
||||
bien se adhiere al estándar ISO C89, utiliza una serie de extensiones que
|
||||
no aparecen en dicho estándar. El kernel usa un C independiente de entorno,
|
||||
sin depender de la biblioteca C estándar, por lo que algunas partes del
|
||||
estándar C no son compatibles. Divisiones de long long arbitrarios o
|
||||
de coma flotante no son permitidas. En ocasiones, puede ser difícil de
|
||||
entender las suposiciones que el kernel hace respecto a la cadena de
|
||||
herramientas y las extensiones que usa, y desafortunadamente no hay
|
||||
referencia definitiva para estas. Consulte las páginas de información de
|
||||
gcc (`info gcc`) para obtener información al respecto.
|
||||
|
||||
Recuerde que está tratando de aprender a trabajar con una comunidad de
|
||||
desarrollo existente. Es un grupo diverso de personas, con altos estándares
|
||||
de código, estilo y procedimiento. Estas normas han sido creadas a lo
|
||||
largo del tiempo en función de lo que se ha encontrado que funciona mejor
|
||||
para un equipo tan grande y geográficamente disperso. Trate de aprender
|
||||
tanto como le sea posible acerca de estos estándares antes de tiempo, ya
|
||||
que están bien documentados; no espere que la gente se adapte a usted o a
|
||||
la forma de hacer las cosas en su empresa.
|
||||
|
||||
Cuestiones legales
|
||||
------------------
|
||||
El código fuente del kernel de Linux se publica bajo licencia GPL. Por
|
||||
favor, revise el archivo COPYING, presente en la carpeta principal del
|
||||
código fuente, para detalles de la licencia. Si tiene alguna otra pregunta
|
||||
sobre licencias, contacte a un abogado, no pregunte en listas de discusión
|
||||
del kernel de Linux. La gente en estas listas no son abogadas, y no debe
|
||||
confiar en sus opiniones en materia legal.
|
||||
|
||||
Para preguntas y respuestas más frecuentes sobre la licencia GPL, consulte:
|
||||
|
||||
https://www.gnu.org/licenses/gpl-faq.html
|
||||
|
||||
Documentación
|
||||
--------------
|
||||
El código fuente del kernel de Linux tiene una gran variedad de documentos
|
||||
que son increíblemente valiosos para aprender a interactuar con la
|
||||
comunidad del kernel. Cuando se agregan nuevas funciones al kernel, se
|
||||
recomienda que se incluyan nuevos archivos de documentación que expliquen
|
||||
cómo usar la función. Cuando un cambio en el kernel hace que la interfaz
|
||||
que el kernel expone espacio de usuario cambie, se recomienda que envíe la
|
||||
información o un parche en las páginas del manual que expliquen el cambio
|
||||
a mtk.manpages@gmail.com, y CC la lista linux-api@vger.kernel.org.
|
||||
|
||||
Esta es la lista de archivos que están en el código fuente del kernel y son
|
||||
de obligada lectura:
|
||||
|
||||
:ref:`Documentation/admin-guide/README.rst <readme>`
|
||||
Este archivo ofrece una breve descripción del kernel de Linux y
|
||||
describe lo que es necesario hacer para configurar y compilar el
|
||||
kernel. Quienes sean nuevos en el kernel deben comenzar aquí.
|
||||
|
||||
:ref:`Documentation/process/changes.rst <changes>`
|
||||
Este archivo proporciona una lista de los niveles mínimos de varios
|
||||
paquetes que son necesarios para construir y ejecutar el kernel
|
||||
exitosamente.
|
||||
|
||||
:ref:`Documentation/process/coding-style.rst <codingstyle>`
|
||||
Esto describe el estilo de código del kernel de Linux y algunas de los
|
||||
razones detrás de esto. Se espera que todo el código nuevo siga las
|
||||
directrices de este documento. La mayoría de los maintainers solo
|
||||
aceptarán parches si se siguen estas reglas, y muchas personas solo
|
||||
revisan el código si tiene el estilo adecuado.
|
||||
|
||||
:ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
|
||||
Este archivo describe en gran detalle cómo crear con éxito y enviar un
|
||||
parche, que incluye (pero no se limita a):
|
||||
|
||||
- Contenidos del correo electrónico (email)
|
||||
- Formato del email
|
||||
- A quien se debe enviar
|
||||
|
||||
Seguir estas reglas no garantiza el éxito (ya que todos los parches son
|
||||
sujetos a escrutinio de contenido y estilo), pero en caso de no seguir
|
||||
dichas reglas, el fracaso es prácticamente garantizado.
|
||||
Otras excelentes descripciones de cómo crear parches correctamente son:
|
||||
|
||||
"The Perfect Patch"
|
||||
https://www.ozlabs.org/~akpm/stuff/tpp.txt
|
||||
|
||||
"Linux kernel patch submission format"
|
||||
https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html
|
||||
|
||||
:ref:`Documentation/process/stable-api-nonsense.rst <stable_api_nonsense>`
|
||||
Este archivo describe la lógica detrás de la decisión consciente de
|
||||
no tener una API estable dentro del kernel, incluidas cosas como:
|
||||
|
||||
- Capas intermedias del subsistema (por compatibilidad?)
|
||||
- Portabilidad de drivers entre sistemas operativos
|
||||
- Mitigar el cambio rápido dentro del árbol de fuentes del kernel (o
|
||||
prevenir cambios rápidos)
|
||||
|
||||
Este documento es crucial para comprender la filosofía del desarrollo
|
||||
de Linux y es muy importante para las personas que se mudan a Linux
|
||||
tras desarrollar otros sistemas operativos.
|
||||
|
||||
:ref:`Documentation/admin-guide/security-bugs.rst <securitybugs>`
|
||||
Si cree que ha encontrado un problema de seguridad en el kernel de
|
||||
Linux, siga los pasos de este documento para ayudar a notificar a los
|
||||
desarrolladores del kernel y ayudar a resolver el problema.
|
||||
|
||||
:ref:`Documentation/process/management-style.rst <managementstyle>`
|
||||
Este documento describe cómo operan los maintainers del kernel de Linux
|
||||
y los valores compartidos detrás de sus metodologías. Esta es una
|
||||
lectura importante para cualquier persona nueva en el desarrollo del
|
||||
kernel (o cualquier persona que simplemente sienta curiosidad por
|
||||
el campo IT), ya que clarifica muchos conceptos erróneos y confusiones
|
||||
comunes sobre el comportamiento único de los maintainers del kernel.
|
||||
|
||||
:ref:`Documentation/process/stable-kernel-rules.rst <stable_kernel_rules>`
|
||||
Este archivo describe las reglas sobre cómo se suceden las versiones
|
||||
del kernel estable, y qué hacer si desea obtener un cambio en una de
|
||||
estas publicaciones.
|
||||
|
||||
:ref:`Documentation/process/kernel-docs.rst <kernel_docs>`
|
||||
Una lista de documentación externa relativa al desarrollo del kernel.
|
||||
Por favor consulte esta lista si no encuentra lo que están buscando
|
||||
dentro de la documentación del kernel.
|
||||
|
||||
:ref:`Documentation/process/applying-patches.rst <applying_patches>`
|
||||
Una buena introducción que describe exactamente qué es un parche y cómo
|
||||
aplicarlo a las diferentes ramas de desarrollo del kernel.
|
||||
|
||||
El kernel también tiene una gran cantidad de documentos que pueden ser
|
||||
generados automáticamente desde el propio código fuente o desde
|
||||
ReStructuredText markups (ReST), como este. Esto incluye un descripción
|
||||
completa de la API en el kernel y reglas sobre cómo manejar cerrojos
|
||||
(locking) correctamente.
|
||||
|
||||
Todos estos documentos se pueden generar como PDF o HTML ejecutando::
|
||||
|
||||
make pdfdocs
|
||||
make htmldocs
|
||||
|
||||
respectivamente desde el directorio fuente principal del kernel.
|
||||
|
||||
Los documentos que utilizan el markup ReST se generarán en
|
||||
Documentation/output. También se pueden generar en formatos LaTeX y ePub
|
||||
con::
|
||||
|
||||
make latexdocs
|
||||
make epubdocs
|
||||
|
||||
Convertirse en un/a desarrollador/a de kernel
|
||||
---------------------------------------------
|
||||
|
||||
Si no sabe nada sobre el desarrollo del kernel de Linux, debería consultar
|
||||
el proyecto Linux KernelNewbies:
|
||||
|
||||
https://kernelnewbies.org
|
||||
|
||||
Consiste en una útil lista de correo donde puede preguntar casi cualquier
|
||||
tipo de pregunta básica de desarrollo del kernel (asegúrese de buscar en
|
||||
los archivos primero, antes de preguntar algo que ya ha sido respondido en
|
||||
el pasado.) También tiene un canal IRC que puede usar para hacer preguntas
|
||||
en tiempo real, y una gran cantidad de documentación útil para ir
|
||||
aprendiendo sobre el desarrollo del kernel de Linux.
|
||||
|
||||
El sitio web tiene información básica sobre la organización del código,
|
||||
subsistemas, y proyectos actuales (tanto dentro como fuera del árbol).
|
||||
También describe alguna información logística básica, como cómo compilar
|
||||
un kernel y aplicar un parche.
|
||||
|
||||
Si no sabe por dónde quiere empezar, pero quieres buscar alguna tarea que
|
||||
comenzar a hacer para unirse a la comunidad de desarrollo del kernel,
|
||||
acuda al proyecto Linux Kernel Janitor:
|
||||
|
||||
https://kernelnewbies.org/KernelJanitors
|
||||
|
||||
Es un gran lugar para comenzar. Describe una lista de problemas
|
||||
relativamente simples que deben limpiarse y corregirse dentro del código
|
||||
fuente del kernel de Linux árbol de fuentes. Trabajando con los
|
||||
desarrolladores a cargo de este proyecto, aprenderá los conceptos básicos
|
||||
para incluir su parche en el árbol del kernel de Linux, y posiblemente
|
||||
descubrir en la dirección en que trabajar a continuación, si no tiene ya
|
||||
una idea.
|
||||
|
||||
Antes de realizar cualquier modificación real al código del kernel de
|
||||
Linux, es imperativo entender cómo funciona el código en cuestión. Para
|
||||
este propósito, nada es mejor que leerlo directamente (lo más complicado
|
||||
está bien comentado), tal vez incluso con la ayuda de herramientas
|
||||
especializadas. Una de esas herramientas que se recomienda especialmente
|
||||
es el proyecto Linux Cross-Reference, que es capaz de presentar el código
|
||||
fuente en un formato de página web indexada y autorreferencial. Una
|
||||
excelente puesta al día del repositorio del código del kernel se puede
|
||||
encontrar en:
|
||||
|
||||
https://elixir.bootlin.com/
|
||||
|
||||
El proceso de desarrollo
|
||||
------------------------
|
||||
|
||||
El proceso de desarrollo del kernel de Linux consiste actualmente de
|
||||
diferentes "branches" (ramas) con muchos distintos subsistemas específicos
|
||||
a cada una de ellas. Las diferentes ramas son:
|
||||
|
||||
- El código principal de Linus (mainline tree)
|
||||
- Varios árboles estables con múltiples major numbers
|
||||
- Subsistemas específicos
|
||||
- linux-next, para integración y testing
|
||||
|
||||
Mainline tree (Árbol principal)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
El mainline tree es mantenido por Linus Torvalds, y puede encontrarse en
|
||||
https://kernel.org o en su repo. El proceso de desarrollo es el siguiente:
|
||||
|
||||
- Tan pronto como se lanza un nuevo kernel, se abre una ventana de dos
|
||||
semanas, durante este período de tiempo, los maintainers pueden enviar
|
||||
grandes modificaciones a Linus, por lo general los parches que ya se
|
||||
han incluido en el linux-next durante unas semanas. La forma preferida
|
||||
de enviar grandes cambios es usando git (la herramienta de
|
||||
administración de código fuente del kernel, más información al respecto
|
||||
en https://git-scm.com/), pero los parches simples también son validos.
|
||||
- Después de dos semanas, se lanza un kernel -rc1 y la atención se centra
|
||||
en hacer el kernel nuevo lo más estable ("solido") posible. La mayoría
|
||||
de los parches en este punto deben arreglar una regresión. Los errores
|
||||
que siempre han existido no son regresiones, por lo tanto, solo envíe
|
||||
este tipo de correcciones si son importantes. Tenga en cuenta que se
|
||||
podría aceptar un controlador (o sistema de archivos) completamente
|
||||
nuevo después de -rc1 porque no hay riesgo de causar regresiones con
|
||||
tal cambio, siempre y cuando el cambio sea autónomo y no afecte áreas
|
||||
fuera del código que se está agregando. git se puede usar para enviar
|
||||
parches a Linus después de que se lance -rc1, pero los parches también
|
||||
deben ser enviado a una lista de correo pública para su revisión.
|
||||
- Se lanza un nuevo -rc cada vez que Linus considera que el árbol git
|
||||
actual esta en un estado razonablemente sano y adecuado para la prueba.
|
||||
La meta es lanzar un nuevo kernel -rc cada semana.
|
||||
- El proceso continúa hasta que el kernel se considera "listo", y esto
|
||||
puede durar alrededor de 6 semanas.
|
||||
|
||||
Vale la pena mencionar lo que Andrew Morton escribió en las listas de
|
||||
correo del kernel de Linux, sobre lanzamientos del kernel (traducido):
|
||||
|
||||
*"Nadie sabe cuándo se publicara un nuevo kernel, pues esto sucede
|
||||
según el estado de los bugs, no de una cronología preconcebida."*
|
||||
|
||||
Varios árboles estables con múltiples major numbers
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Los kernels con versiones de 3 partes son kernels estables. Estos contienen
|
||||
correcciones relativamente pequeñas y críticas para problemas de seguridad
|
||||
o importantes regresiones descubiertas para una publicación de código.
|
||||
Cada lanzamiento en una gran serie estable incrementa la tercera parte de
|
||||
la versión número, manteniendo las dos primeras partes iguales.
|
||||
|
||||
Esta es la rama recomendada para los usuarios que quieren la versión
|
||||
estable más reciente del kernel, y no están interesados en ayudar a probar
|
||||
versiones en desarrollo/experimentales.
|
||||
|
||||
Los árboles estables son mantenidos por el equipo "estable"
|
||||
<stable@vger.kernel.org>, y se liberan (publican) según lo dicten las
|
||||
necesidades. El período de liberación normal es de aproximadamente dos
|
||||
semanas, pero puede ser más largo si no hay problemas apremiantes. Un
|
||||
problema relacionado con la seguridad, en cambio, puede causar un
|
||||
lanzamiento casi instantáneamente.
|
||||
|
||||
El archivo :ref:`Documentación/proceso/stable-kernel-rules.rst <stable_kernel_rules>`
|
||||
en el árbol del kernel documenta qué tipos de cambios son aceptables para
|
||||
el árbol estable y cómo funciona el proceso de lanzamiento.
|
||||
|
||||
Subsistemas específicos
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Los maintainers de los diversos subsistemas del kernel --- y también muchos
|
||||
desarrolladores de subsistemas del kernel --- exponen su estado actual de
|
||||
desarrollo en repositorios fuente. De esta manera, otros pueden ver lo que
|
||||
está sucediendo en las diferentes áreas del kernel. En áreas donde el
|
||||
desarrollo es rápido, se le puede pedir a un desarrollador que base sus
|
||||
envíos en tal árbol del subsistema del kernel, para evitar conflictos entre
|
||||
este y otros trabajos ya en curso.
|
||||
|
||||
La mayoría de estos repositorios son árboles git, pero también hay otros
|
||||
SCM en uso, o colas de parches que se publican como series quilt. Las
|
||||
direcciones de estos repositorios de subsistemas se enumeran en el archivo
|
||||
MAINTAINERS. Muchos de estos se pueden ver en https://git.kernel.org/.
|
||||
|
||||
Antes de que un parche propuesto se incluya con dicho árbol de subsistemas,
|
||||
es sujeto a revisión, que ocurre principalmente en las listas de correo
|
||||
(ver la sección respectiva a continuación). Para varios subsistemas del
|
||||
kernel, esta revisión se rastrea con la herramienta patchwork. Patchwork
|
||||
ofrece una interfaz web que muestra publicaciones de parches, cualquier
|
||||
comentario sobre un parche o revisiones a él, y los maintainers pueden
|
||||
marcar los parches como en revisión, aceptado, o rechazado. La mayoría de
|
||||
estos sitios de trabajo de parches se enumeran en
|
||||
|
||||
https://patchwork.kernel.org/.
|
||||
|
||||
linux-next, para integración y testing
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Antes de que las actualizaciones de los árboles de subsistemas se combinen
|
||||
con el árbol principal, necesitan probar su integración. Para ello, existe
|
||||
un repositorio especial de pruebas en el que se encuentran casi todos los
|
||||
árboles de subsistema, actualizado casi a diario:
|
||||
|
||||
https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git
|
||||
|
||||
De esta manera, linux-next ofrece una perspectiva resumida de lo que se
|
||||
espera que entre en el kernel principal en el próximo período de "merge"
|
||||
(fusión de código). Los testers aventureros son bienvenidos a probar
|
||||
linux-next en ejecución.
|
||||
|
||||
Reportar bugs
|
||||
-------------
|
||||
|
||||
El archivo 'Documentación/admin-guide/reporting-issues.rst' en el
|
||||
directorio principal del kernel describe cómo informar un posible bug del
|
||||
kernel y detalles sobre qué tipo de información necesitan los
|
||||
desarrolladores del kernel para ayudar a rastrear la fuente del problema.
|
||||
|
||||
Gestión de informes de bugs
|
||||
------------------------------
|
||||
|
||||
Una de las mejores formas de poner en práctica sus habilidades de hacking
|
||||
es arreglando errores reportados por otras personas. No solo ayudará a
|
||||
hacer el kernel más estable, también aprenderá a solucionar problemas del
|
||||
mundo real y mejora sus habilidades, y otros desarrolladores se darán
|
||||
cuenta de tu presencia. La corrección de errores es una de las mejores
|
||||
formas de ganar méritos entre desarrolladores, porque no a muchas personas
|
||||
les gusta perder el tiempo arreglando los errores de otras personas.
|
||||
|
||||
Para trabajar en informes de errores ya reportados, busque un subsistema
|
||||
que le interese. Verifique el archivo MAINTAINERS donde se informan los
|
||||
errores de ese subsistema; con frecuencia será una lista de correo, rara
|
||||
vez un rastreador de errores (bugtracker). Busque en los archivos de dicho
|
||||
lugar para informes recientes y ayude donde lo crea conveniente. También es
|
||||
posible que desee revisar https://bugzilla.kernel.org para informes de
|
||||
errores; solo un puñado de subsistemas del kernel lo emplean activamente
|
||||
para informar o rastrear; sin embargo, todos los errores para todo el kernel
|
||||
se archivan allí.
|
||||
|
||||
Listas de correo
|
||||
-----------------
|
||||
|
||||
Como se explica en algunos de los documentos anteriores, la mayoría de
|
||||
desarrolladores del kernel participan en la lista de correo del kernel de
|
||||
Linux. Detalles sobre cómo para suscribirse y darse de baja de la lista se
|
||||
pueden encontrar en:
|
||||
|
||||
http://vger.kernel.org/vger-lists.html#linux-kernel
|
||||
|
||||
Existen archivos de la lista de correo en la web en muchos lugares
|
||||
distintos. Utilice un motor de búsqueda para encontrar estos archivos. Por
|
||||
ejemplo:
|
||||
|
||||
http://dir.gmane.org/gmane.linux.kernel
|
||||
|
||||
Es muy recomendable que busque en los archivos sobre el tema que desea
|
||||
tratar, antes de publicarlo en la lista. Un montón de cosas ya discutidas
|
||||
en detalle solo se registran en los archivos de la lista de correo.
|
||||
|
||||
La mayoría de los subsistemas individuales del kernel también tienen sus
|
||||
propias lista de correo donde hacen sus esfuerzos de desarrollo. Revise el
|
||||
archivo MAINTAINERS para obtener referencias de lo que estas listas para
|
||||
los diferentes grupos.
|
||||
|
||||
Muchas de las listas están alojadas en kernel.org. La información sobre
|
||||
estas puede ser encontrada en:
|
||||
|
||||
http://vger.kernel.org/vger-lists.html
|
||||
|
||||
Recuerde mantener buenos hábitos de comportamiento al usar las listas.
|
||||
Aunque un poco cursi, la siguiente URL tiene algunas pautas simples para
|
||||
interactuar con la lista (o cualquier lista):
|
||||
|
||||
http://www.albion.com/netiquette/
|
||||
|
||||
Si varias personas responden a su correo, el CC (lista de destinatarios)
|
||||
puede hacerse bastante grande. No elimine a nadie de la lista CC: sin una
|
||||
buena razón, o no responda solo a la dirección de la lista. Acostúmbrese
|
||||
a recibir correos dos veces, una del remitente y otra de la lista, y no
|
||||
intente ajustar esto agregando encabezados de correo astutos, a la gente no
|
||||
le gustará.
|
||||
|
||||
Recuerde mantener intacto el contexto y la atribución de sus respuestas,
|
||||
mantenga las líneas "El hacker John Kernel escribió ...:" en la parte
|
||||
superior de su respuesta, y agregue sus declaraciones entre las secciones
|
||||
individuales citadas en lugar de escribiendo en la parte superior del
|
||||
correo electrónico.
|
||||
|
||||
Si incluye parches en su correo, asegúrese de que sean texto legible sin
|
||||
formato como se indica en :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`.
|
||||
Los desarrolladores del kernel no quieren lidiar con archivos adjuntos o
|
||||
parches comprimidos; y pueden querer comentar líneas individuales de su
|
||||
parche, que funciona sólo de esa manera. Asegúrese de emplear un programa
|
||||
de correo que no altere los espacios ni los tabuladores. Una buena primera
|
||||
prueba es enviarse el correo a usted mismo, e intentar aplicar su
|
||||
propio parche. Si eso no funciona, arregle su programa de correo o
|
||||
reemplace hasta que funcione.
|
||||
|
||||
Sobretodo, recuerde de ser respetuoso con otros subscriptores.
|
||||
|
||||
Colaborando con la comunidad
|
||||
----------------------------
|
||||
|
||||
El objetivo de la comunidad del kernel es proporcionar el mejor kernel
|
||||
posible. Cuando envíe un parche para su aceptación, se revisará en sus
|
||||
méritos técnicos solamente. Entonces, ¿qué deberías ser?
|
||||
|
||||
- críticas
|
||||
- comentarios
|
||||
- peticiones de cambios
|
||||
- peticiones de justificaciones
|
||||
- silencio
|
||||
|
||||
Recuerde, esto es parte de introducir su parche en el kernel. Tiene que ser
|
||||
capaz de recibir críticas y comentarios sobre sus parches, evaluar
|
||||
a nivel técnico y re-elaborar sus parches o proporcionar razonamiento claro
|
||||
y conciso de por qué no se deben hacer tales cambios. Si no hay respuestas
|
||||
a su publicación, espere unos días e intente de nuevo, a veces las cosas se
|
||||
pierden dado el gran volumen.
|
||||
|
||||
¿Qué no debería hacer?
|
||||
|
||||
- esperar que su parche se acepte sin preguntas
|
||||
- actuar de forma defensiva
|
||||
- ignorar comentarios
|
||||
- enviar el parche de nuevo, sin haber aplicados los cambios pertinentes
|
||||
|
||||
En una comunidad que busca la mejor solución técnica posible, siempre habrá
|
||||
diferentes opiniones sobre lo beneficioso que es un parche. Tiene que ser
|
||||
cooperativo y estar dispuesto a adaptar su idea para que encaje dentro
|
||||
del kernel, o al menos esté dispuesto a demostrar que su idea vale la pena.
|
||||
Recuerde, estar equivocado es aceptable siempre y cuando estés dispuesto a
|
||||
trabajar hacia una solución que sea correcta.
|
||||
|
||||
Es normal que las respuestas a su primer parche sean simplemente una lista
|
||||
de una docena de cosas que debe corregir. Esto **no** implica que su
|
||||
parche no será aceptado, y **no** es personal. Simplemente corrija todos
|
||||
los problemas planteados en su parche, y envié otra vez.
|
||||
|
||||
Diferencias entre la comunidad kernel y las estructuras corporativas
|
||||
--------------------------------------------------------------------
|
||||
|
||||
La comunidad del kernel funciona de manera diferente a la mayoría de los
|
||||
entornos de desarrollo tradicionales en empresas. Aquí hay una lista de
|
||||
cosas que puede intentar hacer para evitar problemas:
|
||||
|
||||
Cosas buenas que decir respecto a los cambios propuestos:
|
||||
|
||||
- "Esto arregla múltiples problemas."
|
||||
- "Esto elimina 2000 lineas de código."
|
||||
- "Aquí hay un parche que explica lo que intento describir."
|
||||
- "Lo he testeado en 5 arquitecturas distintas..."
|
||||
- "Aquí hay una serie de parches menores que..."
|
||||
- "Esto mejora el rendimiento en maquinas típicas..."
|
||||
|
||||
Cosas negativas que debe evitar decir:
|
||||
|
||||
- "Lo hicimos así en AIX/ptx/Solaris, de modo que debe ser bueno..."
|
||||
- "Llevo haciendo esto 20 años, de modo que..."
|
||||
- "Esto lo necesita mi empresa para ganar dinero"
|
||||
- "Esto es para la linea de nuestros productos Enterprise"
|
||||
- "Aquí esta el documento de 1000 paginas describiendo mi idea"
|
||||
- "Llevo 6 meses trabajando en esto..."
|
||||
- "Aquí esta un parche de 5000 lineas que..."
|
||||
- "He rescrito todo el desastre actual, y aquí esta..."
|
||||
- "Tengo un deadline, y este parche debe aplicarse ahora."
|
||||
|
||||
Otra forma en que la comunidad del kernel es diferente a la mayoría de los
|
||||
entornos de trabajo tradicionales en ingeniería de software, es la
|
||||
naturaleza sin rostro de interacción. Una de las ventajas de utilizar el
|
||||
correo electrónico y el IRC como formas principales de comunicación es la
|
||||
no discriminación por motivos de género o raza. El entorno de trabajo del
|
||||
kernel de Linux acepta a mujeres y minorías porque todo lo que eres es una
|
||||
dirección de correo electrónico. El aspecto internacional también ayuda a
|
||||
nivelar el campo de juego porque no puede adivinar el género basado en
|
||||
el nombre de una persona. Un hombre puede llamarse Andrea y una mujer puede
|
||||
llamarse Pat. La mayoría de las mujeres que han trabajado en el kernel de
|
||||
Linux y han expresado una opinión han tenido experiencias positivas.
|
||||
|
||||
La barrera del idioma puede causar problemas a algunas personas que no se
|
||||
sientes cómodas con el inglés. Un buen dominio del idioma puede ser
|
||||
necesario para transmitir ideas correctamente en las listas de correo, por
|
||||
lo que le recomendamos que revise sus correos electrónicos para asegurarse
|
||||
de que tengan sentido en inglés antes de enviarlos.
|
||||
|
||||
Divida sus cambios
|
||||
---------------------
|
||||
|
||||
La comunidad del kernel de Linux no acepta con gusto grandes fragmentos de
|
||||
código, sobretodo a la vez. Los cambios deben introducirse correctamente,
|
||||
discutidos y divididos en pequeñas porciones individuales. Esto es casi
|
||||
exactamente lo contrario de lo que las empresas están acostumbradas a hacer.
|
||||
Su propuesta también debe introducirse muy temprano en el proceso de
|
||||
desarrollo, de modo que pueda recibir comentarios sobre lo que está
|
||||
haciendo. También deje que la comunidad sienta que está trabajando con
|
||||
ellos, y no simplemente usándolos como un vertedero para su función. Sin
|
||||
embargo, no envíe 50 correos electrónicos a una vez a una lista de correo,
|
||||
su serie de parches debe casi siempre ser más pequeña que eso.
|
||||
|
||||
Las razones para dividir las cosas son las siguientes:
|
||||
|
||||
1) Los cambios pequeños aumentan la probabilidad de que sus parches sean
|
||||
aplicados, ya que no requieren mucho tiempo o esfuerzo para verificar su
|
||||
exactitud. Un parche de 5 líneas puede ser aplicado por un maintainer
|
||||
con apenas una segunda mirada. Sin embargo, un parche de 500 líneas
|
||||
puede tardar horas en ser revisado en términos de corrección (el tiempo
|
||||
que toma es exponencialmente proporcional al tamaño del parche, o algo
|
||||
así).
|
||||
|
||||
Los parches pequeños también facilitan la depuración cuando algo falla.
|
||||
Es mucho más fácil retirar los parches uno por uno que diseccionar un
|
||||
parche muy grande después de haber sido aplicado (y roto alguna cosa).
|
||||
|
||||
2) Es importante no solo enviar pequeños parches, sino también reescribir
|
||||
y simplificar (o simplemente reordenar) los parches antes de enviarlos.
|
||||
|
||||
Esta es una analogía del desarrollador del kernel Al Viro (traducida):
|
||||
|
||||
*"Piense en un maestro que califica la tarea de un estudiante de
|
||||
matemáticas. El maestro no quiere ver los intentos y errores del
|
||||
estudiante antes de que se les ocurriera la solución. Quiere ver la
|
||||
respuesta más limpia y elegante. Un buen estudiante lo sabe, y nunca
|
||||
presentaría su trabajo intermedio antes de tener la solución final.*
|
||||
|
||||
*Lo mismo ocurre con el desarrollo del kernel. Los maintainers y
|
||||
revisores no quieren ver el proceso de pensamiento detrás de la solución
|
||||
al problema que se está resolviendo. Quieren ver un solución simple y
|
||||
elegante."*
|
||||
|
||||
Puede resultar un reto mantener el equilibrio entre presentar una solución
|
||||
elegante y trabajar junto a la comunidad, discutiendo su trabajo inacabado.
|
||||
Por lo tanto, es bueno comenzar temprano en el proceso para obtener
|
||||
"feedback" y mejorar su trabajo, pero también mantenga sus cambios en
|
||||
pequeños trozos que pueden ser aceptados, incluso cuando toda su labor no
|
||||
está listo para inclusión en un momento dado.
|
||||
|
||||
También tenga en cuenta que no es aceptable enviar parches para su
|
||||
inclusión que están sin terminar y serán "arreglados más tarde".
|
||||
|
||||
Justifique sus cambios
|
||||
----------------------
|
||||
|
||||
Además de dividir sus parches, es muy importante que deje a la comunidad de
|
||||
Linux sabe por qué deberían agregar este cambio. Nuevas características
|
||||
debe justificarse como necesarias y útiles.
|
||||
|
||||
Documente sus cambios
|
||||
---------------------
|
||||
|
||||
Cuando envíe sus parches, preste especial atención a lo que dice en el
|
||||
texto de su correo electrónico. Esta información se convertirá en el
|
||||
ChangeLog del parche, y se conservará para que todos la vean, todo el
|
||||
tiempo. Debe describir el parche por completo y contener:
|
||||
|
||||
- por qué los cambios son necesarios
|
||||
- el diseño general de su propuesta
|
||||
- detalles de implementación
|
||||
- resultados de sus experimentos
|
||||
|
||||
Para obtener más detalles sobre cómo debería quedar todo esto, consulte la
|
||||
sección ChangeLog del documento:
|
||||
|
||||
"The Perfect Patch"
|
||||
https://www.ozlabs.org/~akpm/stuff/tpp.txt
|
||||
|
||||
Todas estas cuestiones son a veces son muy difíciles de conseguir. Puede
|
||||
llevar años perfeccionar estas prácticas (si es que lo hace). Es un proceso
|
||||
continuo de mejora que requiere mucha paciencia y determinación. Pero no se
|
||||
rinda, es posible. Muchos lo han hecho antes, y cada uno tuvo que comenzar
|
||||
exactamente donde está usted ahora.
|
||||
|
||||
----------
|
||||
|
||||
Gracias a Paolo Ciarrocchi que permitió que la sección "Development Process"
|
||||
se basara en el texto que había escrito (https://lwn.net/Articles/94386/),
|
||||
y a Randy Dunlap y Gerrit Huizenga por algunas de la lista de cosas que
|
||||
debes y no debes decir. También gracias a Pat Mochel, Hanna Linder, Randy
|
||||
Dunlap, Kay Sievers, Vojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook,
|
||||
Andrew Morton, Andi Kleen, Vadim Lobanov, Jesper Juhl, Adrian Bunk,
|
||||
Keri Harris, Frans Pop, David A. Wheeler, Junio Hamano, Michael Kerrisk y
|
||||
Alex Shepard por su revisión, comentarios y contribuciones. Sin su ayuda,
|
||||
este documento no hubiera sido posible.
|
||||
|
||||
Maintainer: Greg Kroah-Hartman <greg@kroah.com>
|
@ -70,3 +70,11 @@ En términos más generales, la documentación, como el kernel mismo, están en
|
||||
constante desarrollo. Las mejoras en la documentación siempre son
|
||||
bienvenidas; de modo que, si desea ayudar, únase a la lista de correo
|
||||
linux-doc en vger.kernel.org.
|
||||
|
||||
Traducciones al español
|
||||
=======================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
howto
|
||||
|
Loading…
Reference in New Issue
Block a user