CalDAV

CalDAV (англ. Calendaring Extensions to WebDAV) — сетевой протокол прикладного уровня, расширяющий возможности WebDAV и предназначенный для доступа, синхронизации и управления календарными данными. Он основан на формате iCalendar и позволяет клиентским приложениям взаимодействовать с календарными серверами по HTTP, поддерживая совместную работу, планирование встреч (англ. scheduling) и синхронизацию между устройствами. Протокол разработан как открытый стандарт и опубликован в 2007 году в виде RFC 4791 под эгидой IETF. Для расширения функций планирования используется RFC 6638, а управление доступом реализовано на основе RFC 3744.

## Содержание

* 1 История
* 2 Описание
* 3 Критика
* 4 Будущее
* 5 Пример
* 6 Программное обеспечение
* 6.1 Клиент
* 6.2 Сервер
* 7 Сервис-провайдеры
* 8 Примечания
* 9 Ссылки

## История

[править | править код]

В 2003 году Лиза Дюссо инициировала разработку спецификации CalDAV, представив её на рассмотрение Инженерному совету Интернета.

Спецификация вызвала интерес среди разработчиков календарного программного обеспечения. В январе 2005 года были успешно протестированы два сервера и три клиента, корректно взаимодействующие между собой.

В марте 2007 года CalDAV был официально опубликован IETF в качестве стандарта под номером RFC 4791 («Calendaring Extensions to WebDAV (CalDAV)»). Авторами спецификации стали Сайрус Дабу (Apple), Бернар Дезруиссо (Oracle) и Лиза Дюссо (CommerceNet).

CalDAV был впоследствии внедрён в ряд программных продуктов, ориентированных на управление календарями и событиями[источник не указан 102 дня].

## Описание

[править | править код]

CalDAV представляет собой открытый стандарт, расширяющий протокол WebDAV и использующий формат iCalendar для обмена календарными данными между клиентскими приложениями и серверами.

Протокол предназначен для управления календарными событиями, включая встречи, расписания и другие записи, синхронизируемые между сервером и клиентом. Кроме того, CalDAV поддерживает создание так называемых «неличных» календарей, например, для помещений или групп пользователей. Для поддержки функций планирования встреч (англ. scheduling) используется расширение CalDAV, стандартизированное в RFC 6638.

Пользователь может синхронизировать свой календарь с сервером CalDAV и использовать его на нескольких устройствах. Протокол также поддерживает создание неличных календарей, таких как календари для комнат или организаций.

Данные CalDAV организуются в виде коллекций (каталогов), содержащих ресурсы: события, задачи, напоминания и свободное/занятое время. Для управления доступом используются ACL на основе WebDAV Access Control Protocol (RFC 3744), позволяющие задавать права (чтение, редактирование, удаление) для отдельных пользователей.

Сервер CalDAV должен уметь разбирать записи в формате iCalendar, поскольку это необходимо для выполнения специфических календарных операций — например, расширения повторяющихся событий или составления отчётов о занятости (англ. free-busy).

В то же время CalDAV подвергался критике за относительную сложность реализации, что может вызывать затруднения при интеграции с некоторыми программными продуктами.[источник не указан 102 дня]

## Критика

[править | править код]

Несмотря на широкое распространение и поддержку в различных программных решениях, спецификации CalDAV и iCalendar подвергаются критике за устаревание и ограниченную применимость в корпоративной среде. В частности, исследователи из Университета Цинхуа отмечают, что текущие версии этих протоколов не учитывают ряд современных требований[1]:

* отсутствие встроенной поддержки механизмов безопасности и аутентификации;
* отсутствие интерфейсов для выполнения массовых операций с событиями;
* недостаточная проработка сценариев, связанных с масштабированием, делегированием и ролевым управлением доступом, характерных для корпоративных информационных систем.

В связи с этим, применение CalDAV в крупных организациях требует дополнительной реализации служебной логики на уровне серверной инфраструктуры или сторонней интеграции с корпоративными системами управления доступом и данными.

## Будущее

[править | править код]

В качестве потенциальной замены формата iCalendar рассматривается jCal — структурированное представление календарных данных в формате JSON, стандартизированное в RFC 7265. jCal отличается лучшей читаемостью и удобством обработки, что делает его перспективным кандидатом для будущего развития календарных протоколов.[1]

## Пример

[править | править код]

Пример основан на RFC 4791:

Запрос:

REPORT /bernard/work/ HTTP/1.1
Host: cal.example.com
Depth: 1
Content-Type: application/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="20060104T140000Z" end="20060105T220000Z"/>
</C:free-busy-query>

Ответ:

HTTP/1.1 200 OK
Date: Sat, 11 Nov 2006 09:32:12 GMT
Content-Type: text/calendar
Content-Length: xxxx

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Server//EN
BEGIN:VFREEBUSY
DTSTAMP:20050125T090000Z
DTSTART:20060104T140000Z
DTEND:20060105T220000Z
FREEBUSY;FBTYPE=BUSY-TENTATIVE:20060104T150000Z/PT1H
FREEBUSY:20060104T190000Z/PT1H
END:VFREEBUSY
END:VCALENDAR

## Программное обеспечение

[править | править код]

### Клиент

[править | править код]

Список CalDAV-клиентов включает:[2]:

