Семантическое версионирование (semver) в Joomla и её расширениях

  • Вторник, 11 июня 2024
Семантическое версионирование (semver) в Joomla и её расширениях

Зачастую мы не задумываемся о том, что значат цифры в версиях Joomla или сторонних расширений, с помощью которых мы превращаем нашу Joomla в полноценный звездолёт. Почему их 3, по какому принципу они изменяются, что означают и как это использовать в своей работе.

Начнём с того, что само по себе версионирование нужно для программных продуктов, которые развиваются и поддерживаются в течение долгого времени. Рано или поздно команда разработки принимает план развития продукта (это касается не только Joomla). В нём отмечаются основные вехи развития, распределяется по времени и версиям новый функционал, указываются даты выпуска релизов, назначаются ответственные за тот или иной релиз. И у Joomla такой план развития есть (по-русски и по-английски). И он даже выполняется. 

Для того, чтобы избежать хаоса и энтропии в жизни Joomla в 2014 году был сделан переход на семантическое версионирование - он же семвер, он же semver. А с выходом Joomla 4 на основе активной обратной связи от Joomla сообщества был скорректирован и план выпуска релизов Joomla 4 и Joomla 5

Что же такое semver? 

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

Первая версия расширения обычно имеет версию 1.0.0., где 1 - это мажорная версия, а следующие два нуля - минорная и патч-версии.

Процитируем документацию:

Учитывая номер версии МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ, следует увеличивать:
МАЖОРНУЮ версию, когда сделаны обратно несовместимые изменения API.
МИНОРНУЮ версию, когда вы добавляете новую функциональность, не нарушая обратной совместимости.
ПАТЧ-версию, когда вы делаете обратно совместимые исправления.
Дополнительные обозначения для предрелизных и билд-метаданных возможны как дополнения к МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ формату.

Четвёртый разряд версии в семвер допускается, но не обязателен. Его часто называют hotfix (горячее исправление, быстрая заплатка). Разработчики могут выпускать hotfix версии, когда в выпущенном релизе была допущена какая-то ошибка, требующая немедленного исправления, но часть пользователей уже скачала расширение и начала им пользоваться. В таких случаях выпуск версии с заплаткой (например 1.43.8.1) позволяет обновить программу (Joomla расширение) и при этом не нарушить план релизов (план развития, план выпуска релизов) и не изменять нумерацию версий внутри этого плана. 

Также могут быть предрелизные версии.  Они имеют более низкий приоритет, чем соответствующая релизная версия. Предрелизная версия указывает на то, что эта версия не стабильна и может не удовлетворять требованиям совместимости и безопасности, обозначенными соответствующей нормальной версией. Примеры: 1.0.0-alpha, 1.0.0-beta.3. Обратите внимание, что версия 1.0.0 БОЛЬШЕ, чем 1.0.0-beta.

Нестабильные версии Joomla и расширений Joomla ни в коем случае не должны использоваться на "боевых" сайтах ("на проде"). Это потенциально несет огромные риски в плане стабильности работы и наличия уязвимостей. Однако, согласно исследованию "Какую долю занимает Joomla среди ru-сайтов в 2024 году" оказалось, что существуют сайты, использующие beta-версию (от 3.7.0 до 5.1.0), а на 86 сайтах установлены RC-релизы (Release candidate). Это чревато последствиями для сайта.

Мажорная версия Joomla и расширений

Используется для первой версии и тогда, когда происходят неизбежный слом обратной совместимости. Например, новая версия переписана на новую архитектуру файлов и классов и ранее доступный для Joomla 3 модуль / плагин теперь не может с ней работать, а только с Joomla 4+. Если видим, что изменилась мажорная версия (первый разряд в версии) - сначала читаем информацию на сайте разработчика, обкладываемся бэкапами и только потом пробуем обновлять Joomla или расширения.

Минорная версия

Используется при появлении нового функционала или большого накопленного количества изменений, заметных для конечных пользователей. Например, изменение интерфейса расширения, появление новых разделов в компоненте, новых настроек и т.д. Эти обновления не должны ломать обратную совместимость. Но лучше перед обновлением ознакомиться со списком изменений. Мало ли что там...

Патч версия

Используется чаще всего. Любые небольшие изменения, исправления мелких ошибок, рефакторинг кода, поправили комментарий в PHP Doc block, изменили code style и т.д. - это патч версии. Для конечного пользователя изменения скорее всего незаметны невооружённым глазом. Обновление на эту версию не принесет проблем в виду их малого размера. Но ответственный разработчик всё равно сначала изучает changelog и обкладывается бэкапами.

Changelog

В Joomla 4 и Joomla 5, кстати, появилась кнопка "изменения". Её видно в списке доступных обновлений расширений, но только если разработчик внедрил у себя changelog url. Тогда вебмастер может непосредственно перед обновлением ознакомиться со списком изменений прямо в админке Joomla. Также changelog расширения можно увидеть в списке всех установленных расширений Joomla: Система - Управление - Расширения. У некоторых  расширений число версии является кнопкой. Нажмите её и увидите всплывающее окно, где динамически с сайта разработчика загрузится список изменений для данной версии. Вы узнаете ЧТО было добавлено, ЧТО удалено, КАКИЕ исправления ошибок и уязвимостей были сделаны и т.д.

Читать в @joomlafeed

Сергей Толкачев

Сергей Толкачев

Joomla-разработчик. Контрибьютер ядра Joomla. Муж. Отец 3 детей.

Россия, Саратов. https://web-tolk.ru info@web-tolk.ru

Статьи автора

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Логотип Joomla

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Свернуть

Коротко о главном в Joomla

Новости портала

Новое в блогах

Видео

Форум о Joomla