Esta es una guía para los mantenedores del proyecto de código abierto de Bazel.
Si quieres contribuir a Bazel, consulta Cómo contribuir a Bazel.
Los objetivos de esta página son los siguientes:
- Servir como fuente de confianza para los mantenedores en relación con el proceso de contribución del proyecto
- Establecer expectativas entre los colaboradores de la comunidad y los mantenedores del proyecto
El grupo principal de colaboradores de Bazel tiene subequipos dedicados para administrar aspectos del proyecto de código abierto. Debes realizar las siguientes acciones:
- Proceso de lanzamiento: Administra el proceso de lanzamiento de Bazel.
- Equipo verde: Desarrolla un ecosistema saludable de reglas y herramientas.
- Jardineros de la experiencia del desarrollador: Fomenta las contribuciones externas, revisa los problemas y las solicitudes de extracción, y haz que nuestro flujo de trabajo de desarrollo sea más abierto.
Lanzamientos
Integración continua
Lee la guía del equipo verde sobre la infraestructura de CI de Bazel en el repositorio bazelbuild/continuous-integration.
Ciclo de vida de un problema
- Un usuario crea un problema eligiendo una de las plantillas de problemas y este ingresa al grupo de problemas abiertos sin revisar.
- Un miembro de la rotación del subequipo de Experiencia del desarrollador (DevEx) revisa el problema.
- Si el problema no es un error o una solicitud de función, el miembro de DevEx suele cerrar el problema y redireccionar al usuario a StackOverflow y bazel-discuss para obtener una mayor visibilidad de la pregunta.
- Si el problema pertenece a uno de los repositorios de reglas que posee la comunidad, como rules_apple, el miembro de DevEx transferirá este problema al repositorio correcto.
- Si el problema es vago o le falta información, el miembro de DevEx volverá a asignárselo al usuario para solicitar más información antes de continuar. Esto suele ocurrir cuando el usuario no elige la plantilla de problemas correcta o proporciona información incompleta.
- Después de revisar el problema, el miembro de DevEx decide si requiere atención inmediata. Si es así, asignará la etiqueta de prioridad P0 y un propietario de la lista de líderes de equipo.
- El miembro de DevEx asigna la etiqueta
untriagedy exactamente una etiqueta de equipo para el enrutamiento. - El miembro de DevEx también asigna exactamente una etiqueta
type:, comotype: bugotype: feature request, según el tipo de problema. - Para los problemas específicos de la plataforma, el miembro de DevEx asigna una etiqueta
platform:, comoplatform:applepara los problemas específicos de Mac. - Si el problema tiene baja prioridad y un nuevo colaborador de la comunidad puede trabajar en él, el miembro de DevEx asigna la etiqueta
good first issue. En esta etapa, el problema ingresa al grupo de problemas abiertos sin clasificar.
Cada subequipo de Bazel clasificará todos los problemas en las etiquetas que posee, preferentemente de forma semanal. El subequipo revisará y evaluará el problema, y proporcionará una resolución, si es posible. Si eres propietario de una etiqueta de equipo, consulta esta sección para obtener más información.
Cuando se resuelve un problema, se puede cerrar.
Ciclo de vida de una solicitud de extracción
- Un usuario crea una solicitud de extracción.
- Si eres miembro de un equipo de Bazel y envías una solicitud de extracción en tu propia área, eres responsable de asignar la etiqueta de tu equipo y encontrar al mejor revisor.
- De lo contrario, durante la clasificación diaria, un miembro de DevEx asigna una
etiqueta de equipo y el líder técnico (TL) del equipo para el enrutamiento.
- De manera opcional, el TL puede asignar a otra persona para que revise la solicitud de extracción.
- El revisor asignado revisa la solicitud de extracción y trabaja con el autor hasta que se aprueba o se descarta.
- Si se aprueba, el revisor importa las confirmaciones de la solicitud de extracción al sistema de control de versiones interno de Google para realizar más pruebas. Como Bazel es el mismo sistema de compilación que se usa internamente en Google, debemos probar todas las confirmaciones de la solicitud de extracción en el conjunto de pruebas interno. Este es el motivo por el que no combinamos las solicitudes de extracción directamente.
- Si la confirmación importada pasa todas las pruebas internas, se combinará y se volverá a exportar a GitHub.
- Cuando la confirmación se combina en la rama principal, GitHub cierra automáticamente la solicitud de extracción.
Mi equipo posee una etiqueta. ¿Qué debo hacer?
Los subequipos deben clasificar todos los problemas en las etiquetas que poseen, preferentemente de forma semanal.
Problemas
- Filtra la lista de problemas por la etiqueta de tu equipo y la etiqueta
untriaged. - Revisa el problema.
- Identifica un nivel de prioridad y asigna la etiqueta.
- Es posible que el subequipo de DevEx ya haya priorizado el problema si es un P0. Vuelve a priorizarlo si es necesario.
- Cada problema debe tener exactamente una etiqueta de prioridad. Si un problema es P0 o P1, suponemos que se está trabajando activamente en él.
- Quita la etiqueta
untriaged.
Ten en cuenta que debes estar en la bazelbuild organización para poder agregar o quitar etiquetas.
Solicitudes de extracción
- Filtra la lista de solicitudes de extracción por la etiqueta de tu equipo.
- Revisa las solicitudes de extracción abiertas.
- Opcional: Si se te asigna la revisión, pero no es la adecuada para ello, vuelve a asignar al revisor correspondiente para que realice una revisión del código.
- Trabaja con el creador de la solicitud de extracción para completar una revisión del código.
- Aprueba la solicitud de extracción.
- Asegúrate de que todas las pruebas se aprueben.
- Importa el parche al sistema de control de versiones interno y ejecuta las confirmaciones previas internas.
- Envía el parche interno. Si el parche se envía y se exporta correctamente, GitHub cerrará automáticamente la solicitud de extracción.
Prioridad
Los mantenedores usarán las siguientes definiciones de prioridad para clasificar los problemas.
- P0 : Es una funcionalidad principal dañada que hace que una versión de Bazel (excepto las versiones candidatas) sea inutilizable o un servicio inactivo que afecta gravemente el desarrollo del proyecto de Bazel. Esto incluye regresiones introducidas en una versión nueva que bloquea a una cantidad significativa de usuarios o un cambio rotundo incompatible que no cumplía con la política de cambios rotundos. No existe una solución alternativa práctica.
- P1 : Es un defecto o una función fundamental que se debe abordar en la próxima versión, o un problema grave que afecta a muchos usuarios (incluido el desarrollo del proyecto de Bazel), pero existe una solución alternativa práctica. Por lo general, no requiere una acción inmediata. Tiene una gran demanda y está planificado en la hoja de ruta del trimestre actual.
- P2 : Es un defecto o una función que se debe abordar, pero en la que no estamos trabajando actualmente. Es un problema moderado en una versión de Bazel lanzada que es inconveniente para un usuario y que se debe abordar en una versión futura o existe una solución alternativa sencilla.
- P3 : Es una corrección de errores o una mejora menor deseable con un impacto pequeño. No se prioriza en las hojas de ruta de Bazel ni en ningún lanzamiento inminente. Sin embargo, se recomiendan las contribuciones de la comunidad.
- P4 : Es un defecto de baja prioridad o una solicitud de función que es poco probable que se cierre. También se puede mantener abierto para una posible nueva priorización si se ven afectados más usuarios.
Etiquetas de equipo
team-Android: Problemas del equipo de Android- Contacto: ahumesky
team-Bazel: Problemas generales de productos o estrategias de Bazel- Contacto: meisterT
team-CLI: IU de la consola- Contacto: meisterT
team-Configurability: Problemas del equipo de Configurabilidad. Incluye: Configuración de compilación principal y sistema de transición. No incluye: Cambios en marcas nuevas o existentes- Contacto: gregestren
team-Core: Skyframe, consulta de bazel, BEP, análisis de opciones, bazelrc- Contacto: haxorz
team-Documentation: Problemas del equipo de documentaciónteam-ExternalDeps: Control de dependencias externas, Bzlmod, repositorios remotos, archivo WORKSPACE- Contacto: meteorcloudy
team-Loading-API: Archivo BUILD y procesamiento de macros: etiquetas, package(), visibilidad, glob- Contacto: brandjon
team-Local-Exec: Problemas del equipo de ejecución (local)- Contacto: meisterT
team-OSS: Problemas del equipo de OSS de Bazel: instalación, proceso de lanzamiento, empaquetado de Bazel, sitio web, infraestructura de documentos- Contacto: meteorcloudy
team-Performance: Problemas del equipo de rendimiento de Bazel- Contacto: meisterT
team-Remote-Exec: Problemas del equipo de ejecución (remota)- Contacto: coeuvre
team-Rules-API: API para escribir reglas/aspectos: proveedores, archivos de ejecución, acciones, artefactos- Contacto: comius
team-Rules-CPP/team-Rules-ObjC: Problemas de las reglas de C++/Objective-C, incluida la lógica de reglas nativas de Apple- Contacto: pzembrod
team-Rules-Java: Problemas de las reglas de Java- Contacto: hvadehra
team-Rules-Python: Problemas de las reglas nativas de Python- Contacto: rickeylev
team-Rules-Server: Problemas de las reglas del servidor incluidas con Bazel- Contacto: comius
team-Starlark-Integration: Integración de Bazel + Starlark que no es de la API. Incluye: cómo Bazel activa el intérprete de Starlark, Stardoc, la inyección de elementos integrados y la codificación de caracteres. No incluye: Problemas de lenguaje BUILD o .bzl.- Contacto: brandjon
team-Starlark-Interpreter: Problemas del intérprete de Starlark (cualquier elemento en java.net.starlark). Los problemas de la API de BUILD y .bzl (que representan la integración de Bazel con Starlark) se encuentran enteam-Build-Language.- Contacto: brandjon
Para los problemas nuevos, dejamos de usar las etiquetas category: * en favor de las etiquetas de equipo.
Consulta la lista completa de etiquetas aquí.