* DAVx⁵ (Android 4.4+)[3]
* CalDAV-Sync for Android[4]
* AgenDAV (CalDAV WebClient с открытым кодом, поддержкой различных языков, и AJAX интерфейсом)
* iPhone
* Atmail (начиная с версии 6.0)
* CalDavZAP (Web-based HTML5 / JavaScript приложение, открытый код)[5]
* EVO Collaborator for Outlook добавить caldav совместимость синхронизации с Outlook[6]
* Evolution (Linux, Unix, Windows)
* Horde Groupware[7]
* Korganizer (приложение календаря от KDE)
* Sunbird или Thunderbird с Lightning плагином (Linux, Windows, Unix, Mac OS X)
* eM Client (Windows)
* iCal4OL (больше не доступен для новых пользователей)
* iCal (начиная с версии Mac OS X Leopard !V 10.5)
* iCal Import/Export CalDAV for Android[8]
* One Calendar (Android, Windows, другими вариантами не пользовался)

### Сервер

[править | править код]

Список CalDAV-серверов включает:[9]:

* Apples Darwin Calendar Server — Сервер календарей
* Baikal[10] Легкий CalDAV+CardDAV сервер на PHP
* Bedework (ehemals UWCalendar)[11]
* Bynari Collaboration Suite[12]
* DPCalendar[13]
* DavMaild
* Daylite CalDAV Server[14]
* Dingo Calendar Server
* EGroupware — начиная с версии 1.6
* EVO Mail Server[15]
* Fabasoft Folio Cloud
* Google Calendar[16]
* Horde Groupware[7]
* Icewarp-E-Mail-Server — начиная с версии 8.х
* Kerio Connect[17]
* Nextcloud[18]
* SOGo[19]
* SabreDAV[20]
* Scalix[21]
* Sun Java Calendar Server
* Synovel CollabSuite[22]
* Yahoo Calendar
* Zarafa — начиная с версии 6.30.0
* Zimbra — начиная с версии 4.5[23]
* mod_caldav[24]
* ownCloud[25]
* CommuniGate Pro

## Сервис-провайдеры

[править | править код]

* Yandex
* Mail.ru
* Google
* Yahoo!

## Примечания

[править | править код]

1. ↑ 1 2 Ma E., Liu N., Zhang Y., Peng Y. The Design and Architecture of CalDAV-based Enterprise Calendar Service. Proceedings of the International Conference on Intelligent Control and Computer Application (ICCA 2016), Atlantis Press.
2. ↑ CalDAV Клиенты (Русский) (неопр.) (18 сентября 2010). Дата обращения: 17 декабря 2010. Архивировано из оригинала 23 мая 2016 года.
3. ↑ DAVx⁵ (неопр.). Дата обращения: 5 мая 2022. Архивировано 3 января 2019 года.
4. ↑ CalDAV-Sync (неопр.). Дата обращения: 10 ноября 2015. Архивировано 4 ноября 2015 года.
5. ↑ CalDavZAP (неопр.). Дата обращения: 10 ноября 2015. Архивировано 10 ноября 2015 года.
6. ↑ EVO Collaborator for Outlook (неопр.). Дата обращения: 10 ноября 2015. Архивировано 7 декабря 2015 года.
7. ↑ 1 2 Horde Groupware (неопр.). Дата обращения: 10 ноября 2015. Архивировано 13 ноября 2015 года.
8. ↑ iCal Import/Export CalDAV
9. ↑ CalDAV Сервера (Русский) (неопр.). Дата обращения: 7 января 2014. Архивировано 24 октября 2008 года.
10. ↑ Baikal (неопр.). Дата обращения: 10 ноября 2015. Архивировано из оригинала 14 ноября 2015 года.
11. ↑ Bedework Архивировано 2 декабря 2011 года.
12. ↑ Bynari Collaboration Suite (неопр.). Дата обращения: 10 ноября 2015. Архивировано из оригинала 4 августа 2012 года.
13. ↑ DPCalendar (неопр.). Дата обращения: 10 ноября 2015. Архивировано 8 декабря 2015 года.
14. ↑ Daylite CalDAV Server Архивировано 15 октября 2015 года.
15. ↑ EVO Mail Server (неопр.). Дата обращения: 10 ноября 2015. Архивировано 21 октября 2015 года.
16. ↑ Google Calendar (неопр.). Дата обращения: 10 ноября 2015. Архивировано 28 октября 2015 года.
17. ↑ Kerio Connect (неопр.). Дата обращения: 10 ноября 2015. Архивировано 28 марта 2014 года.
18. ↑ Nextloud (неопр.). Дата обращения: 30 ноября 2019. Архивировано 10 июля 2016 года.
19. ↑ SOGo (неопр.). Дата обращения: 5 мая 2022. Архивировано 5 мая 2022 года.
20. ↑ sabre/dav (неопр.). Дата обращения: 10 ноября 2015. Архивировано 1 апреля 2021 года.
21. ↑ Scalix (неопр.). Дата обращения: 10 ноября 2015. Архивировано 10 ноября 2015 года.
22. ↑ Synovel (неопр.). Дата обращения: 10 ноября 2015. Архивировано 9 ноября 2015 года.
23. ↑ Zimbra (неопр.). Дата обращения: 10 ноября 2015. Архивировано 6 ноября 2015 года.
24. ↑ mod_caldav auf SourceForge (неопр.). Дата обращения: 10 ноября 2015. Архивировано 16 ноября 2015 года.
25. ↑ ownCloud (неопр.). Дата обращения: 10 ноября 2015. Архивировано 24 сентября 2015 года.

## Ссылки

[править | править код]

* WebDAV-Information
* Proposed calendar enhancement for WebDAv (CalDAV)
* Scheduling Association
* CalDAV-Roadmap MozillaWiki
* Scalable OpenGroupware.org Francis Lachapelle, Ludovic Marcotte

* Связанные RFC:
* RFC 2518 — WebDAV
* RFC 2616 — HTTP
* RFC 3744 — WebDAV Access Control Protocol
* RFC 4791 — Calendaring Extensions to WebDAV (CalDAV)
* RFC 5545 — iCalendar
* RFC 6638 — Scheduling Extensions to CalDAV