La especificación del 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 pendientes, entradas de diario e información de disponibilidad, [ 1 ] y junto con sus estándares asociados ha sido una piedra angular de la estandarización e interoperabilidad de los calendarios digitales entre diferentes proveedores. Los archivos formateados según la especificación suelen tener la extensión .ics . Con el software de soporte, como un lector de correo electrónico o una aplicación de calendario , los destinatarios de un archivo de datos iCalendar pueden responder al remitente fácilmente o proponer otra fecha/hora de reunión. El formato de archivo está especificado 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 (véase iCal ), que proporciona una de las implementaciones del estándar.
iCalendar es utilizado y compatible con muchos productos, entre ellos:
- Consumidor general: Apple Calendar (anteriormente iCal), eM Client , Google Calendar , Yahoo! Calendar
- corporativo: HCL Domino (anteriormente IBM Notes y Lotus Notes) [ 2 ]
- Software libre : GNOME Evolution , GNU Emacs , Mozilla Thunderbird y SeaMonkey.
Es compatible parcialmente con 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 sencillos (que solo utilizan el protocolo HTTP) se suelen usar para distribuir datos iCalendar sobre un evento y para publicar los horarios de mayor actividad de una persona. Los editores pueden incrustar datos iCalendar en páginas web usando hCalendar , una representación en microformato 1:1 de iCalendar en HTML semántico (X) .
Historia

