Много накопилось работы, поэтому совсем не хватает времени чтобы написать что-либо толковое. Много черновиков, но дописать никак не один не мог.
На прошлой неделе произошло событие, которое попало во все тематические новостные ленты. Была выпущена первая бета-версия новой версии asterisk — 1.6. Надо сказать эта версия отличается ото всех остальных, ранее выходивших. Эти отличия не только в новых функциях (о которых я без сомнения позже напишу), но и внекоторых концептуальных вещах:
- От предыдущего релиза первую бету 1.6 отделяет меньше года от момента выпуска предыдущей версии. Это впервые и означает то, что Digium старается выдерживать цикл релизов в 1 год.
- Пересмотрена система выпуска новых версий, о чём я подробнее напишу ниже. Впервые в процессе жизни ветки 1.6, в неё будет добавляться новая функциональность.
- Обилие как концептуальных добавлений (напр. audiohooks), так и функциональных (напр. app_fax, chan_mobile). Не совру, если скажу, что по обилию добавленных очень"вкусных" возможностей 1.6 обгоняет 1.4. Хотя в своё время Т.38 и новый jb казались просто спасением.
Однако пока отдельный tag для 1.6 не создан, а это означает, что вместе с тестированием продолжается и добавление новой функциональности. Прекращение наращивания функционала видимо будет проведено с появлением версии 1.6 rc1 или какой-либо поздней беты. Так что пока о возможностях говорить рано (по списку изменений и руководству по апгрейду будут отдельные заметки и их я уже начал), вкратце о новой схеме выпуска релизов:
- Версия 1.6 будет состоять из 4х цифр, как и версия Linux ядра: 1.6.x.y
- Версии 1.6.x.y и 1.6.x.z будут отличаться только исправлениями ошибок
- Версии 1.6.x.y и 1.6.z.q могут отличаться и функционально
- В trunk дополнения будут производиться с перерывами. Это позволит лучше тестировать включаемые патчи, а так же упростить тестирование текущего кода проекта.
Такой метод гораздо более трудозатратен, пока не представляю во что это выльется. Погладим, посмотрим. Повторюсь, что это моё понимание (а в первую очередь и запоминание), того о чём Russell писал. Могу немного и ошибаться. Теперь немного о том, что коснётся выпуска версий в ветки 1.4.
Выход релиз-кандидатов
В связи с участившимися жалобами, что не всегда новая версия бывает так стабильна как хотелось бы, а иногда так вообще исправления вносят очень досадные ляпы, было принято решение перед выпуском ново версии выпускать релиз-кандидат. Есть два варианта как это будет выглядеть:
- Создаётся новый branch для новой версии и анонсируется в asterisk-dev. Все заинтересованные тестируют и, если не поступает сообщений о ухудшениях в работе, выпускается новая версия.
- В принципе аналогично, только rc публично выкладывается на сервер и анонсируется на сайте.
Исправления безопасности
Выпуск релиз-кандидатов невозможен в условиях обнаружения проблем, касающихся безопасности. Следовательно схема выпуска таких исправлений так же изменится.
В том случае, если будет найдена проблема в безопасности версии, скажем 1.4.x, то сразу же будет выпущена новая версия, но основанная на коде 1.4.х, с применением патча, исправляющим проблему. Версии с исправлениями проблем безопасности будут базироваться на предыдущей стабильном релизе, а не на коде из branch/1.4. Это должно сделать версии с исправленной проблемой максимально стабильными, с возможностью быстрого апгрейда, без предварительного чтения списка изменений и размышлений вроде: «А что они могли в очередной раз сломать?»
Кому нужны тарболы?
Так же нашлись те, кто сказал, что улучшению тестирования asterisk может помочь выпуск ежедневных архивов с текущим исходным кодом. Многие проекты работают таким образом, но у asterisk есть доступ к svn, который позволяет в любой момент получить текущую версию кода, при этом иметь полный контроль над ним. Не понимаю зачем нужны тарболы с кодом, скорее всего их и не будет.
Переход на новые версии
Olle после выхода новой версии разместил у себя на блоге заметку о вещах, на которые нужно обратить внимание при переходе на версию 1.4 с 1.2. Да, да, это не ошибка. До сих пор многие остаются на версии 1.2, вышедшей уже 2 с лишним года назад. Вкратце всё очень просто:
- Внимательно прочитать UPGRADE.TXT для версии 1.4, чтобы понять какие функции и каким образом поменяли своё поведение.
- Особо внимательно прочитать UPGRADE.TXT для версии 1.2, чтобы понять какие функции используются в стиле версии 1.0.
- Обратить внимание, какие функции, команды, переменные и команды CLI обозначены как Deprecated.
Разработка устроена так, что устаревшие функции удаляются не сразу. Сначала они отмечаются как устаревшие, о чём пишется в документации и в сообщениях на консоли. В следующем релизе такие функции, оставшиеся для совместимости, удаляются. В 1.4 впервые случилось удаление, что сразу вызвало массу проблем: конфиги от 1.2 перестали подходить к 1.4, на вики примеры тоже не подходят. В общем для начинающего — ужас и кошмар.
PS. Самой актуальный проблемой была и остаётся тестирование текущего кода. Если у вас возможность вы можете помочь и себе и проекту — установите на тестовую машину trunk версию. Регулярно тестируйте функции, используемые боевой системой на тестовой и сообщайте о возникших проблемах. В результате релизы будут более стабильны и у вас будет меньше проблем при переходе на новые версии.
За сим заканчиваю, до скорых встреч.