ICalendario

Ajustar Compartir Imprimir Citar
Formato de archivo de computadora para información de calendario

La Especificación de objeto principal de calendario y programación de Internet (iCalendar) es un tipo de medio que permite a los usuarios almacenar e intercambiar información de calendario y programación, como eventos, tareas, entradas de diario e información de libre/ocupado, y junto con sus estándares asociados ha sido la piedra angular de la estandarización y la interoperabilidad de los calendarios digitales entre diferentes proveedores. Los archivos formateados de acuerdo con la especificación suelen tener una extensión de .ics. Con software de apoyo, como un lector de correo electrónico o una aplicación de calendario, los destinatarios de un archivo de datos de iCalendar pueden responder al remitente fácilmente o contraproponer otra fecha/hora de reunión. El formato de archivo se especifica en un estándar de Internet propuesto (RFC 5545) para el intercambio de datos de calendario. El estándar y el tipo de archivo a veces se denominan "iCal", que era el nombre del programa de calendario de Apple Inc. hasta 2012 (consulte iCal), que proporciona una de las implementaciones del estándar.

iCalendar es utilizado y respaldado por muchos productos, incluidos Google Calendar, Apple Calendar (anteriormente iCal), HCL Domino (anteriormente IBM Notes y Lotus Notes), Yahoo! Calendar, GNU Emacs, GNOME Evolution, eM Client, extensión Lightning para Mozilla Thunderbird y SeaMonkey, y parcialmente por Microsoft Outlook y Novell GroupWise.

iCalendar está diseñado para ser independiente del protocolo de transporte. Por ejemplo, ciertos eventos se pueden enviar por correo electrónico tradicional o se pueden compartir y editar archivos de calendario completos mediante un servidor WebDav o SyncML. Los servidores web simples (que usan solo el protocolo HTTP) a menudo se usan para distribuir datos de iCalendar sobre un evento y para publicar las horas ocupadas de una persona. Los editores pueden incrustar datos de iCalendar en páginas web mediante hCalendar, una representación en microformato 1:1 de iCalendar en (X)HTML semántico.

Historia

iCalendar componentes y sus propiedades

iCalendar fue creado por primera vez en 1998 por el Grupo de Trabajo de Calendario y Programación del Grupo de Trabajo de Ingeniería de Internet, presidido por Anik Ganguly de Open Text Corporation, y fue escrito por Frank Dawson de Lotus Development Corporation y Derik Stenerson de Microsoft Corporation. Los archivos de datos de iCalendar son archivos de texto sin formato con la extensión .ics o .ifb (solo para archivos que contienen información de disponibilidad). RFC 5545 reemplazó a RFC 2445 en septiembre de 2009 y ahora define el estándar.

iCalendar se basa en gran medida en el anterior vCalendar del Internet Mail Consortium (IMC). Tiene la extensión de archivo.vcs. Después del lanzamiento de iCalendar, Internet Mail Consortium declaró que "espera que todos los desarrolladores de vCalendar aprovechen estos nuevos estándares abiertos y hagan que su software sea compatible tanto con vCalendar 1.0 como con iCalendar".

La nota "Protocolo de acceso al calendario" (RFC 4324) fue un intento inicial de un sistema universal para crear calendarios en tiempo real, pero finalmente se abandonó. En cambio, iCalendar experimentó alguna adopción para tales propósitos con extensiones ad hoc como GroupDAV y CalDAV que surgieron como estándares informales y observaron cierta adopción en los paquetes de software de cliente y servidor.

Un primer esfuerzo para simplificar los estándares de iCalendar del IETF "Grupo de trabajo de programación y calendarios" (ietf-calsify WG) terminó en enero de 2011 sin ver la adopción. Luego, el trabajo fue retomado por el "Grupo de trabajo de extensiones de calendario" (IETF-calext GT).

Diseño

Los datos de iCalendar tienen el tipo de contenido MIME text/calendar. La extensión de nombre de archivo de ics se debe usar para archivos que contienen información de calendario y programación, ifb para archivos con información de tiempo libre u ocupado coherente con este tipo de contenido MIME. Los códigos de tipo de archivo equivalentes en los entornos del sistema operativo Apple Macintosh son iCal y iFBf.

De forma predeterminada, iCalendar utiliza el juego de caracteres UTF-8; se puede especificar un juego de caracteres diferente usando el "juego de caracteres" Parámetro MIME (si el método de transporte utilizado es compatible con MIME, como correo electrónico o HTTP). Cada línea termina en CR+LF (en hexadecimal: 0D0A). Las líneas deben limitarse a 75 octetos (no caracteres) de largo. Cuando un elemento de datos es demasiado largo para caber en una sola línea, se puede continuar en las líneas siguientes comenzando las líneas de continuación con un carácter de espacio (en hexadecimal: 20) o un carácter de tabulación (en hexadecimal: 09). Los saltos de línea reales en los elementos de datos se codifican como una barra invertida seguida de la letra n o N (los bytes 5C 6E o 5C 4E en UTF-8).

