Documentos de diseño

Informar un problema Ver fuente Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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 que una regla única
  • 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 más utilizadas
  • 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 del envío por los siguientes motivos:

  • Bazel es un sistema muy complejo; cambios locales aparentemente inocuos pueden tener consecuencias globales importantes.
  • 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.
  • Personas ajenas al equipo central suelen implementar funciones de Bazel. estos tienen niveles muy variables de experiencia en Bazel.
  • El propio equipo de Bazel tiene diversos niveles de experiencia. ningún miembro del equipo comprende a fondo 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 opinarán sobre los diseños antes de invertir en un de implementación que podría no funcionar.

Para ayudarte a comenzar, echa un vistazo a los documentos de diseño en la 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 de la última modificación 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. Sigue leyendo para obtener información sobre un 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 creando una solicitud de extracción (PR) para agregar el documento a el í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 agrega en Cc a otros revisores. Si no eliges a un revisor principal, Bazel encargado de mantenimiento, asignará una a tu RR.PP.

Luego de crear tu RR.PP., 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 se aprobará; significa que la propuesta contiene suficiente información 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-discuss, para obtener comentarios de los usuarios finales de Bazel).

Iterar con los revisores

Cualquier persona interesada puede comentar tu propuesta. Intenta responder preguntas, aclarar la propuesta y abordar las inquietudes.

El debate debe realizarse en la conversación del anuncio. Si la propuesta se encuentra en un documento de Google, se pueden usar comentarios (ten en cuenta que los comentarios anónimos se permitida).

Actualiza el estado

Crea una nueva PR 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 líder aprueba el RR.PP. después asegurándote 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 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 revisar los contactos de varios equipos etiquetas.

Markdown frente a Documentos de Google

Decide qué opción te resulta más conveniente, ya que ambas son aceptadas.

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 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.
  • A prueba de 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.
  • Pueden procesarse automáticamente (actualizar o detectar vínculos no inactivos, recuperar lista de autores, etc.).

Puedes elegir primero iterar 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 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 > Avanzado > Cambiar... elige "Activado: Cualquier usuario con el vínculo". Si permites comentarios en el documento, cualquier persona puede comentar 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

  1. Echa un vistazo rápido al documento.
  2. Comenta si falta información crítica o si el diseño no encaja con 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. Participar en un diálogo con el autor del diseño sobre temas problemáticos o requieren una aclaración.
  2. Si corresponde, invita a personas que no revisores tengan la siguiente información: el diseño.
  3. Decide 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 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 aprobar los diseños que afectan a Bazel si no están en el de diseño.

Responsabilidades del revisor principal

Es tu responsabilidad tomar la decisión de proceder o no proceder durante la implementación. de un diseño pendiente. Si no puedes hacerlo, debes identificar un delegado adecuado (reasigna el RR.PP. al delegado) o reasigna el error a un Administrador de Bazel para una mayor disposición.

Durante el proceso de revisión

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

Después de la aprobación de todos los revisores

  1. Asegúrate de que haya pasado al menos 1 semana desde el anuncio en la lista de distribución.
  2. Asegúrate de que la PR actualice el estado.
  3. Aprueba la PR que envió el autor de la propuesta.

Cómo rechazar diseños

  1. Asegurarse de que el autor de RR.PP. la envíe o enviarles un PR.
  2. El comunicado de prensa actualiza el estado del documento.
  3. Agrega un comentario al documento que explique por qué no se puede aprobar el diseño en su estado actual y que describa los próximos pasos, si los hubiera (como "revisión no válida, suposiciones y volver a enviarla").