Documentos de diseño

Informar un problema Ver fuente Noche /}1}

Si planeas agregar, cambiar o quitar una función para el usuario, o realizar un cambio significativo en la arquitectura de Bazel, debes escribir un documento de diseño y hacer que lo revisen antes de poder 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 memoria (para bien o para mal)
  • Cambios en las APIs internas más utilizadas
  • Cambios en las marcas y la interfaz de línea de comandos.

Motivos de las revisiones de diseño

Cuando escribes un documento de diseño, puedes 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 cualquier objeto disponible en los archivos BUILD, WORKSPACE o bzl, agrega al equipo de Starlark como revisores. Los documentos de diseño se revisan antes del envío por los siguientes motivos:

  • Bazel es un sistema muy complejo. Los cambios locales aparentemente inocuos pueden tener consecuencias globales significativas.
  • El equipo recibe muchas solicitudes de funciones de los usuarios. Estas solicitudes deben evaluarse no solo en cuanto a su viabilidad técnica, sino también su importancia con respecto a otras solicitudes de funciones.
  • Personas ajenas al equipo central suelen implementar las funciones de Bazel, que tienen niveles de experiencia de Bazel muy variados.
  • El equipo de Bazel tiene diversos niveles de experiencia. Ningún miembro del equipo tiene una comprensión completa de todos los aspectos de Bazel.
  • Los cambios en Bazel deben tener en cuenta la retrocompatibilidad y evitar los 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 atributos obtienen un nivel de escrutinio de referencia.
  • las personas adecuadas opinarán sobre los diseños antes de invertir en una implementación que puede no funcionar.

Para ayudarte a comenzar, consulta los documentos de diseño en el repositorio de propuestas de Bazel. Los diseños están en desarrollo, por lo que los detalles de la implementación pueden cambiar con el tiempo y con 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. Consulta siempre 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.

Escribir el documento de diseño

Todos los documentos de diseño deben tener un encabezado que incluya lo siguiente:

  • author
  • fecha de la última modificación importante
  • lista de revisores, incluido uno (y solo uno) revisor principal
  • estado actual (borrador, en revisión, aprobado, rechazado, en 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 legible en todo el mundo o con Markdown. Sigue leyendo para ver una 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

Comparte tu documento de diseño mediante la creación de una solicitud de extracción (PR) para agregar el documento al índice de diseño. Agrega el archivo de Markdown o el vínculo de un documento a tu comunicado de prensa.

Cuando sea posible, elige un revisor principal y agrega en Cc a otros revisores. Si no eliges a un revisor principal, un encargado de mantenimiento de Bazel asignará uno a tu PR.

Después de crear tu PR, los revisores pueden hacer comentarios preliminares durante la revisión del código. Por ejemplo, el revisor principal puede sugerir revisores adicionales o señalar información faltante. El revisor principal aprueba el RR.PP. cuando cree que puede comenzar el proceso de revisión. Esto no significa que la propuesta sea perfecta o que se apruebe, sino que contenga suficiente información para comenzar el debate.

Anunciar 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-debate para obtener comentarios de los usuarios finales de Bazel).

Iterar con los revisores

Cualquier persona interesada puede comentar tu propuesta. Responde preguntas, aclara la propuesta y aborda 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 en su lugar (ten en cuenta que se permiten los comentarios anónimos).

Actualiza el estado

Crea un PR nuevo para actualizar el estado de la propuesta cuando se complete la iteración. Envía el PR al mismo revisor principal y agrega en Cc a los demás revisores.

Para aceptar oficialmente la propuesta, el revisor principal aprueba el RR.PP. 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 la propuesta. Esto garantiza que los usuarios tengan tiempo suficiente 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 dominios que cumpla con las siguientes características:

  • Conoce los subsistemas relevantes.
  • Objetivo y capaz de proporcionar comentarios constructivos
  • Disponible durante todo el período de revisión para dirigir el proceso

