Mengenal Apa Itu Semantic Versioning

 



Setiap software atau sebuah library itu pasti mengalami perubahan atau dengan kata lain mengalami sebuah revisi, dimana fitur-fitur baru akan bermunculan dan beberapa bug akan dibereskan, dan dalam dunia software development kita mengenal itu dengan nama Semantic Versioning.


Singkatnya semantic versioning merupakan sebuah penanda bahwa sebuah software sudah mengalami berapa kali perubahan dan peningkatan. Dan pertanyaannya mengapa kita harus melakukan sebuah versioning pada software kita? jawabannya sudah pasti "tidak usah ditanyakan lagi karena itu merupakan sebuah standar yang harus dijalankan tiap kali kita akan merilis atau menulis sebuah kode program"

Sebelum lanjut kepada pembahasan inti, kita harus mengetahui terlebih dahulu istilah-istilah yang ada pada semantic versioning.


Istilah dalam Semantic Versioning 

Dalam semantic versioning ada tiga istilah diantaranya yaitu ada major, minor dan juga patch.

Mari saya berikan gambarannya


3.10.2

  • Angka 3 diatas menunjukan major
  • Angka 10 diatas menunjukan minor
  • Dan angka 2 diatas menunjukan patch

Mari kita bahas satu persatu mengenai major, minor dan patch


Apa itu Major Version?

Major yang dimaksud disini tidak sama dengan major yang ada dalam pangkat di kepolisian atau yang lain ya temen-temen, major yang dimaksud disini merupakan sebuah penanda yang bisa bertambah ketika kita merubah public API yang ada pada software kita, jika major bernilai "1" maka kemungkinan software baru saja di rilis untuk pertama kalinya, tapi dengan catatan software tersebut sudah "stabil" untuk user gunakan.

Dan dalam kondisi kapan nilai major bisa bertambah? nilai major bisa bertambah ketika ada perubahan di public API nya yang mana perubahan tersebut sudah tidak mendukung pada versi sebelumnya. Dan catatan selanjutnya "jika sebuah major terbaru bergantung pada behaviour dalam versi sebelumnya maka jangan terlalu sering mengupdate sebuah major dalam versioning karena hal itu dapat membuat user harus mempelajarinya kembali dari awal".


Apa itu Minor Version?

Jika major adalah perubahan yang terjadi di public API, yang secara langsung akan mempengaruhi semua behaviour dari versi sebelumnya. Namun, minor ini berbeda dengan major, minor merupakan sebuah penanda yang jika nilainya bertambah satu maka ada fitur baru yang ditambahkan pada versi tersebut, dan hal ini sama sekali tidak mempengaruhi behaviour pada versi sebelumnya, jadi user tetap bisa nyaman dalam menggunakannya tanpa harus mempelajarinya dari awal lagi. Lalu kapan sebuah minor bisa bertambah nilainya? 

Nilai minor bisa bertambah ketika terjadi sebuah perubahan pada fitur, entah ada penambahan atau yang lainnya, dan hal ini sekaligus me-reset nilai patch menjadi 0 kembali.


Dan apa itu Patch Version?

Pada patch version ini, ia bertugas pada fix bug yang mana sama sekali tidak mempengaruhi public API dari suatu software, contohnya ketika ada bug seperti memory leak, maka versi patch harus ditambah nilainya ketika bug tersebut sudah dibereskan atau sudah fix, namun jika bug tersebut adalah hal yang sangat kecil atau tidak krusial, seperti typo dan bug kecil lainnya, hal itu tidak harus mempengaruhi nilai pada patch nya, karena hal tersebut harus dihandle dan perilisan harus disatukan dengan minor versionnya dan dianggap sebagai sebuah "fitur".





Nah lumayan rumit ya teman-teman, tapi adanya semantic versioning ini merupakan sebuah keharusan, karena hal ini sangat berguna tentunya untuk pada developers dan juga seorang users untuk mengetahui perubahan apa saja yang terjadi pada suatu aplikasi, ibaratnya semantic versioning ini merupakan sebuah "umur" jika pada manusia, dengan adanya "umur" kita jadi tahu bahwa orang tersebut "tua" atau "muda", jadi kita bisa lebih memahami bagaimana cara kita bersikap.


Setelah teman-teman mengetahui apa itu semantic versioning, pasti dari teman teman semua bertanya, "siapa yang harus melakukan pekerjaan tersebut?", sebenarnya hal tersebut bisa dilakukan oleh seorang developers-nya sendiri, namun ada juga pekerjaan yang bisa disebut "Release Engineer" yang tentu saja bertugas untuk mengatur perilisan dari software tersebut kepada users, karena yang sulit dari melakukan versioning ini adalah dibagian "strategi rilisnya".


Para developers diharuskan untuk mengerti bagaimana caranya melakukan versioning, agar versi major tidak sering melakukan bumping atau bisa dibilang "tidak seimbang", dan para developers juga harus memahami strategi dalam versioning perihal kapan ia harus merilis minor versionnya yang sangat berdampak bagi para developers, dan juga tidak terlalu sering merilis versi patch nya, karena jika nilai dari patch itu "besar" atau "tinggi" maka hal ini cukup menggambarkan bahwa software tersebut tidak dirilis dengan benar-benar matang dan penuh perhitungan terlebih dahulu.

Dan satu lagi hal yang cukup krusial tentang versioning ini adalah tentang pembuatan "catatan rilis" atau sering dikenal dengan sebutan CHANGELOG, tapi tujuannya apa? kenapa sebaiknya kita harus membuat sebuah "catatan rilis"? Karena hal ini sangat membantu seorang developers dan juga users, agar seorang user tahu alasan kenapa ia harus melakukan update pada versi tersebut, dan CHANGELOG juga sangat berguna untuk para developers agar mereka tahu history dan maksud dari tiap perubahan yang ada, karena stigma dari developers seharusnya bukan hanya tentang menulis kode dalam background hitam dan font yang warna-warni



Dari tulisan diatas, saya harap teman-teman bisa mengambil insight nya, dan saya harap juga bisa bermanfaat bagi teman-teman. Terima kasih sudah hadir and see you on the next blog


KEEP  IT STUPID TO KEEP GROWING


Author - Abdulloh Fahmi (Collage Student of STT-NF)





Komentar

Postingan Populer