TZ_database, ключевой источник информации о часовых поясах в мире ПО, закрыта в следствии обвинения в нарушении авторских прав.
Закрытие было инициировано в связи с иском от Astrolabe Inc (производитель ПО для астрологов) против 2 физ. лиц, Артура Девида Олсона и Пауля Р. Эггерта, ментейнеров БД с середины 80х, 30 сентября в Бостоне — www.scribd.com/doc/67760407/ASTROLABE-INC-Vs-ARTHUR-DAVID-OLSON-and-PAUL-EGGERT-Complaint.
Иск связан с использованием исторических данных о часовых поясах из книг The American Atlas by Thomas G Shanks и The International Atlas by Shanks and Rique Pottenger.
Иск не затрагивает текущию информацию в tz_database. Не смотря на это, Олсон сообщил, что ftp базы данных по адресу elsie.nci.nih.gov закрыт, так же как и почтовая рассылка проекта.
Корректная информация о часовых поясах необходима для правильного журналирования событий и автоматической обработки в нужное время.
«Ситуация заключается в том, что теперь нет центрального источника информации о часовых поясах,» — пишет британский Java разработчик, Стефан Колберн, — «Это несомненно был ключевой инструмент для определения точного времени.»
TZ_database Олсона, используется для операций с часовыми поясами в большом количестве ПО, в таком как, OS X, большинстве дистрибутивов Linux, Solaris, Oracle, JRE, PHP, разными модулями Perl и Python, модулем часовых поясов .NET Framework.
Есть только одно значительно исключение — производитель ПО Microsoft, использующий свою проприетарную базу данных часовых поясов.
Без доверенной базы данных часовых поясов, каждому проекту ПО придется следить за изменениями в часовых поясах самостоятельно. Но решения о изменении в часовых поясах иногда принимаются настолько быстро, что не все смогут успеть внести эту информацию.
«Эта информация настолько важна, что должна поддерживаться группой с более хорошей правовой и финансовой поддержкой.» — пишет Колберн.
«Я призываю вмешаться лидеров индустрии, IBM, Oracle, Apple, Google, RedHat, мы ждем вашего хода.»
Источник — http://habrahabr.ru/blogs/copyright/129924/
Ликбез от хабрапользователя roman_tik, за что ему огромное спасибо (=
Многие Unix-like системы для хранения информации обо всех мировых часовых поясах используют базу tzdata (она же tz database, она же zoneinfo database, она же Olson database — в честь Артура Олсона, основателя этой базы знаний).
Впервые начал собирать эту базу Артур Дэвид Олсон (Arthur David Olson), позже к этому проекту подключились и другие участники. Сейчас же основным коммитером новой информации в базу tzdata является Пол Эггерт (Paul Eggert), а Артур Олсон сейчас занимается разработкой и поддержкой утилит для работы с локальным временем и данными о часовых поясах (пакет tzcode).
В базе tzdata содержится детальная информация обо всех часовых поясах во всех регионах мира:
— координатная привязка основных населённых пунктов, характеризующих часовой пояс;
— смещение локального времени в различных регионах относительно универсального времени UTC;
— указано, в каких регионах применяется летнее время (DST), насколько оно смещается относительно стандартного, указаны точные даты и время переключения на летнее время и обратно в различных регионах в различные периоды;
— информация о високосных секундах (leap seconds).
Важной особенностью базы tzdata является то, что она не просто хранит текущее состояние всех мировых часовых поясов (т.е. текущие правила расчёта локального времени относительно UTC в каждом регионе мира), она ещё хранит все изменения этих правил расчёта времени для всех регионов за всё время с начала Unix-эпохи (1 января 1970). Допустим, какая-то страна своим политическим решением перешла в другой часовой пояс — эта информация есть в tzdata с точностью до секунды, когда это произошло; какая-то страна изменила дату перехода на летнее время — эта информация есть в tzdata с точностью до секунды, когда это произошло; какая-то страна отменила переход на летнее время — эта информация есть в tzdata с точностью до секунды, когда это произошло и т.д.
Благодаря этой особенности, можно вести точные расчёты времени для разных стран за разные промежутки времени (т.е. не только для текущего момента).
Например, локальное время:
2010-12-01 14:00 (MSK) — соответствует 2010-12-01 11:00 (UTC)
2011-12-01 14:00 (MSK) — соответствует 2011-12-01 10:00 (UTC)
Казалось бы, одинаковое название часового пояса и одинаковое локальное время (только год разный). Но в один исторический период часовая зона MSK соответствовала UTC+03:00, а в другой исторический период та же самая часовая зона MSK соответствовала уже UTC+04:00.
Также неоднозначности между часовыми поясами возникают, например, из-за того, что переход на летнее время и обратно не происходит одномоментно во всех странах, где он используется. В каждом регионе — в своё время, и даже не обязательно в один день.
И благодаря базе tzdata все эти неоднозначности легко решаются, т.к. там хранится подробная информация о том, когда и как рассчитывалось время в каждом из часовых поясов в каждый из временных периодов (с 1970 года).
Если иметь только текущее состояние всех часовых зон (без исторической памяти о правилах расчёта времени в прошлом), то подобные неоднозначности локальных часовых зон никогда не разрешить. И база tzdata как раз и решает задачу сбора и консолидации всей этой информации о часовых поясах со всего мира.
Информация об исчислении времени в различных регионах мира для базы tzdata собирается совместно участниками opensource-сообщества со всего мира, затем присланная информация проверяется, обсуждается, уточняется, консолидируется и в итоге коммитится в файлы tzdata. Исходники tzdata содержат всю информацию обо всех часовых поясах в текстовом человекочитаемом виде с комментариями и пояснениями. Далее эти текстовые файлы компилируются (утилитой zic) и в системах используются уже в скомпилированном бинарном виде. Причём скомпилированные файлы tzdata, хоть и бинарные, но они не содержат исполняемого кода и платформонезависимы. В большинстве unix-подобных ОС скомпилированные файлы с описанием часовых зон из пакета tzdata можно найти здесь: /usr/share/zoneinfo/
Официальная страница tzdata: http://cs.ucla.edu/~eggert/tz/
Исходники tzdata и утилит для работы с часовыми поясами можно скачать здесь: ftp://elsie.nci.nih.gov/pub/
Информация, собранная в tzdata, распространяется свободно для всех желающих без каких-либо лицензионных ограничений (public domain). Любой может свободно взять (как в исходниках, так и в бинарном виде) и использовать её в своих приложениях/библиотеках/сервисах. Многие разработчики дистрибутивов ОС и различного ПО именно так и делают.
Базу tzdata используют все GNU/Linux-дистрибутивы, BSD-системы (FreeBSD, NetBSD, OpenBSD, DragonFly BSD), Solaris, UnixWare, AIX (6.1 и выше), Cygwin а также Mac OS X и некоторые другие unix-like дистрибутивы. Кроме того, данные из tzdata используется в ряде СУБД: MySQL, Oracle DB, PostgreSQL и др., а также в языках, фреймворках, библиотеках, модулях: PHP5, Perl (модули DateTime::TimeZone и DateTime::LeapSecond), Python (модуль pytz), GNU C Library (glibc), .NET Framework (модуль zoneinfo), Java Runtime Environment и др.
В мире opensource база tzdata де-факто является стандартным источником информации обо всех часовых поясах. Благодаря единой базе знаний tzdata, каждому разработчику ОС и ПО не нужно самостоятельно собирать и поддерживать внутри своего проекта в актуальном состоянии информацию о мировых часовых поясах. Все её получают из единого источника, и везде она идентична (если вовремя обновляют tzdata).
Версии tzdata нумеруются следующим образом. Сначала четырёхзначное число, означающее год выхода этой версии, а потом одна буква латинского алфавита по порядку: a, b, c, d… и т.д. по мере выхода новых версий tzdata в течение одного года. Например, в 2010 году выходили версии tzdata: 2010a, 2010b, 2010c… и далее до версии 2010o. В 2011 году выходили версии tzdata: 2011a, 2011b, 2011c… и далее до 2011k (на день написания этой статьи это пока последняя версия tzdata).
Изменения для новых часовых зон России появились в tzdata 2011j, а изменения для часовых поясов Украины и Белоруссии появились в tzdata 2011k.
Если вы используете какой-либо Linux-дистрибутив, который вы регулярно обновляете из репозиториев, то скорее всего последняя версия пакета tzdata уже установлена у вас в системе.
Даты выхода последних релизов tzdata на примере Ubuntu:
14 сентября 2011 — пакет tzdata обновился до версии 2011j в апстриме Ubuntu (Debian Unstable);
20 сентября 2011 — пакет tzdata 2011j поступил в основной репозиторий Ubuntu;
26 сентября 2011 — пакет tzdata обновился до версии 2011k в апстриме Ubuntu (Debian Unstable);
04 октября 2011 — пакет tzdata 2011k поступил в основной репозиторий Ubuntu.
В Linux-дистрибутивах с пакетными менеджерами можете просто посмотреть версию текущего установленного пакета tzdata. Например, в Debian/Ubuntu это можно сделать командой:
dpkg -s tzdata |grep Version
Если в выводе этой команды присутствует 2011k (или выше), значит у вас пакет tzdata уже достаточно обновлён.