El formato iCalendar está diseñado para transmitir datos basados en calendarios, como eventos, e intencionalmente no describe qué hacer con esos datos. Por lo tanto, es posible que se necesite otra programación para negociar qué hacer con estos datos. Un estándar complementario, "iCalendar Transport-Independent Interoperability" (iTIP) (RFC 2446), define un protocolo para intercambiar objetos iCalendar para el calendario y la programación colaborativos entre "Usuarios de calendario" (CU) facilitado por un "Organizador" iniciar el intercambio de datos. Este estándar define métodos como PUBLISH, SOLICITUD, RESPONDER, AÑADIR, CANCEL, REFRESH, COUNTER (para negociar un cambio en la entrada) y DECLINE-COUNTER (para rechazar la contrapropuesta). Otro estándar complementario, "iCalendar Message-based Interoperability Protocol (iMIP)" (RFC 2447), define un método estándar para implementar iTIP en transportes estándar basados en correo electrónico de Internet. La "Guía de calendarios de Internet" (RFC 3283) explica cómo iCalendar interactúa con otros lenguajes informáticos de calendario (actuales y futuros).

El elemento de nivel superior en iCalendar es el objeto central de calendario y programación, una colección de información de calendario y programación. Normalmente, esta información consistirá en un único objeto iCalendar. Sin embargo, se pueden agrupar varios objetos de iCalendar. La primera línea debe ser BEGIN:VCALENDAR, y la la última línea debe ser END:VCALENDAR; el contenido entre estas líneas se llama "icalbody". El cuerpo debe incluir el "PRODID" y "VERSIÓN" propiedades del calendario. Además, debe incluir al menos un componente de calendario.

VERSION:1.0 se usa para especificar que los datos están en el antiguo formato de vCalendar. VERSIÓN es 2.0 para el formato actual de iCalendar a partir de 2016.

El cuerpo del objeto iCalendar (icalbody) contiene Propiedades de calendario de una sola línea que se aplican a todo el calendario, así como uno o más bloques de varias líneas que definen cada uno un Componente de calendario como un evento, entrada de diario, alarma o uno de varios otros tipos. Este es un ejemplo simple de un objeto iCalendar con un solo calendario que contiene un solo Componente de calendario, una "Fiesta del Día de la Bastilla" evento que comienza a las 5:00 p. m. del 14 de julio de 1997 y finaliza a las 4:00 a. m. de la mañana siguiente:

BEGIN:VCALENDAR
VERSIÓN:2.0
PRODID:-/hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T040000Z
RESUMEN: Partido del Día de la Liberación
GEO:48.85299;2.36885
END:VEVENT
END:VCALENDAR

El campo UID distribuye actualizaciones cuando cambia un evento programado. Cuando el evento se genera por primera vez, se crea un identificador único global. Si se distribuye un evento posterior con el mismo UID, reemplaza al original. Un UID de ejemplo podría ser Y2007S2C131M5@example.edu, para la quinta reunión de la clase 131 en el semestre 2 en una universidad hipotética. Los UID de estilo de correo electrónico ahora se consideran una mala práctica, y en su lugar se recomienda un UUID.

La representación más común de fecha y hora es una marca de tiempo tz como 20010911T124640Z con el formato < año (4 dígitos)><mes (2)><día (2)>T<hora (2)><minuto (2)><segundo (2)>Z para una longitud fija total de 16 caracteres. Z indica el uso de UTC (refiriéndose a su zona horaria zulú). Cuando se usa en las propiedades DTSTART y DTEND, las horas de inicio son inclusivas, mientras que las horas de finalización no lo son. Esto permite que la hora de finalización de un evento sea la misma que la hora de inicio de un evento consecutivo sin que esos eventos se superpongan y creen potencialmente (falsos) conflictos de programación.

Los componentes incluyen:

iCalendar está destinado a "proporcionar la definición de un formato común para el intercambio abierto de información de calendario y programación a través de Internet". Mientras que las funciones más utilizadas por los usuarios son ampliamente compatibles con iCalendar, algunas funciones más avanzadas tienen problemas. Por ejemplo, la mayoría de los proveedores no admiten revistas (VJOURNAL). Los VTODO también han tenido problemas de conversión.

El calendario de iCalendar tampoco es compatible con algunos calendarios no gregorianos, como los calendarios lunares que se usan en Israel y Arabia Saudita. Aunque existen asignaciones uno a uno entre el gregoriano y muchas otras escalas de calendario, la falta de valores CALSCALE definidos para esos calendarios y las limitaciones en varios campos de fecha pueden hacer imposible el soporte nativo. Por ejemplo, el año del calendario hebreo puede contener 12 o 13 meses, y la escala del calendario basado en el emperador japonés contiene muchas eras.

Extensiones

vCalendar e iCalendar admiten extensiones de software privadas, con una "X-" prefijo, algunos de los cuales son de uso común.

Algunos de estos incluyen:

Otras representaciones

xCal es una representación XML de los datos de iCalendar, tal como se define en RFC 6321.

jCal es una representación JSON de los datos de iCalendar, tal como se define en RFC 7265.

hCalendar es una representación (x)HTML de un subconjunto de datos de iCalendar usando microformatos.

hEvent es una representación HTML de un subconjunto de datos de iCalendar utilizando microformatos que abordan algunos problemas de accesibilidad con el formato hCalendar.