El problema silencioso con los feeds iCal (y qué los reemplaza)

Durante los últimos veinte años, la respuesta a "¿cómo publico un calendario?" ha sido: genera un archivo ICS, ponlo detrás de una URL, dile a la gente que se suscriba.

Funciona. Ha estado funcionando desde 1998. Pero cualquiera que haya realmente ejecutado una serie de eventos en vivo desde un feed ICS crudo sabe los modos de fallo silencioso —los que no aparecen hasta que estás seis meses adentro y arrepentiéndote de la configuración.

Aquí está lo que son esos, y lo que un grupo broadcast los reemplaza.

Problema 1: No puedes editar un evento

Un feed ICS crudo generalmente se genera al publicar —configuras la URL, empujas eventos, se sincronizan. Cuando necesitas corregir una palabra mal escrita, mover una hora o cancelar una sesión, el cliente realmente tiene que volver a obtener el feed y honrar la actualización.

En la práctica: algunos clientes honran la actualización basada en UID. Algunos no y dejan el evento antiguo fantasma en calendarios para siempre. Algunos solo duplican. Te enteras por correo ("oye, tu 7pm está apareciendo dos veces para mí") y no hay buena respuesta.

Un grupo broadcast maneja UIDs de eventos y actualiza correctamente. Las ediciones son ediciones. Las cancelaciones son cancelaciones. El feed se versionó.

Problema 2: No puedes dejar que un suscriptor se salte un evento

En un feed ICS crudo, cada suscriptor ve cada evento. Si alguien ama la serie pero no puede ir el próximo martes, sus únicas opciones son: eliminar manualmente el evento (y que vuelva en la próxima sincronización), o cancelar la suscripción del feed completo.

Ambas opciones son malas. La primera es confusa. La segunda pierde un suscriptor por un conflicto.

Los grupos broadcast apoyan la exclusión por evento. El suscriptor toca un enlace único, ese evento desaparece de su feed solo, y el resto de la serie se mantiene intacto.

Problema 3: No tienes sentido de cuánta gente se suscribió

Una URL de ICS estática es un archivo servido por un servidor web. Si miras los logs de acceso puedes estimar, pero la mayoría de los organizadores de eventos no lo hacen. No sabes si tienes 10 suscriptores o 10.000.

Los grupos broadcast te dan un conteo anónimo de suscriptores —sin correos, sin identidades, solo "aquí es cuántos calendarios esto vive adentro". Solo ese número cambia cómo ejecutas la serie.

Problema 4: Las aplicaciones de calendario acotan o almacenan en caché agresivamente

Google Calendar famosamente actualiza feeds ICS externos en su propio ritmo —a veces diariamente, a veces mucho más lentamente. Apple Calendar es más rápido pero no instantáneo. Outlook es... Outlook.

Esto no es algo que puedas arreglar desde el lado del feed; las aplicaciones controlan la actualización. Pero con un feed broadcast que incluye actualizaciones de VEVENT de iCalendar por evento y números de secuencia apropiados, la actualización que sucede se propaga correctamente. Con un ICS hecho a mano, a menudo no.

Problema 5: No hay anulación de suscripción elegante

Un feed ICS, una vez suscrito, permanece en el calendario del suscriptor hasta que recuerdan cómo eliminarlo. La mayoría de las aplicaciones ocultan esa UI cinco menús adentro. Desde el lado del organizador, no hay manera de anular la suscripción de alguien que reporta abuso, no hay manera de revocar una sola suscripción sin romper el feed para todos.

Los grupos broadcast tienen una anulación de suscripción de un toque en la experiencia del suscriptor, y el organizador puede regenerar el enlace de compartir si algo sale mal.

Lo que mantienes

Todo lo que un feed ICS hizo bien —anónimo, universal, unidireccional, capaz de trabajar sin conexión, sin inicio de sesión requerido— un grupo broadcast lo mantiene. El transporte subyacente sigue siendo iCalendar; cada aplicación de calendario ya sabe cómo leerlo. Lo que cambia es la capa operativa a su alrededor: edición, exclusión, conteo, revocación.

Si estás publicando una serie de eventos recurrentes y alguna vez has tenido que responder un correo de "el evento desapareció de mi calendario", esta es la ruta de actualización.