El futuro de YAML

Recientemente, se han publicado comentarios y preguntas en la comunidad sobre el anuncio de integraciones disponibles a través de la interfaz y la eliminación del soporte YAML de algunas de ellas.

Esto plantea preguntas y opiniones que deben abordarse. Se trata principalmente de esta única pregunta:

«¿YAML va a desaparecer?»

La respuesta a esta pregunta es: “¡No!, pero…”

Al darse cuenta de que es posible que no le guste esa respuesta suelta y, en ese caso, posiblemente esté buscando una respuesta simple y dura de «NO» a esta pregunta. Sin embargo, las cosas son un poco más complicadas.

Esta publicación de blog tiene como objetivo aclarar más esta pregunta, para que todos sepan por qué las cosas son como son ahora y qué esperar para el futuro de la configuración de Home Assistant.

Habilitación de la configuración a través de la interfaz de usuario

Antes de hablar de YAML, expliquemos el razonamiento detrás de todas las características de la interfaz de usuario presentadas.

El proyecto Home Assistant ha crecido a un ritmo ridículo en los últimos años. Ser una de las pocas soluciones que proporciona una plataforma de automatización del hogar local, que prioriza la privacidad, ha despertado el interés de todo tipo de personas en este planeta.

Al principio, Home Assistant era un proyecto pequeño; dirigido a desarrolladores y expertos en tecnología. Con el crecimiento de las preocupaciones sobre la privacidad, pero también el crecimiento en la disponibilidad de dispositivos IoT en nuestros hogares en general, el proyecto ganó fuerza; atrayendo a muchos miembros nuevos de la comunidad que no siempre son expertos en tecnología.

Esto es genial, pero eso también significa que tenemos que ajustar, para que todos puedan usarlo. Queremos que todos disfruten de lo que todos hemos estado disfrutando ya. No importa tu nivel de experiencia.

Teniendo en cuenta eso, se necesita habilitar y empoderar a las personas para que administren su instancia de Home Assistant a través de la interfaz de usuario. No solo para los menos expertos en tecnología, ya que también brinda comodidad, que incluso muchos usuarios técnicamente capacitados disfrutan y prefieren.

Objetivo: Hacer las cosas más fáciles.

El objetivo de hacerlo más fácil es actualmente el enfoque principal.

Rompiendo cambios

A todos nos desagradan esos cambios de última hora cuando se publica una nueva versión. Todos escaneamos las notas de la versión con la esperanza de que no se vea afectado por ninguna de ellas en esa versión.

Hay una gran ventaja en el uso de la configuración a través de la interfaz de usuario: Home Assistant administra esa parte de la configuración por usted y maneja las actualizaciones y migraciones. Prácticamente eliminando las posibilidades de golpear un cambio de ruptura, todos odiamos por igual.

Compartibilidad y seguridad

Esta es una captura de pantalla de una de las diapositivas, mostrada durante el Estado de la Unión 2019:

Diapositiva de presentación mostrada durante el Estado de la Unión 2019.

A todos nos gusta compartir nuestras experiencias y, por lo tanto, partes de nuestras configuraciones. GitHub está lleno de repositorios que comparten los hogares de las personas.

¡Esto es genial! ¡Compartiendo ideas, proporcionando inspiración para todos nosotros!

Hay una gran desventaja en esto, que es la privacidad y la seguridad. Hay muchas cosas que no queremos compartir. Por ejemplo, nuestras contraseñas, información sensible (personal) o datos (históricos).

Un poco más técnico, pero las integraciones que usan OAuth2 como método de autenticación para integrar, por ejemplo, un servicio como Somfy no necesitan almacenar el nombre de usuario/contraseña en absoluto.

Tanto YAML como la interfaz de usuario

Home Assistant avanza hacia una mejor separación entre la configuración YAML y la configuración realizada en la interfaz de usuario. Esto ya se muestra en parte en cosas como zonas, Lovelace y los «Ayudantes» recientemente introducidos (también conocidos como los input_* integraciones en YAML).

Las zonas se pueden configurar a través de la interfaz de usuario y a través de YAML (¡incluso al mismo tiempo!). Home Assistant cargará ambas fuentes de configuración al considerar las zonas configuradas y ambas se pueden cambiar sobre la marcha sin reiniciar Home Assistant.

Para el futuro, Home Assistant se moverá cada vez más hacia ese concepto. Esto permite que cualquiera use el método que prefiera.

En estos casos, la compatibilidad con YAML se ha ampliado y mejorado mediante la adición de funciones como la recarga y la eliminación de partes que interfieren con los archivos YAML.

Seguimos siendo un proyecto de código abierto

Home Assistant es un proyecto de código abierto y depende de los colaboradores que agregan esas increíbles integraciones, las mantienen y amplían su funcionalidad para que sean aún más capaces.

Esos colaboradores hacen esto en su tiempo libre, por lo que todos estamos eternamente agradecidos. Es su trabajo lo que permite que Home Assistant haga lo que puede en este momento. Es lo que automatiza tu hogar.

Entonces, ¿qué pasa con las integraciones que eliminan la compatibilidad con YAML?

