Версіонування Yii
=================

Цей документ описує політику призначення версій Yii. Поточна стратегія призначення версій
базується на [ferver](https://github.com/jonathanong/ferver), це за думкою розробників є більш практичним
та розумним рішенням, ніж використання [semver](https://semver.org/) (див. [#7408](https://github.com/yiisoft/yii2/issues/7408) для довідки).

У колі головних розробників неодноразово підкреслювалась важливість зберігати зворотну сумісність релізів 2.0.x на 100%.
Але це ідеалістичний план. Стаття про ferver доводить, що досягнути цього на практиці дуже важко,
не зважаючи на те, використовується semver чи ні.

Загалом, політика призначення версій наступна:

## Патч-релізи `2.x.Y`

Патч-релізи, які мають бути на 100% зворотно сумісними. В ідеалі, вони містять лише виправлення помилок, що зменшує
можливість порушення зворотної сумісності. На практиці, релізи починаючи з 2.0.x стали частішими та зазвичай містять невеликі доповнення,
що дає можливість користувачам почати використовувати ці зміни раніше.

* Підтримуються у гілці `2.x`
* Переважно містять виправлення помилок та невеликі покращення
* Відсутні великі зміни та доповнення
* 100%-ва зворотна сумісність, що гарантує оновлення без проблем. Виключенням можуть бути лише проблеми безпеки, які потребують порушення зворотної сумісності
* Цикл релізу близько 1-2 місяців
* Не має необхідності у пре-релізах (альфа, бета, реліз-кандидат)
* Регулярно обʼєднуються з головною (master) гілкою (щонайменш раз у тиждень вручну)


## Молодші (мінорні) релізи `2.X.0`

Зворотно несумісні релізи, що містять великі доповнення та зміни, які можуть порушувати зворотну сумісність. Оновлення з ранніх версій
може бути не простим, але у наявності повна інструкція по оновленню або навіть скрипт.

* Розроблюються у головній (майстер) гілці
* Переважно містять нові доповнення та виправлення помилок
* Містять невеликі доповнення та виправлення помилок з патч-релізів
* Можуть мати зворотно несумісні зміни, які записуються у файл `UPGRADE-2.X.md`
* Цикл релізу близько 6-8 місяців
* Необхідні пре-релізи: `2.X.0-alpha`, `2.X.0-beta`, `2.X.0-rc`
* Потребують маркетингових зусиль та публікування у головних новинах


## Основні (мажорні) релізи `X.0.0`

Це наче 2.0 після 1.0. Такий перехід, вірогідніше, буде не частіше ніж кожні 3-5 років, у звʼязку з просуванням сторонніх технологій
(наприклад, оновлення PHP з 5.0 до 5.4).

> Примітка: Офіційні розширення використовують таку ж саму політику призначення версій, але можуть публікуватись незалежно від
фреймворку, тобто номера версій фреймворку та розширення не повинні обовʼязково збігатися.