iCalendar fue creado en 1998 [ 3 ] 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 plano con la extensión .ics o .ifb (para archivos que contienen solo información de disponibilidad). El RFC 5545 reemplazó al RFC 2445 en septiembre de 2009 y ahora define el estándar.
iCalendar se basa en gran medida en el anterior vCalendar del Consorcio de Correo de Internet (IMC), que tiene la extensión de archivo .vcs . [ 4 ] Tras el lanzamiento de iCalendar, el Consorcio de Correo de Internet 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". [ 5 ]
El documento "Protocolo de acceso al calendario" ( RFC 4324) fue un intento inicial de crear un sistema universal para calendarios en tiempo real, pero finalmente se abandonó. En su lugar, iCalendar tuvo cierta acogida para estos fines, y extensiones ad hoc como GroupDAV y CalDAV surgieron como estándares informales y se incorporaron en algunos paquetes de software tanto para clientes como para servidores .
Un primer intento de simplificar los estándares de iCalendar por parte del Grupo de Trabajo de Calendario y Programación de la IETF (ietf-calsify WG) finalizó en enero de 2011 sin ser adoptado. [ 6 ] [ 7 ] El trabajo fue retomado por el Grupo de Trabajo de Extensiones de Calendario (ietf-calext WG). [ 8 ]
Diseño
Los datos de iCalendar tienen el tipo de contenido MIMEtext/calendar . La extensión de archivo .ics se utiliza para archivos que contienen información de calendario y programación, e .ifb para archivos con información de tiempo libre u ocupado que sea 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 e iFBf .
Por defecto, iCalendar utiliza el conjunto de caracteres UTF-8 ; se puede especificar un conjunto de caracteres diferente mediante el parámetro MIME "charset" (si el método de transporte utilizado admite MIME, como Email o HTTP ). Cada línea termina con CR + LF (en hexadecimal : 0D0A ). Las líneas deben limitarse a 75 octetos (no caracteres). Si un elemento de datos es demasiado largo para caber en una sola línea, puede continuar en las líneas siguientes comenzando las líneas de continuación con un espacio (en hexadecimal: 20) o un tabulador (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, y no describe intencionadamente qué hacer con esos datos. Por lo tanto, puede ser necesario otro tipo de 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 la creación colaborativa de calendarios y la programación entre "Usuarios de Calendario" (CU) facilitada por un "Organizador" que inicia el intercambio de datos. Este estándar define métodos como PUBLISH, REQUEST, REPLY, ADD, 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 de correo electrónico de Internet. La "Guía para la gestión de calendarios en Internet" (RFC 3283) explica cómo interactúa iCalendar con otros lenguajes informáticos de calendario (actuales y futuros).
El elemento de nivel superior en iCalendar es el objeto principal 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 iCalendar. La primera línea debe ser BEGIN:VCALENDARy la última debe ser END:VCALENDAR; el contenido entre estas líneas se denomina "icalbody". El cuerpo debe incluir las propiedades de calendario " PRODID " y " VERSION ". Además, debe incluir al menos un componente de calendario. [ 9 ]
VERSION:1.0Se utiliza para especificar que los datos están en el formato antiguo de vCalendar. VERSION es 2.0 para el formato actual de iCalendar a partir de 2016.
El cuerpo del objeto iCalendar (el 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, una entrada de diario, una alarma o uno de varios otros tipos. Aquí hay un ejemplo simple de un objeto iCalendar con un solo calendario que contiene un solo componente de calendario , un evento de " Fiesta del Día de la Bastilla " que comienza a las 5 p. m. del 14 de julio de 1997 y termina a las 4 a. m. de la mañana siguiente: [ 10 ]
INICIO: VCALENDARIO VERSIÓN: 2.0 PRODID:-//hacksw/handcal//NONSGML v1.0//ES COMIENZO:VEVENT UID:uid1@example.com ORGANIZADOR;CN=John Doe:CORREO ELECTRÓNICO:john.doe@example.com DTSTAMP:19970701T100000Z DTSTART:19970714T170000Z DTEND:19970715T040000Z RESUMEN: Fiesta del Día de la Bastilla GEO:48.85299;2.36885 FIN:VEVENT FIN: VCALENDARIO El campo UID distribuye actualizaciones cuando cambia un evento programado. Cuando se genera el evento por primera vez, se crea un identificador único globalY2007S2C131M5@example.edu . Si un evento posterior se distribuye con el mismo UID, reemplaza al original. Un ejemplo de UID podría ser , para la quinta reunión de la clase 131 en el segundo semestre en una universidad hipotética. Los UID de estilo correo electrónico ahora se consideran una mala práctica, y se recomienda usar un UUID en su lugar. [ 11 ]
La representación más común de fecha y hora es una marca de tiempo tz basada en el formato ISO 8601 , 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 (en referencia a su zona horaria Zulu). [ 12 ] Cuando se utiliza 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 estos eventos se superpongan y potencialmente creen conflictos de programación (falsos). [ 13 ]
Los componentes incluyen:
- VEVENT describe un evento con una duración programada en un calendario. Normalmente, cuando un usuario acepta el evento, este se considera ocupado, aunque se puede configurar como TRANSPARENTE para modificar esta interpretación. Un VEVENT puede incluir una VALARM que permite configurar una alarma. Estos eventos tienen un DTSTART que establece la hora de inicio y un DTEND que establece la hora de finalización. Si el evento es recurrente, DTSTART establece el inicio del primer evento.
- VTODO explica un elemento de tarea, es decir, una acción o asignación. No todas las aplicaciones de calendario reconocen los elementos VTODO . En particular, Outlook no exporta las tareas como elementos VTODO e ignora los elementos VTODO en los calendarios importados. [ 14 ]
- VJOURNAL es una entrada de diario. Permite asociar texto descriptivo a una fecha específica del calendario y se puede usar para registrar actividades o logros diarios, o para describir el progreso con una entrada de tareas pendientes relacionada. Un componente de calendario VJOURNAL no ocupa tiempo en el calendario, por lo que no afecta al tiempo libre ni al tiempo ocupado (al igual que las entradas TRANSPARENTES ). En la práctica, pocos programas admiten entradas VJOURNAL .
- VFREEBUSY es una solicitud de tiempo libre/ocupado, es una respuesta a una solicitud o es un conjunto publicado de tiempo ocupado.
- Otros tipos de componentes incluyen VAVAILABILITY , VTIMEZONE (zonas horarias) y VALARM (alarmas). Algunos componentes pueden incluir otros componentes ( VALARM suele estar incluido en otros componentes). Algunos componentes se definen a menudo para dar soporte a otros componentes definidos posteriormente ( VTIMEZONE se utiliza con frecuencia de esta manera).
iCalendar tiene como objetivo "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". Si bien las funciones más utilizadas por los usuarios son ampliamente compatibles con iCalendar, algunas capacidades más avanzadas presentan problemas. Por ejemplo, la mayoría de los proveedores no admiten Diarios ( VJOURNAL ). Los VTODO también han tenido problemas de conversión. [ 15 ]
El calendario de iCalendar tampoco es compatible con algunos calendarios no gregorianos , como los calendarios lunares utilizados en Israel y Arabia Saudita . Si bien existen correspondencias uno a uno entre el calendario gregoriano y muchas otras escalas de calendario, la falta de valores CALSCALE definidos para dichos calendarios y las limitaciones en varios campos de fecha pueden imposibilitar la compatibilidad nativa. Por ejemplo, el año del calendario hebreo puede tener 12 o 13 meses, y la escala del calendario japonés basada en el emperador abarca varias eras.
Extensiones
vCalendar e iCalendar admiten extensiones de software privadas con el prefijo "X-", varias de las cuales son de uso común.
Algunos ejemplos son:
X-RECURRENCE-ID: Extensión vCalendar 1.0 que imita el ID de recurrencia de iCalendar 2.0 (Nokia S60 3.ª edición)X-EPOCAGENDAENTRYTYPE: define el tipo de calendario del clienteX-FUNAMBOL-AALARMOPTIONSX-FUNAMBOL-ALLDAYBandera de evento de todo el díaX-MICROSOFT-CDO-ALLDAYEVENTIndicador de evento de Microsoft Outlook durante todo el díaX-MICROSOFT-CDO-BUSYSTATUSInformación de estado de Microsoft OutlookX-MICROSOFT-CDO-INTENDEDSTATUSX-WR-CALNAME: El nombre que se muestra en el calendarioX-WR-CALDESC: Una descripción del calendarioX-WR-RELCALID: Un identificador único global para el calendario [ 16 ]X-WR-TIMEZONEX-PUBLISHED-TTL: Intervalo de actualización recomendado para la suscripción al calendarioX-ALT-DESC: Se utiliza para incluir marcado HTML en la descripción de un evento. La etiqueta DESCRIPTION estándar debe contener la versión que no sea HTML.X-FMTTYPE,X-FILEDATE,X-NAME,X-CN,X-STATUS,X-ROLE,X-SENTBY,X-SYMBIAN-DTSTAMP,X-METHOD,X-RECURRENCE-ID,X-EPOCALARM,X-SYMBIAN-LUID,X-EPOCAGENDAENTRYTYPE[ 17 ]
Lista de componentes, propiedades y parámetros
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 datos iCalendar, tal como se define en RFC 7265 .
hCalendar es una representación (x)HTML de un subconjunto de datos iCalendar utilizando microformatos .
hEvent es una representación HTML de un subconjunto de datos de iCalendar que utiliza microformatos para abordar algunos problemas de accesibilidad relacionados con el formato hCalendar.
Véase también
Referencias
- 1 2 Desruisseaux, Bernard, ed. (septiembre de 2009). Especificación del objeto central de calendario y programación de Internet (iCalendar) . Grupo de trabajo de ingeniería de Internet . doi : 10.17487/RFC5545 . RFC 5545. Recuperado el 7 de diciembre de 2018 .
- ↑ "IBM Lotus Notes 8.5 iCalendar: Interoperabilidad, implementación y aplicación" . IBM DeveloperWorks . Consultado el 5 de abril de 2015 .
- ↑ "iCalendar.org" . Contenido Z. Consultado el 28 de marzo de 2018 .
- ↑ "vCalendar: El formato de intercambio de calendario y programación electrónica, versión 1.0" . Internet Mail Consortium . 18 de septiembre de 1996. Archivado del original el 21 de marzo de 2016. Consultado el 28 de marzo de 2018 .
- ↑ "vCalendar: La base para la programación multiplataforma" . Internet Mail Consortium . 26 de noviembre de 2006. Archivado del original el 6 de septiembre de 2015. Consultado el 28 de febrero de 2016 .
- ↑ "Simplificación de estándares de calendario y programación (calsify)" . IETF . Consultado el 5 de abril de 2015 .
- ↑ Lear, Eliot (10 de diciembre de 2010). "El fin del grupo de trabajo de calsify, no el fin de la lista de correo" . Lista de correo ietf-calsify . Archivado del original el 9 de diciembre de 2012. Consultado el 5 de abril de 2015 .
- ↑ "Extensiones de calendario (calext)" . IETF . Consultado el 1 de diciembre de 2016 .
- ↑ "Sección 3.6 Componentes del calendario" . Especificación del objeto principal de calendario y programación de Internet (iCalendar) . IETF . sec. 3.6. doi : 10.17487/RFC5545 . RFC 5545. Consultado el 1 de julio de 2020 .
- ↑ Del RFC 2445
- ↑ "Propiedad UID" . Extensiones de propiedades de iCalendar . IETF . sec. 5.3. doi : 10.17487/RFC7986 . RFC 7986. Consultado el 3 de octubre de 2022 .
- ↑ "Sección 3.3.5 Fecha y hora" . Especificación del objeto principal de calendario y programación de Internet (iCalendar) . IETF . sec. 3.3.5. doi : 10.17487/RFC5545 . RFC 5545 .
- ↑ "Sección 3.6.1 Componentes de eventos" . Especificación del objeto principal de calendario y programación de Internet (iCalendar) . IETF . sec. 3.6.1. doi : 10.17487/RFC5545 . RFC 5545 .
- ↑ " [ RFC5546 ] Sección 3.4 Métodos para componentes VTODO" . Microsoft Developer Network . Consultado el 7 de agosto de 2015 .
- ↑ CalConnect, 2004
- ↑ " [ MS-OXCICAL ] : Propiedad: X-WR-RELCALID" . msdn.microsoft.com . Consultado el 23-02-2016 .
- ↑ "Propiedades de iCal y vCal" . Biblioteca para desarrolladores de Nokia Symbian^3 v1.1 . © Nokia Corporation 2011. 8 de octubre de 2009. Archivado del original el 9 de mayo de 2021. Consultado el 17 de noviembre de 2023 .
{{cite web}}: CS1 mantenimiento: otros ( enlace ) - ↑ " [ MS-OXCICAL ] : 2.1.3 Reglas de procesamiento" . learn.microsoft.com . 13 de octubre de 2020. Archivado del original el 16 de noviembre de 2023. Consultado el 16 de noviembre de 2023 .
Enlaces externos
- RFC 5545 Especificación del objeto principal de calendario y programación de Internet (iCalendar) (sustituye a RFC 2445 )
- RFC 5546 Protocolo de interoperabilidad independiente del transporte de iCalendar (iTIP) (sustituye a RFC 2446 )
- RFC 6047 Protocolo de interoperabilidad basado en mensajes de iCalendar (iMIP) (sustituye a RFC 2447 )
- RFC 6321 xCal: El formato XML para iCalendar (Representación XML de iCalendar)
- Actualización de RFC 6868 de los formatos de datos para incluir ciertos caracteres, prohibidos por la especificación existente, en los valores de los parámetros.
- RFC 7265 jCal: El formato JSON para iCalendar
- RFC 7953 Disponibilidad del calendario
- RFC 7986 Nuevas propiedades para iCalendar (propiedades adicionales a la especificación de iCalendar)
- RFC 9073 Extensiones de publicación de eventos para iCalendar
- RFC 9074 Extensiones "VALARM" para iCalendar
- RFC 9253 Compatibilidad con relaciones de iCalendar
- "Introducción a la gestión de calendarios y la programación por Internet" . CalConnect . 20 de octubre de 2011.
- "Recursos de iCalendar" .: Una lista de recursos para iCalendar y estándares relacionados.
- formatos de archivos informáticos
- Estándares de calendario
- Estándares de Internet