Considera verificar los contactos de varias etiquetas del equipo.

Markdown frente a Documentos de Google

Decide qué funciona mejor para ti, ya que se aceptan ambos.

Beneficios de usar Documentos de Google:

  • Efectivo para la lluvia de ideas, ya que es fácil comenzar.
  • Edición colaborativa.
  • Iteración rápida.
  • Es una forma sencilla de sugerir ediciones.

Beneficios de usar archivos de Markdown:

  • Limpiar las URLs para la vinculación
  • Registro explícito de revisiones.
  • No olvides configurar los derechos de acceso antes de publicar un vínculo.
  • Son fáciles de encontrar con los 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á presente.
  • Se pueden procesar automáticamente (actualizar o detectar vínculos no inactivos, recuperar lista de autores, etcétera).

Puedes elegir primero iterar en un documento de Google y, luego, convertirlo a Markdown para la posteridad.

Cómo usar Documentos de Google

Para lograr coherencia, usa la plantilla de documentos de diseño de Bazel. Incluye el encabezado necesario y crea coherencia visual con otros documentos relacionados con Bazel. Para ello, haz clic en Archivo > Crear una copia o en este vínculo para hacer una copia de la plantilla del documento de diseño.

Para que todo el mundo pueda leer tu documento, haz clic en Compartir > Avanzado > Cambiar... y elige "Activado: Cualquiera que tenga el vínculo". Si permites los comentarios en el documento, cualquier persona puede hacerlo de forma anónima, incluso sin una Cuenta de Google.

Usa Markdown

Los documentos se almacenan en GitHub y usan la variante de GitHub de Markdown (especificación).

Crea un PR para actualizar un documento existente. Los revisores de documentos deben revisar los cambios significativos. Cualquier persona puede aprobar 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 del revisor general

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 recibes una propuesta nueva

  1. Echa un vistazo rápido al documento.
  2. Comenta si falta información crítica o si el diseño no se adapta a los objetivos del proyecto.
  3. Sugiere revisores adicionales.
  4. Aprueba el comunicado de prensa cuando esté listo para su revisión.

Durante el proceso de revisión

  1. Interactúan con el autor del diseño sobre temas problemáticos o que requieren aclaraciones.
  2. Si corresponde, invita a usuarios que no sean revisores a enviar comentarios que deban conocer el diseño.
  3. Decidir qué comentarios debe abordar el autor como requisito previo para la aprobación
  4. Escribe "LGTM" (Se ve bien para mí) en la conversación de debate cuando estés satisfecho con el estado actual de la propuesta.

Sigue este proceso para todas las solicitudes de revisión de diseño. No apruebes los diseños que afectan a Bazel si no están en el índice de diseño.

Responsabilidades del revisor principal

Eres responsable de tomar la decisión de proceder o no proceder con la implementación de un diseño pendiente. Si no puedes hacerlo, debes identificar a un delegado adecuado (reasignar el PR al delegado) o reasignar el error a un administrador de Bazel para que lo tenga en cuenta.

Durante el proceso de revisión

  1. Garantizar que el proceso de iteración de comentarios y diseño avance de forma constructiva
  2. Antes de la aprobación, asegúrate de que se hayan resuelto las inquietudes de otros revisores.

Luego de la aprobación de todos los revisores

  1. Asegúrate de que haya transcurrido al menos 1 semana desde el anuncio en la lista de distribución.
  2. Asegúrate de que el departamento de RR.PP. actualice el estado.
  3. Aprueba las solicitudes de prensa que envió el autor de la propuesta.

Rechazar diseños

  1. Asegúrate de que el autor de RR.PP. la envíe, o envíale uno.
  2. El comunicado de prensa actualiza el estado del documento.
  3. Agrega un comentario al documento en el que expliques por qué no se puede aprobar el diseño en su estado actual y describe los próximos pasos, si los hubiera (como “Revisa las suposiciones no válidas y vuelve a enviar”).