Algunos colaboradores han decidido eliminar el soporte YAML para reducir su carga de mantenimiento y soporte. La cantidad de energía que se necesita poner (para mantener ambas capacidades) puede ser demasiada y es compleja. Tenemos que entender y aceptar eso. Si no hacemos eso, un contribuyente podría simplemente dejar de contribuir.

Desafortunadamente, tal movimiento crea cambios de última hora y, a menudo, conduce a algunos comentarios bastante desmotivadores, hacia el colaborador y el proyecto en general. Esto es perjudicial para todos, ya que los colaboradores se desmotivan o, peor aún, no quieren implementar nuevas funciones o crear un cambio radical.

Esto detiene los objetivos de nuestro proyecto, ralentiza la innovación e induce el riesgo de perder colaboradores y mantenedores. Al final, conduce a una mayor pérdida para todos.

El futuro de YAML

Entonces, con todo el contexto establecido anteriormente: ¿Cuál es el futuro de YAML?

Al día de hoy, se ha aprobado el ADR-0010 (Registro de Decisión Arquitectónica) que establece:

  • Cualquier integración nueva que se comunique con dispositivos y/o servicios debe usar la configuración a través de la interfaz de usuario. La configuración a través de YAML solo se permite en casos muy raros, que se determinarán caso por caso.
  • Las integraciones existentes que se comunican con dispositivos y/o servicios están permitidas y recomendadas para implementar la configuración a través de la interfaz de usuario y eliminar la compatibilidad con YAML.
  • Ya no aceptaremos ningún cambio en la configuración de YAML para las integraciones existentes que se comunican con dispositivos y/o servicios.

Entonces, ¿qué queda disponible en YAML al final?

Todas las demás integraciones que no se comunican con un dispositivo y/o servicio, se configuran a través de YAML o mediante Colecciones de almacenamiento (estas habilitan las capacidades de YAML y UI utilizadas por, por ejemplo, Lovelace y zonas). Ejemplos de estas otras integraciones:

  • Integraciones que integran transportes. Estas integraciones permiten a los usuarios definir su propio protocolo, por ejemplo, MQTT, serie, GPIO.
  • Integraciones que procesan datos de Home Assistant y los ponen a disposición de otras integraciones, por ejemplo, plantilla, estadísticas, derivado, medidor de servicios públicos.
  • Integraciones que proporcionan automatizaciones, por ejemplo, automatización, device_sun_light_trigger, alerta.
  • Integraciones que ayudan a controlar dispositivos y servicios, por ejemplo, guión, escena.
  • Integraciones que exponen los datos de Home Assistant a otros servicios, por ejemplo, Google Assistant, HomeKit.

Este ADR está configurado para eliminar la confusión y las preguntas de todos, se basa en los objetivos que se han establecido (como se presentó durante el Estado de la Unión) y establece las pautas para que trabajen nuestros colaboradores. Este ADR trae claridad para todos nosotros.

Rompiendo mitos

En las inquietudes y comentarios planteados en toda la comunidad, se han encontrado algunos comentarios varias veces. Tenga en cuenta que estas no son citas exactas, ya que no queremos dirigirnos a nadie personalmente.

  • «¡Hacer copias de seguridad se volvió más difícil!»

    Usando la función de instantánea de Home Assistant, esto no es un problema. Sin embargo, si realiza copias de seguridad manuales en un sistema que solo ejecuta Core, debe asegurarse de realizar una copia de seguridad del .storage carpeta también (que espero que ya estés haciendo). De lo contrario, no hay diferencia.

  • “Es más difícil probar mi configuración si la integración no es compatible con YAML”.

    Las pruebas de configuración de YAML a menudo se realizan para ver si una configuración de YAML específica sigue siendo válida contra (versiones más nuevas de) Home Assistant. Con las integraciones configuradas a través de la interfaz de usuario, esto no es una preocupación, ya que Home Assistant garantiza que la estructura de datos sea compatible entre versiones y la migra por ti.

  • “Me gusta usar un repositorio privado de git donde almaceno todos mis datos, incluidos mis datos confidenciales, ya que no es público. Sin YAML esto no es posible”.

    Esto en realidad no es cierto, el .storage La carpeta contiene todos los archivos de configuración administrados por Home Assistant en formato JSON, que en esos casos se pueden almacenar y versionar en un repositorio git.

¿YAML va a desaparecer?

¡No!

No por las cosas que nos gusta compartir públicamente. También permanecerá disponible para las funciones avanzadas para las que actualmente no podemos proporcionar una interfaz de usuario. El objetivo no es eliminar YAML, el objetivo es crear la mejor plataforma de automatización del hogar del mundo que sea fácil de usar para todos. Permitir que los usuarios de todos los niveles de experiencia disfruten de este maravilloso pasatiempo que todos compartimos y permitir que todos se concentren en lo que más importa: automatizar nuestros hogares.

Cerrando con la grabación de YouTube del Estado de la Unión 2019, comenzando en la parte que discute esto.

Episodio especial del podcast Home Assistant

Se ha publicado una edición especial del Home Assistant Podcast. En este episodio, Phil y Rohan hablan con Paulus sobre los cambios anunciados en esta publicación de blog.

Clic aquí para escuchar el podcast