Principios de diseño¶
Siete reglas que sigue el código, cada una con las páginas y los registros de decisión donde se ve. Lee esta página para entender por qué Evey se comporta como se comporta, antes de leer cómo está construido (Arquitectura) o por qué se tomó una decisión de estructura (registros de decisión). Cuando dos principios entran en conflicto, prevalece el que aparece antes en esta lista.
| Principio | Dónde se ve | Decidido en |
|---|---|---|
| 1. Si no se puede comprobar, se niega el acceso | control parental, instalación de plugins, acceso remoto | ADR-0026 |
| 2. El código de terceros se aísla, no se le da confianza | sandbox de plugins | ADR-0012, ADR-0014 |
| 3. Se entrega el original siempre que se puede | decisión de reproducción | ADR-0030 |
| 4. Las decisiones se basan en lo que se ha demostrado, no en nombres | envío a Chromecast, aceleración por hardware | ADR-0029 |
| 5. Una reproducción, una decisión | plan de reproducción, Información del flujo | ADR-0030, ADR-0024 |
| 6. El servidor se ajusta a la máquina | calibración, trabajo en segundo plano | - |
| 7. Pocos ajustes, cada uno en un solo sitio | instalación, panel de administración | ADR-0028 |
1. Si no se puede comprobar, se niega el acceso¶
Cuando una decisión da acceso a algo, un error lleva a la respuesta más restrictiva. Un perfil cuyos ajustes parentales no se pueden leer no recibe ningún contenido; un plugin cuyo código no se puede analizar no se instala; el acceso remoto sigue una elección explícita una vez que se ha hecho, y lo dice claramente cuando rechaza a todo el mundo. El acceso remoto y la autenticación son cosas distintas: lo primero es una elección de despliegue, lo segundo es lo que protege la biblioteca.
Consulta Usuarios, perfiles y control parental, Acceso remoto y HTTPS, ADR-0026.
2. El código de terceros se aísla, no se le da confianza¶
Un plugin recibe los permisos que declara su manifiesto y nada más, se analiza antes de instalarse, se ejecuta en un sandbox sin acceso directo a la red y tiene un token que lo deniega todo por defecto. Lo que el sandbox todavía no puede impedir está escrito, no se da por sobreentendido.
Consulta Sandbox de plugins y modelo de amenazas, ADR-0012, ADR-0014.
3. Se entrega el original siempre que se puede¶
Lo preferido es el archivo tal cual; después, las mismas pistas en otro contenedor; después, transcodificar solo las pistas que lo necesitan. La calidad no es algo que quien mira tenga que elegir antes de reproducir: el servidor mantiene la calidad de la fuente salvo que una limitación real (el dispositivo, la conexión, un límite) lo impida.
Consulta Cómo elige Evey el modo de reproducción.
4. Las decisiones se basan en lo que se ha demostrado, no en nombres¶
Las capacidades de un reproductor salen de lo que informa su dispositivo, no de una lista de dispositivos conocidos. Una tarjeta gráfica se usa para lo que superó durante la medición, no para lo que su modelo debería admitir. Cuando una capacidad no se puede demostrar, el servidor elige la respuesta prudente: un receptor de Chromecast desconocido recibe las capacidades del más antiguo, y los formatos de píxel que los reproductores todavía no informan siguen una regla de compatibilidad fija. Suponer demasiado da una pantalla negra o colores incorrectos; suponer demasiado poco cuesta una transcodificación.
Consulta Enviar a Chromecast, Aceleración por hardware, ADR-0029.
5. Una reproducción, una decisión¶
Una reproducción se decide una sola vez, al empezar, y cada manifiesto y cada segmento de la sesión se sirven a partir de esa decisión. El reproductor nunca recibe segmentos de dos codificaciones distintas, y lo que muestra Información del flujo se obtiene del mismo plan de servicio que usa la cadena de reproducción, comprobado por tests en los dos sentidos.
Consulta Servir un vídeo - el camino de reproducción HLS, ADR-0030, ADR-0024.
6. El servidor se ajusta a la máquina¶
El servidor mide cuánto puede transcodificar y no acepta más: una máquina pequeña reproduce menos flujos transcodificados, en lugar de reproducirlos todos mal. La reproducción va primero; el trabajo en segundo plano se pausa mientras alguien está viendo algo. La misma imagen funciona en un NAS y en un servidor con varias tarjetas gráficas.
Consulta Transcodificación y capacidad del servidor, Trabajo en segundo plano y carga del servidor.
7. Pocos ajustes, cada uno en un solo sitio¶
Lo que tiene que existir antes de que arranque el servidor (el almacenamiento, los secretos, la dirección pública) está en el archivo compose; todo lo que puede cambiar después está en el panel de administración, se guarda en la base de datos y se aplica sin reiniciar siempre que nada lo exija. La detección y la medición sustituyen a los ajustes siempre que pueden: una instalación es un archivo compose, unas bibliotecas y unos usuarios.
Consulta Instalación, Referencia de configuración, ADR-0028.
Registros de decisión¶
Las decisiones de estructura se guardan como registros de decisión de arquitectura, con el contexto, las opciones que se sopesaron y las consecuencias. Se guardan junto al código: docs/adr.