Si planeas agregar, cambiar o quitar una función para el usuario, o bien realizar un cambio arquitectónico significativo en Bazel, debes escribir un documento de diseño y hacer que se revise antes de enviar el cambio.
Estos son algunos ejemplos de cambios significativos:
- Adición o eliminación de reglas de compilación nativas
- Cambios rotundos en las reglas nativas
- Cambios en la semántica de una regla de compilación nativa que afectan el comportamiento de más de una regla
- Cambios en la API de definición de reglas de Bazel
- Cambios en las APIs que usa Bazel para conectarse a otros sistemas
- Cambios en el lenguaje, la semántica o las APIs de Starlark
- Cambios que podrían tener un efecto generalizado en el rendimiento de Bazel o el uso de la memoria (para bien o para mal)
- Cambios en las APIs internas de uso general
- Se realizaron cambios en las marcas y la interfaz de línea de comandos.
Motivos para las revisiones de diseño
Cuando escribas un documento de diseño, podrás coordinar con otros desarrolladores de Bazel y buscar orientación del equipo principal de Bazel. Por ejemplo, cuando una propuesta agrega, quita o modifica cualquier función o objeto disponible en los archivos BUILD, WORKSPACE o bzl, agrega al equipo de Starlark como revisor. Los documentos de diseño se revisan antes de enviarlos por los siguientes motivos:
- Bazel es un sistema muy complejo; los cambios locales aparentemente inocuos pueden tener consecuciones globales significativas.
- El equipo recibe muchas solicitudes de funciones de los usuarios. Estas solicitudes deben evaluarse no solo en función de la viabilidad técnica, sino también de la importancia en relación con otras solicitudes de funciones.
- Las funciones de Bazel suelen ser implementadas por personas ajenas al equipo principal, cuyos colaboradores tienen niveles muy variados de experiencia en Bazel.
- El equipo de Bazel tiene diferentes niveles de experiencia; ningún miembro del equipo tiene un conocimiento completo de cada rincón de Bazel.
- Los cambios en Bazel deben tener en cuenta la retrocompatibilidad y evitar cambios rotundos.
La política de revisión de diseño de Bazel ayuda a maximizar las probabilidades de que ocurra lo siguiente:
- Todas las solicitudes de funciones reciben un nivel de control de referencia.
- las personas adecuadas evaluarán los diseños antes de que invirtamos en una implementación que podría no funcionar.
Para ayudarte a comenzar, consulta los documentos de diseño en el repositorio de propuestas de Bazel. Los diseños son un trabajo en curso, por lo que los detalles de la implementación pueden cambiar con el tiempo y con los comentarios. Los documentos de diseño publicados capturan el diseño inicial y no los cambios continuos a medida que se implementan los diseños. Siempre consulta la documentación para obtener descripciones de la funcionalidad actual de Bazel.
Flujo de trabajo del colaborador
Como colaborador, puedes escribir un documento de diseño, enviar solicitudes de extracción y solicitar revisores para tu propuesta.
Escribe el documento de diseño
Todos los documentos de diseño deben tener un encabezado que incluya lo siguiente:
- author
- fecha del último cambio importante
- lista de revisores, incluido un (y solo un) revisor principal
- estado actual (borrador, en revisión, aprobado, rechazado, en proceso de implementación, implementado)
- vínculo a la conversación (se agregará después del anuncio)
El documento se puede escribir como un Documento de Google que todos puedan leer o con Markdown. A continuación, lee sobre la comparación entre Markdown y Documentos de Google.
Las propuestas que tienen un impacto visible para el usuario deben tener una sección que documente el impacto en la retrocompatibilidad (y un plan de lanzamiento si es necesario).
Crea una solicitud de extracción
Para compartir tu documento de diseño, crea una solicitud de extracción (PR) para agregarlo al índice de diseño. Agrega tu archivo de Markdown o un vínculo al documento a la PR.
Cuando sea posible, elige un revisor principal y copia a otros revisores. Si no eliges un revisor principal, un encargado de Bazel le asignará uno a tu PR.
Después de crear la PR, los revisores pueden hacer comentarios preliminares durante la revisión de código. Por ejemplo, el revisor principal puede sugerir revisores adicionales o indicar información faltante. El revisor principal aprueba la PR cuando considera que se puede iniciar el proceso de revisión. Esto no significa que la propuesta sea perfecta o que se aprobará; significa que contiene suficiente información para comenzar el debate.
Anuncia la nueva propuesta
Envía un anuncio a bazel-dev cuando se envíe la solicitud de extracción.
Puedes copiar otros grupos (por ejemplo, bazel-discuss, para obtener comentarios de los usuarios finales de Bazel).
Itera con los revisores
Cualquier persona interesada puede comentar tu propuesta. Intenta responder las preguntas, aclarar la propuesta y abordar las inquietudes.
El debate debe realizarse en la conversación del anuncio. Si la propuesta está en un Documento de Google, se pueden usar comentarios (ten en cuenta que se permiten comentarios anónimos).
Actualiza el estado
Crea una nueva PR para actualizar el estado de la propuesta cuando se complete la iteración. Envía la PR al mismo revisor principal y copia a los otros revisores.
Para aceptar oficialmente la propuesta, el revisor principal aprueba la PR después de asegurarse de que los demás revisores estén de acuerdo con la decisión.
Debe haber al menos 1 semana entre el primer anuncio y la aprobación de una propuesta. Esto garantiza que los usuarios tengan suficiente tiempo para leer el documento y compartir sus inquietudes.
La implementación puede comenzar antes de que se acepte la propuesta, por ejemplo, como una prueba de concepto o una experimentación. Sin embargo, no puedes enviar el cambio antes de que se complete la revisión.
Cómo elegir un revisor principal
Un revisor principal debe ser un experto en el dominio que cumpla con los siguientes requisitos:
- Conocimiento de los subsistemas relevantes
- Objetivo y capaz de proporcionar comentarios constructivos
- Disponible durante todo el período de revisión para dirigir el proceso
Considera revisar los contactos para ver si tienen varias etiquetas de equipo.
Markdown en comparación con Documentos de Google
Decide qué opción te resulta más conveniente, ya que ambas son aceptadas.
Beneficios de usar Documentos de Google:
- Es eficaz para el intercambio de ideas, ya que es fácil comenzar a usarlo.
- Edición colaborativa.
- Iteración rápida.
- Es una forma sencilla de sugerir ediciones.
Beneficios de usar archivos Markdown:
- URLs limpias para la vinculación
- Registro explícito de las revisiones
- No olvides configurar los derechos de acceso antes de publicar un vínculo.
- Se pueden buscar fácilmente con motores de búsqueda.
- Preparado para el futuro: El texto sin formato no está a merced de ninguna herramienta específica y no requiere una conexión a Internet.
- Es posible actualizarlos incluso si el autor ya no está disponible.
- Se pueden procesar automáticamente (actualizar o detectar vínculos rotos, recuperar la lista de autores, etcétera).
Puedes elegir iterar primero en un Documento de Google y, luego, convertirlo a Markdown para el futuro.
Cómo usar Documentos de Google
Para mantener la coherencia, usa la plantilla de documento de diseño de Bazel. Incluye el encabezado necesario y crea coherencia visual con otros documentos relacionados con Bazel. Para ello, haz clic en File > Make a copy o haz clic en este vínculo para crear una copia de la plantilla de la doc de diseño.
Para que todo el mundo pueda leer tu documento, haz clic en Compartir > Configuración avanzada > Cambiar… y elige "Activado: Cualquier persona que tenga el vínculo". Si permites comentarios en el documento, cualquiera puede hacerlo de forma anónima, incluso sin una Cuenta de Google.
Usa Markdown
Los documentos se almacenan en GitHub y usan el formato de GitHub de Markdown (especificación).
Crea una solicitud de revisión para actualizar un documento existente. Los revisores del documento deben revisar los cambios significativos. Cualquier persona puede aprobar los cambios triviales (como errores tipográficos o de formato).
Flujo de trabajo del revisor
Un revisor comenta, revisa y aprueba los documentos de diseño.
Responsabilidades generales del revisor
Eres responsable de revisar los documentos de diseño, solicitar información adicional si es necesario y aprobar un diseño que apruebe el proceso de revisión.
Cuando recibas una propuesta nueva
- Revisa rápidamente el documento.
- Haz comentarios si falta información fundamental o si el diseño no se ajusta a los objetivos del proyecto.
- Sugerir revisores adicionales
- Aprueba la PR cuando esté lista para la revisión.
Durante el proceso de revisión
- Entabla un diálogo con el autor del diseño sobre los problemas que son problemáticos o requieren aclaración.
- Si corresponde, invita a que personas que no sean revisores hagan comentarios sobre el diseño.
- Decide qué comentarios debe abordar el autor como requisito previo para la aprobación.
- Escribe "LGTM" (Looks Good To Me) en la conversación cuando estés conforme con el estado actual de la propuesta.
Sigue este proceso para todas las solicitudes de revisión de diseño. No apruebes diseños que afecten a Bazel si no están en el índice de diseño.
Responsabilidades del revisor principal
Eres responsable de tomar la decisión de continuar o no con la implementación de un diseño pendiente. Si no puedes hacerlo, debes identificar un delegado adecuado (reasignar la PR al delegado) o reasignar el error a un administrador de Bazel para que se tome una decisión al respecto.
Durante el proceso de revisión
- Asegúrate de que el proceso de iteración de comentarios y diseño avance de manera constructiva.
- Antes de aprobar, asegúrate de que se hayan resuelto las inquietudes de los demás revisores.
Después de la aprobación de todos los revisores
- Asegúrate de que haya pasado al menos 1 semana desde el anuncio en la lista de distribución.
- Asegúrate de que la PR actualice el estado.
- Aprueba la PR que envió el autor de la propuesta.
Cómo rechazar diseños
- Asegúrate de que el autor de RR.PP. envíe una solicitud de cambios o envíale una.
- La PR actualiza el estado del documento.
- Agrega un comentario al documento en el que se explique por qué no se puede aprobar el diseño en su estado actual y se describa los próximos pasos, si los hay (como “volver a revisar las suposiciones no válidas y volver a enviar”).