TL; DR: SDKMAN CLI akan ditulis ulang di GolangEnam tahun telah berlalu sejak kami merilis versi pertama SDKMAN. Dalam versi sebelumnya, itu dikenal sebagai GVM dan digunakan untuk mengelola Groovy dan alat terkait. Segera menjadi jelas bahwa itu tidak harus terbatas pada ekosistem Groovy, dan juga dapat diterapkan pada SDK JVM lainnya. Pada titik ini, GVM diubah namanya menjadi SDKMAN. Meskipun namanya telah berubah, teknologi intinya tetap sama.
Sama seperti GVM yang dulu mengungguli namanya, SDKMAN mengungguli teknologi tempat ia dibangun. Terlepas dari kenyataan bahwa layanan backend telah diganti dengan alternatif yang lebih baik, klien CLI tetap sama dan telah menjadi sumber kekecewaan terbesar kami.
Pada awalnya, kami memilih Bash untuk membuat GVM karena mencakup semua persyaratan. Itu tersedia di semua sistem * nix, ia bekerja dengan cepat dan memberi kami lingkungan runtime tanpa ketergantungan atau overhead tambahan. Ini berarti bahwa mengunduh instalasi baru praktis tidak mudah di hampir semua sistem.
Terlepas dari manfaat yang diberikan Bash kepada kami, seiring waktu, kami menemukan banyak masalah dengan pilihan ini:
- Pengguna Windows harus melewati rintangan dengan menginstal Cygwin / Git Bash
- perangkat lunak kami tidak selalu bekerja dengan baik dengan cangkang alternatif seperti cangkang ikan
- peretasan khusus harus didukung untuk kompatibilitas dengan ZSH
- ketidakcocokan antara versi utama Bash (dan penolakan keras kepala Apple untuk mengirim OSX dengan versi modern Bash karena masalah lisensi yang konyol)
- masalah jaringan karena menggunakan curl sebagai klien http utama
- kesulitan dengan pengujian kode Bash yang efektif
Semua ini memberi tahu kita sudah saatnya untuk berhenti dari Bash demi sesuatu yang lain, jadi dalam beberapa bulan terakhir saya mulai belajar Go sebagai alternatif yang layak. Setelah mempertimbangkan peluang, pro dari implementasi CLI on Go dapat diringkas sebagai berikut:
- dikompilasi secara statis dikompilasi bahasa untuk mendeteksi kesalahan selama pengembangan
- sangat cepat
- tidak lagi kecanduan bash tanah gemetar di bawah kaki
- menciptakan binari yang dikompilasi secara asli untuk semua arsitektur, menghilangkan efek samping terkait platform yang tak terduga
- dukungan yang lebih mudah untuk pengujian penerimaan melalui Godog (versi Mentimun ditulis dalam Go)
- memungkinkan Anda untuk memikirkan kembali beberapa perilaku implementasi SDKMAN saat ini (lebih lanjut tentang ini nanti)
- Meningkatkan masukan kolaborasi dan komunitas
- sederhana dan mari kita lakukan pekerjaan sialan ini (Get Shit Done)
Memahami semua ini, saya memutuskan untuk membangun versi
pertama dari antarmuka SDKMAN CLI yang berfungsi . Setelah menyelesaikan pekerjaan ini, versi baru akan menjadi versi standar SDKMAN. Tentu saja, ini juga memungkinkan kita untuk mempertimbangkan kembali bagaimana fungsinya saat ini. Enam tahun kemudian, kami belajar bahwa itu berhasil dan tidak berhasil, dan kami dapat membawa pengetahuan ini ke pikiran dalam versi baru kami yang brilian.
Di sini kami mendorong komunitas kami untuk bergabung dan menjadi bagian dari komunikasi. Kami ingin tahu fitur apa yang ingin Anda lihat (atau tidak mau). Untuk melakukan ini, kami membuka kamar baru di
Gitter . Kami mengundang Anda untuk bergabung dan berpartisipasi dengan memberikan umpan balik pada CLI baru. Kami masih menggunakan Mentimun untuk menggambarkan perilaku dalam bahasa yang dapat dimengerti dengan cara yang sama seperti dengan versi Bash, dan kami meminta semua orang untuk berpartisipasi dalam implementasi setiap fungsi. Seperti sebelumnya, kami ingin
fungsi-fungsi ini menjadi dokumentasi langsung.
Itu sebabnya saya menyebut posting ini seperti itu. Kami suka mengembangkan versi asli SDKMAN, tetapi kami menyadari bahwa itu memiliki masalah. Sekarang kami memiliki kesempatan untuk membuatnya lebih andal dan meningkatkannya untuk semua orang. Kami akan senang atas bantuan apa pun dalam perjalanan menuju implementasi CLI baru!
Dari penerjemah: SDKMAN adalah salah satu manajer paket favorit saya, ia mulai menginstal JVM, Gradle dan Kotlin pada mesin baru. Itulah sebabnya, baru-baru ini, kami di CUBA Platform mulai menerbitkan utilitas CUBA CLI kami di SDKMAN. Saya membuat terjemahan ini karena saya senang melihat perkembangan SDKMAN dan saya menantikan versi barunya.