Це залежить виключно від того, яку стабільність ви гарантуєте своїм користувачам, і скільки болю ви хочете заподіяти своїм користувачам.
В ідеалі ваш API використовує semver, так що будь-яка зміна приводить до збільшення номера основної версії. На практиці бажано робити це майже ніколи. Якщо ваш API встановлено через якийсь менеджер пакунків, вам, можливо, захочеться створити нове ім'я пакета після перервної зміни, щоб просте оновлення не викликало конфліктів (наприклад, myapi2 v2.123.4
проти myapi3 v3.2.1
). Це може бути непотрібним, якщо ваш менеджер пакунків підтримує жорсткіші залежності версій (наприклад, специфікація залежності, така ~v2.120
, яка не включає v3.*
), але різні назви пакунків мають перевагу в тому, що несумісні версії можуть бути використані поруч дуже легко. Навіть при використанні semver може бути розумним період депресії.
Semver застосовується не завжди. Тоді важливіше повідомляти чітку політику стабільності. Наприклад:
- Експериментальні особливості можуть бути видалені без попереднього повідомлення.
- Особливості можуть бути видалені з міркувань безпеки в будь-який час.
- Інші функції будуть видалені лише
- … Після того, як було вимкнено у випущеній версії
- … Де цій версії принаймні три місяці
- … І буде позначено шишкою в основній версії.
Така політика працює особливо добре, коли у вас є регулярні випуски, щоб був чіткий термін депресії, наприклад, один рік.
Окрім позначення будь-яких частин API як застарілих, вам слід зробити депрекацію широко відомою. Наприклад:
- Майте у своєму журналі змін розділ про майбутні вказівки та анулювання.
- Передайте свій намір зняти з ладу перед тим, як здійснити депресію, і слухайте спільноту, щоб побачити, чи є суттєві заперечення.
- Повідомте, які вигоди будуть мати ці зміни. Залежно від вашої бази користувачів, інформаційні бюлетені, презентації, дописи в блогах або прес-релізи можуть бути відповідними засобами масової інформації. Закрутившись "ми створюємо дивовижну нову функцію! (для цього потрібно видалити цю широко використовувану стару функцію) "трохи менше неприємно, ніж видалення функції без контексту.
Що стосується точного терміну амортизації, який слід вибрати, то спочатку подивіться, чи потрібно виконувати будь-які договори про підтримку з вашими користувачами. Такі договори можуть вимагати збереження сумісності протягом певного періоду. Якщо ні, врахуйте будь-який вплив за течією. Постарайтеся змінитись менш швидко, ніж наступні користувачі, щоб вони могли пройти власний цикл анулювання. Користувачам, які перебувають у нижній частині мережі, знадобиться деякий час, щоб адаптуватися до ваших змін, тому ви ніколи не повинні мати амортизаційний період, менший за місяць.