Ini semata-mata tergantung pada jaminan stabilitas seperti apa yang Anda berikan kepada pengguna Anda, dan berapa banyak rasa sakit yang ingin Anda sebabkan bagi pengguna Anda.
Idealnya, API Anda menggunakan semver sehingga setiap perubahan yang melanggar menyebabkan nomor versi utama bertambah. Dalam praktiknya, diinginkan untuk melakukan ini hampir tidak pernah. Jika API Anda diinstal melalui beberapa manajer paket, Anda mungkin ingin membuat nama paket baru setelah perubahan yang melanggar sehingga peningkatan sederhana tidak menyebabkan konflik (misalnya myapi2 v2.123.4
vs myapi3 v3.2.1
). Itu mungkin tidak perlu jika manajer paket Anda mendukung dependensi versi yang lebih ketat (mis. Spesifikasi dependensi seperti ~v2.120
itu tidak termasuk v3.*
), tetapi nama paket yang berbeda memiliki keuntungan bahwa versi yang tidak kompatibel dapat digunakan berdampingan dengan sangat mudah. Bahkan ketika menggunakan semver, masuk akal untuk memiliki periode penghentian.
Semver tidak selalu berlaku. Maka lebih penting untuk mengomunikasikan kebijakan stabilitas yang jelas. Sebagai contoh:
- Fitur eksperimental dapat dihapus tanpa pemberitahuan.
- Fitur dapat dihapus karena alasan keamanan kapan saja.
- Fitur lain hanya akan dihapus
- ... setelah tidak digunakan lagi dalam versi yang dirilis
- ... di mana versi itu setidaknya berusia tiga bulan
- ... dan akan ditandai dengan tonjolan di versi utama.
Kebijakan seperti itu bekerja sangat baik ketika Anda memiliki rilis reguler sehingga ada periode penghentian yang jelas, misalnya satu tahun.
Selain menandai bagian mana pun dari API yang sudah usang, Anda harus membuat penghentian tersebut diketahui secara luas. Sebagai contoh:
- Miliki bagian di changelog Anda tentang arah dan penghentian di masa mendatang.
- Siarkan niat Anda untuk berhenti sebelum melakukan penghentian, dan dengarkan komunitas untuk melihat apakah ada keberatan yang substansial.
- Komunikasikan manfaat apa yang akan datang dari perubahan ini. Tergantung pada basis pengguna Anda, buletin, presentasi, posting blog, atau siaran pers mungkin merupakan media yang sesuai. Memiliki putaran “kami menciptakan fitur baru yang luar biasa! (yang mengharuskan fitur lama yang banyak digunakan ini untuk dihapus) ”sedikit lebih membuat frustrasi daripada menghapus fitur tanpa konteks.
Adapun periode penghentian tepat untuk memilih, pertama-tama lihat apakah Anda harus menghormati kontrak dukungan dengan pengguna Anda. Kontrak semacam itu mungkin mengharuskan Anda untuk mempertahankan kompatibilitas untuk beberapa periode. Jika tidak, pertimbangkan dampak hilir apa pun. Cobalah untuk berubah lebih cepat daripada pengguna hilir sehingga mereka dapat melalui siklus penghentian mereka sendiri. Pengguna hilir akan membutuhkan waktu untuk beradaptasi dengan perubahan Anda, jadi Anda seharusnya tidak pernah memiliki periode penghentian yang lebih pendek dari sebulan.