Sebuah tool baru berbasis Python bernama mblike telah muncul untuk mengatasi tantangan lama dalam memformat Makefile secara konsisten. Tool ini menjanjikan untuk memformat Makefile secara otomatis sesuai dengan praktik terbaik komunitas, namun peluncurannya telah memicu diskusi sengit tentang pendekatan teknis dan pilihan implementasinya.
Opsi Instalasi:
- PyPI:
pip install mblike
- Ekstensi VSCode: Cari "Makefile Formatter" di Extensions
- Dari Source: Clone dari GitHub dan jalankan
make install
Kontroversi Deklarasi .PHONY
Perdebatan paling panas berpusat pada pendekatan mblike dalam mengonsolidasikan deklarasi .PHONY. Tool ini mengelompokkan beberapa target .PHONY ke dalam deklarasi tunggal, namun banyak developer sangat menentang praktik ini. Para kritikus berpendapat bahwa deklarasi .PHONY harus tetap berdekatan dengan target yang sesuai untuk keterbacaan dan kemudahan pemeliharaan yang lebih baik. Ketidaksepakatan fundamental ini menyoroti perpecahan filosofis yang lebih dalam dalam komunitas Makefile tentang prinsip-prinsip organisasi kode.
Kontroversi ini meluas melampaui preferensi formatting semata. Beberapa developer memandang konsolidasi sebagai anti-fitur yang bertentangan dengan konvensi Makefile yang sudah mapan. Namun, tool ini menawarkan opsi konfigurasi untuk menonaktifkan perilaku ini, memungkinkan pengguna mempertahankan gaya yang mereka sukai sambil mendapat manfaat dari fitur formatting lainnya.
Opsi Konfigurasi:
{
use_tabs: true,
tab_width: 1,
space_around_assignment: true,
space_around_colon: true,
insert_missing_phony: true,
remove_trailing_whitespace: true,
group_phony_declarations: false // Dapat menonaktifkan konsolidasi
}
Implementasi Python Menuai Reaksi Beragam
Pilihan untuk mengimplementasikan mblike dalam Python telah menghasilkan diskusi signifikan tentang distribusi tool dan performa. Meskipun Python menawarkan kemampuan manipulasi string yang sangat baik dan komunitas developer yang besar, para kritikus menunjuk pada kompleksitas instalasi dan masalah manajemen dependensi. Tool ini memerlukan instalasi pip, yang secara otomatis mengecualikan banyak pengguna potensial yang tidak memiliki tool manajemen paket Python yang tersedia.
Kekhawatiran performa juga muncul dalam diskusi komunitas, dengan beberapa developer mencatat bahwa tool berbasis Python seperti yamllint dapat menambah penundaan yang terasa dalam alur kerja pengembangan. Ini menjadi sangat bermasalah untuk alur kerja format-on-save di mana setiap milidetik sangat berarti. Meskipun ada keterbatasan ini, para pendukung berpendapat bahwa keberadaan Python yang ada di mana-mana dan kemudahan pengembangan lebih besar daripada kekurangannya untuk sebagian besar kasus penggunaan.
Make sebagai Task Runner Memicu Diskusi yang Lebih Luas
Peluncuran tool ini juga telah memicu kembali perdebatan tentang peran Make dalam pengembangan modern. Meskipun Make awalnya dirancang untuk manajemen dependensi file berdasarkan tanggal modifikasi, banyak developer sekarang menggunakannya sebagai task runner serbaguna. Evolusi ini telah menciptakan ketegangan antara puritan yang lebih suka Make untuk tujuan yang dimaksudkan dan pragmatis yang menghargai keberadaannya yang universal dan kesederhanaannya.
Make ada dalam POSIX, jadi umumnya tersedia. Alasan yang sama mengapa orang menulis shell script.
Diskusi ini mengungkapkan bahwa banyak developer menghargai ketersediaan universal Make daripada task runner yang lebih khusus, bahkan ketika mengakui keterbatasannya untuk alur kerja yang kompleks.
Aturan Pemformatan Utama:
- Indentasi: Menerapkan 1 tab sebagai pengganti spasi
- Operator penugasan: Menormalisasi spasi di sekitar
=
,:=
,::=
- Target titik dua: Mengatur spasi di sekitar titik dua dependensi
- Spasi di akhir baris: Menghapus spasi yang tidak perlu di akhir baris
- Deklarasi .PHONY: Mengelompokkan dan mengonsolidasikan deklarasi (dapat dikonfigurasi)
Fitur Deteksi Cerdas Menunjukkan Potensi
Meskipun ada kontroversi, kemampuan deteksi .PHONY cerdas mblike telah menarik minat. Tool ini menggunakan analisis dinamis untuk mengidentifikasi target phony yang hilang dengan memeriksa perintah recipe daripada mengandalkan konvensi penamaan. Pendekatan ini dapat secara otomatis mendeteksi target yang melakukan tindakan seperti menjalankan perintah Docker atau mengeksekusi script pembersihan, berpotensi menghemat waktu developer dan mengurangi kesalahan.
Tool ini juga menawarkan aturan formatting komprehensif untuk indentasi, spasi, dan penanganan kelanjutan baris. Fitur-fitur ini mengatasi masalah umum dalam pemeliharaan Makefile, bahkan jika konsolidasi .PHONY tetap kontroversial.
Respons komunitas terhadap mblike mencerminkan ketegangan yang lebih luas dalam pengembangan perangkat lunak antara otomatisasi dan kontrol manual, antara kenyamanan dan performa, dan antara praktik yang sudah mapan dan pendekatan baru. Meskipun tool ini mungkin tidak memuaskan preferensi semua orang, ini merupakan langkah lain dalam evolusi berkelanjutan tool pengembangan untuk salah satu sistem build yang paling bertahan lama dalam komputasi.
Referensi: mblike