Ingeniería

Cómo gestionamos las solicitudes de extracción en Elastic

Las tareas en Elastic se llevan a cabo en equipo.

Nuestros ingenieros trabajan las 24 horas del día (lo cual es prácticamente cierto en empresa distribuida) para desarrollar nuevos productos y características. Es una inmensa cantidad de trabajo que requiere una atención minuciosa a los detalles. Pero sin importar cuán cuidadosos seamos, no somos perfectos, y como en cualquier proyecto open source complejo como el nuestro, siempre necesitamos la ayuda de la comunidad para mejorar.

En Resolución de problemas pequeños pero importantes con los viernes de reparación (Fix-It Fridays), comentamos cómo las contribuciones de nuestra comunidad son el factor determinante de nuestro éxito continuo en el desarrollo de nuestros productos. Uno de los grandes beneficios de ser un proyecto open source es que contamos con una gran comunidad de desarrolladores que buscan errores y esperan ansiosos el momento para resolverlos.

Si eres un nuevo miembro de la comunidad y quieres enviar tu primera solicitud de extracción (PR), o si tienes preguntas sobre cómo funciona el proceso, has llegado al lugar correcto. En este blog, ofreceremos una visión general de cómo funcionan las solicitudes de extracción para Elastic, cómo es el proceso cuando las recibimos y cómo evitar errores comunes que pueden dificultar que tu contribución se implemente.

Entonces, ¿cómo enviamos una solicitud de extracción?

Antes de enviar una PR, debes crear una bifurcación en un repositorio de GITHUB e implementar tus cambios en el código. Esto generalmente se hace con tu propia cuenta de GitHub, que crea una copia del repositorio fuente para ti. Todos nuestros proyectos se alojan en su propio repositorio de GitHub. Podrás encontrar una lista completa de nuestros repositorios en la página de organización de Elastic en GitHub. 

Una vez que hayas creado una bifurcación de un repositorio y cambiado el código, se te preguntará si quieres crear una PR para enviar los cambios sugeridos a la rama maestra del repositorio del producto. Por ejemplo, el repositorio de Elasticsearch que se ve a continuación. Para simplificar, mostraremos ejemplos del repositorio de Elasticsearch en este blog.

Cuando hagas clic en “Nueva solicitud de extracción“, verás nuestra plantilla de solicitud de extracción.

Esta plantilla te guiará para ayudar a que tu PR pase la primera revisión. Asegúrate de leerla con atención porque cada producto tiene su propio conjunto de criterios y documentación. La plantilla te guiará para ayudar a que tu PR pase la primera revisión.

Asegúrate de evitar estos errores comunes cuando realices el envío:

  • Enviar duplicados: Primero, busca PR abiertas que ya traten el error que tu código intenta resolver. En general, los duplicados se deniegan.
  • No incluir pruebas: Una PR que incluye cambios en el código debe incluir una prueba que muestre el comportamiento del nuevo código. Lo ideal sería que esta prueba reproduzca el problema que la PR resuelve para que la prueba falle sin el código y se resuelva con el código aplicado.
  • Solo la rama principal: Asegúrate de que las PR que cambien el código se generen con respecto a la rama principal en el directorio correspondiente.

Una vez que hayas completado todos los requisitos detallados en la plantilla, haz clic en “Crear solicitud de extracción“. Ahora, es nuestro turno.

Clasificación y denominación

El primer paso que realizaremos es asegurarnos de que la PR cumple con los requisitos de una buena solicitud (como se mencionó anteriormente), y si lo hace, etiquetaremos la PR con una denominación, para que llegue al lugar correcto para una investigación más exhaustiva. Las denominaciones pueden incluir >bug, >feature, etc. Una vez que la solicitud de extracción tiene una denominación, se asigna al subequipo apropiado para que la gestione. Desde ese momento, trabajar con la solicitud es responsabilidad del equipo a cargo de esa área.

Comienzo del proceso

Una vez que se le da una denominación a la PR, uno de nuestros desarrolladores la selecciona. Intentamos responder al solicitante lo antes posible. Te pedimos que tengas paciencia cuando envíes la PR, ya que gestionar una solicitud de la forma apropiada puede llevar tiempo debido al nivel y a la cantidad de solicitudes que llegan las 24 horas del día. 

Enviar cambios en la documentación

Nota: También recibimos muchas PR que modifican o solicitan cambios en nuestros documentos. Este proceso es mucho más simple que los cambios en el código: solo necesitas hacer clic en “Editar“ en la página de documentos de Elastic, realizar la modificación y enviar la solicitud. No es necesario realizar una bifurcación del proyecto ni enviar pruebas. Denominamos estas PR “>doc“ y las gestionamos lo más rápido posible.

A menudo, hay más trabajo por hacer.

Con frecuencia, una PR necesita algunas adaptaciones antes de que esté lista para fusionarse. En este punto, la PR se vuelve un espacio colaborativo en el que se comenta, se proponen cambios y se generan confirmaciones.

Durante el proceso de revisión, ejecutamos pruebas en la PR, y los resultados están disponibles en GitHub. A veces la prueba falla cuando se aplican los cambios de la PR, incluso si las pruebas enviadas funcionaron. Pero eso no es todo. Ayudamos al contribuyente a mejorar el código que envió para que pase todas las pruebas.

El estilo del código, así como las convenciones de código y nombres, son elementos que tenemos en cuenta en esta etapa. Los usuarios que envían solicitudes de extracción deben esperar que su código pase por lo menos por una ronda de revisión. Los códigos nunca son perfectos (ni siquiera los nuestros) ni están listos para fusionarse cuando se envían. Por lo tanto, prepárate para trabajar en equipo en algún momento.

¿Cuánto tiempo llevará la implementación de mi PR en una confirmación?

El tiempo que tardamos en gestionar una PR varía. Una simple línea de código puede ser un caso rápido, pero los cambios de código complejos pasarán por varias rondas de revisión. Si crees que tu PR ha estado mucho tiempo sin generar una acción, puedes enviar un ticket como recordatorio de que aún está activa.

Publicación del código

Cuando todo está listo, los revisores agregarán un comentario con la acción de aprobación. Puede ser un comentario LGTM (“Se ve bien en mi opinión“) o algo por el estilo. Cuando se acepte la PR, un desarrollador de Elastic fusionará la solicitud de extracción en la rama maestra y después enviará el cambio a las ramas de desarrollo según sea necesario.

Básicamente, así es como funciona. Por supuesto, las solicitudes de extracción pueden variar. El proceso puede ser simple o difícil. La única forma en que conocerás el proceso en profundidad es poniendo manos a la obra y sumergiéndote en profundidad.

¿Estás listo para enviar tu primera PR? Echa un vistazo a los repositorios de Elastic disponibles en GitHub, familiarízate con las pautas y pruébalo. Si tienes alguna pregunta sobre el proceso, envíala a nuestros Foros de discusión, crea un tema y estaremos encantados de ayudarte.