Satu alat baris arahan baharu bernama Shef telah mencetuskan perbahasan dalam kalangan pembangun mengenai kelebihan pendekatan berasaskan YAML untuk skrip shell. Alat tersebut, yang menerangkan dirinya sebagai alat CLI berkuasa untuk menyediakan resepi shell, menggabungkan elemen-elemen Make, GitHub Actions, dan CyberChef untuk mencipta antara muka berasaskan YAML untuk arahan shell.
Keletihan YAML Dalam Kalangan Pembangun
Respons komuniti terhadap Shef telah menunjukkan sentimen yang semakin meningkat tentang keletihan YAML DSL dalam kalangan pembangun berpengalaman. Ramai pengomen menyatakan keraguan tentang nilai membungkus arahan shell dalam satu lagi bahasa domain khusus berasaskan YAML. Perbandingan dengan percubaan sebelumnya untuk pendekatan serupa berlaku dengan segera, dengan seorang pembangun membuat persamaan dengan Maven 1 dan Apache Jelly, menggambarkan bagaimana skrip berasaskan XML sedemikian akhirnya ditinggalkan.
Saya tidak melihat kes penggunaan untuk menulis resepi dalam YAML berbanding menggunakan fungsi shell (atau Python, yang berbilang platform)... ia akan cepat berakhir menjadi bahasa pengaturcaraan pseudo tanpa manfaat sintaks komposisi yang lebih baik.
Sentimen ini bergema dalam pelbagai komen, dengan pembangun yang kerap bekerja dengan Kubernetes dan alat-alat berasaskan YAML lain menyatakan penentangan khusus terhadap penambahan lapisan YAML lain kepada aliran kerja mereka.
Skrip Shell Asli vs. Pendekatan Berstruktur
Tema utama dalam perbincangan adalah sama ada Shef menyediakan kelebihan yang cukup berbanding skrip shell tradisional untuk menjustifikasikan kewujudannya. Walaupun pencipta alat tersebut mempertahankan prompt pengguna interaktif dan ciri-ciri tambahan sebagai manfaat melebihi skrip bash asas, ramai pembangun berpendapat bahawa dengan sedikit usaha, skrip shell sebenarnya tidaklah begitu sukar.
Beberapa pengomen mencadangkan bahawa apabila skrip shell menjadi terlalu kompleks, pendekatan yang lebih baik adalah beralih kepada bahasa pengaturcaraan penuh seperti Python daripada memperkenalkan lapisan abstraksi baharu. Yang lain menunjukkan kepada alat sedia ada seperti Taskfile yang menawarkan fungsi serupa tetapi di mana pembangun sering kembali kepada arahan shell asli.
Ciri-ciri Utama Shef
- Permintaan interaktif kepada pengguna
- Menggabungkan arahan secara bersambung
- Struktur kawalan dan gelung yang kompleks
- Aliran kerja yang boleh digunakan semula dengan logik bersyarat
- Format resipi berasaskan YAML
Kebimbangan Komuniti
- YAML sebagai bahasa pengaturcaraan pseudo
- Kerumitan berbanding skrip shell biasa
- Keperluan pemasangan (pada awalnya memerlukan alat Go)
- Corak yang serupa dengan pendekatan yang pernah ditinggalkan (contohnya, Apache Jelly)
Halangan Pemasangan dan Pertimbangan Praktikal
Pelancaran awal Shef menghadapi kritikan terhadap proses pemasangannya, yang memerlukan pengguna memasang alat Go untuk mencuba perisian tersebut. Pembangun mengakui batasan ini dan segera mengemaskini projek untuk memasukkan aset binari dalam keluaran, menunjukkan tindak balas terhadap maklum balas komuniti.
Sesetengah pengguna menghargai aspek-aspek tertentu alat tersebut, seperti namanya yang bijak (permainan perkataan antara chef dan shell) dan potensi untuk menggunakan semula resepi dalam resepi lain. Seorang pengomen mencadangkan untuk menambah rakaman asciinema ke README untuk lebih menunjukkan fungsi alat tersebut, cadangan yang segera dilaksanakan oleh pembangun.
Pendekatan Alternatif
Perbincangan mengenai Shef mendorong beberapa pembangun untuk berkongsi pendekatan alternatif mereka sendiri untuk masalah serupa. Sesetengah menerangkan alat berasaskan Python yang diilhamkan oleh Ansible tetapi direka untuk operasi berskala lebih kecil. Yang lain menyebut manfaat pendekatan bertaip kuat seperti CDK berbanding kombinasi Go dan YAML.
Alternatif-alternatif ini menyerlahkan kepelbagaian pendapat tentang cara terbaik untuk mengendalikan operasi shell yang kompleks, dengan ramai pembangun lebih suka memanfaatkan bahasa pengaturcaraan sedia ada daripada mencipta bahasa domain khusus baharu.
Walaupun Shef mewakili pendekatan menarik untuk menjadikan skrip shell lebih mudah diakses dan interaktif, respons komuniti pembangun menunjukkan bahawa selera untuk penyelesaian skrip berasaskan YAML mungkin semakin berkurangan memihak kepada pendekatan pengaturcaraan yang lebih tradisional. Namun begitu, pencipta alat tersebut kekal bersemangat tentang projek ini dan responsif terhadap maklum balas, menunjukkan bahawa Shef mungkin terus berkembang berdasarkan input komuniti.
Rujukan: Shef: Alat CLI Berkuasa untuk Menyediakan Resepi Shell