Kenapa aplikasi butuh versioning?
Versioning biasanya dibutuhkan setiap kali merilis aplikasi atau software. Tujuannya adalah agar para pengguna tahu pada tahap atau versi berapa aplikasi yang sedang dipakai.
Nah salah satu tipe versioning yang sering dipakai dan mudah dimengerti adalah Sematic Versioning.
Daftar Isi
Versioning tidak sekedar menambahkan versi dalam sebuah software, tapi bisa juga digunakan untuk menandai fitur-fitur apa saja yang sudah ditambah maupun bug fix apa saja yang sudah dikerjakan.
Apa itu sematic versioning?
Jika kamu perhatikan release tag dari framework laravel di pada gambar di atas, kamu akan melihat angka-angka yang dipisahkan oleh titik bukan?
Contohnya: 6.0.4
Bisa dituliskan Major.Minor.Patch
- Major Rilis: Angka yang paling kiri, dimana nilainya +1 jika update yang dilakukan bisa merusak atau tidak cocok dengan versi major sebelumnya.
- Minor Rilis: Angka yang tengah-tengah. Digunakan jika ada update atau fitur baru yang tidak berpengaruh terhadap flow software secara besar.
- Patches or bug fixes: Angka yang paling kiri, digunakan untuk mencatat jika ada bug fix atau patch baru.
Jadi pada tahap awal pengembangan sebuah produk. pasti versionnya akan dimulai dari 0.1.0 bukan 0.0.1 ya.
Jika ada update fix bug dan patch, versionnya hanya diupdate yang paling kiri jadi misalnya versinya menjadi 0.1.1, 0.1.2 dan seterusnya.
Jika ada update fitur maka kamu bisa mengupdate angka yang tengah-tengah + 1 menjadi 0.2.0. Jadi patch/bug fixnya akan direset lagi menjadi 0.
Jika kamu sudah yakin untuk merilis versi pertama dari aplikasi kamu, maka bisa mulai untuk publish major release dengan dimulai dari versi 1.0.0
Mudah bukan?
Lalu apa best practice dalam membuat version control?
Beberapa mungkin sudah saya sebutkan diatas. tapi kita akan rangkum semuanya.
1. Selalu mulai dari versi 0.1.0
Karena awal dari sebuah software adalah kumpulan dari beberapa fungsi maka versi awal adalah 0.0.1. Misalnya versi awal adalah 0.0.1 maka itu kumpulan bug fix bukan?
2. Selalu buat release note atau CHANGELOG atau dokumentasi.
Kenapa? Meskipun membuat dokumentasi dari setiap rilis itu melelahkan, tapi percayalah, kamu pasti tidak akan ingat dari setiap rilis tersebut tentang apa.
Jadi kamu dan orang lain dalam tim ataupun user produk kamubisa tahu informasi tentang release terbaru. Kamu bisa dengan mudah juga mengecek tentang apa rilis yang sudah lewat.
Masih males juga? Untuk mempermudah pembuatan changelog, saya rekomendasikan menggunakan https://keepachangelog.com/en/1.0.0/
3. Kumpulkan feedback dari setiap tahapan rilis.
Feedback dari user sangat penting. Kenapa?
Meskipun kamu sudah melakukan testing sebelum rilis, tarkadang user bisa saja menemukan bug. Jadi dengan feedback kamu bisa memperbaiki dan menemukan cakupan bug yang lebih luas.
Kesimpulan
Sematic Versioning walau hanya sekedar penomoran, tapi jika kamu mengikuti aturan ini tentu membuat proses development menjadi lebih rapi dan tercatat di masing-masing release, update ataupun bug fix. Juga memberikan informasi yang jelas kepada user.
Sudah siap mengimplementasikan Sematic Versioning sekarang?
Referensi:
https://semver.org/
https://medium.com/@jameshamann/a-brief-guide-to-semantic-versioning-c6055d87c90e
Bonus video tentang Sematic Versioning.