Perdebatan yang semakin berkembang dalam komuniti pembangun telah muncul mengenai di mana alat baris arahan sepatutnya menyimpan fail konfigurasi mereka pada macOS. Banyak perpustakaan pengaturcaraan popular secara salah meletakkan fail konfigurasi CLI dalam ~/Library/Application Support, menyebabkan kekecewaan di kalangan pembangun yang mengharapkan fail-fail ini mengikut Spesifikasi Direktori Asas XDG dan berada dalam ~/.config.
Isu ini berpunca daripada perpustakaan yang digunakan secara meluas yang menentukan direktori konfigurasi khusus platform. Pakej platformdirs Python (242 juta muat turun bulanan), env-paths JavaScript (95 juta muat turun bulanan), crate dirs Rust (4.8 juta muat turun bulanan), dan pakej adrg/xdg Go semuanya secara lalai menggunakan ~/Library/Application Support pada macOS. Ini menjejaskan beratus-ratus alat baris arahan yang bergantung pada perpustakaan ini untuk pengurusan konfigurasi.
Perpustakaan Popular Yang Menggunakan Direktori Yang Salah:
- Python's platformdirs : 242 juta muat turun/bulan
- JavaScript's env-paths : 95 juta muat turun/bulan
- Rust's dirs crate : 4.8 juta muat turun/bulan
- Go's adrg/xdg package : digunakan dalam 913 pakej
Punca Masalah
Kekeliruan timbul daripada salah tafsir terhadap garis panduan Direktori Standard macOS Apple. Garis panduan ini secara khusus merujuk kepada aplikasi - yang pada macOS bermaksud Berkas Aplikasi dengan sambungan .app, pengecam berkas, dan keperluan pemasangan khusus. Alat baris arahan pada asasnya berbeza daripada aplikasi dan tidak memiliki ciri-ciri ini.
Dokumentasi Apple dengan jelas menyatakan bahawa Application Support sepatutnya mengandungi fail yang dicipta dan diuruskan oleh aplikasi bagi pihak pengguna dan sepatutnya diatur menggunakan pengecam berkas. Memandangkan alat CLI tidak mempunyai pengecam berkas dan fail konfigurasi mereka biasanya disunting secara manual oleh pengguna, mereka tidak sesuai dengan kategori ini.
Jangkaan Pembangun Berbanding Realiti
Kekecewaan komuniti jelas kelihatan dalam perbincangan berterusan mengenai perpustakaan popular. Pembangun Rust telah berulang kali meminta perubahan kepada crate dirs, tetapi penyelenggara enggan mengakomodasi standard XDG pada macOS. Ini telah menyebabkan sesetengah pembangun meninggalkan perpustakaan tersebut sepenuhnya, mencipta penyelesaian khusus yang melaksanakan spesifikasi XDG dengan betul merentas platform.
Sebagai pengguna baharu, sangat mengejutkan bagi saya bahawa alat moden seperti nu akan meletakkan fail konfigurasi di bawah Application Support pada macOS. Lebih mengejutkan lagi melihat bahawa sesetengah orang secara aktif menentang penggunaan standard XDG.
Jangkaan untuk ~/.config bukanlah sewenang-wenangnya - ia berdasarkan konsistensi dengan sistem seperti Unix yang lain dan fakta bahawa macOS adalah sistem pengendalian Unix yang diperakui. Malah alat baris arahan Apple sendiri seperti bash, zsh, git, dan vim mengikut konvensyen Unix tradisional untuk penempatan fail konfigurasi.
Pengurus Dotfile Mendedahkan Keutamaan Pengguna
Alat pengurusan dotfile popular memberikan pandangan tentang tingkah laku pengguna sebenar. Alat seperti chezmoi (14.3k bintang GitHub), dotbot (7.3k bintang), dan yadm (5.5k bintang) tidak berusaha untuk menyokong ~/Library/Application Support secara lalai, walaupun termasuk konfigurasi khusus macOS. Ini menunjukkan bahawa pengguna terutamanya mengharapkan dan menguruskan konfigurasi CLI mereka di lokasi Unix standard.
Bintang GitHub Pengurus Dotfile:
- chezmoi: 14.3k bintang
- dotbot: 7.3k bintang
- yadm: 5.5k bintang
- rcm: 3.2k bintang
Penyelesaian XDG
Spesifikasi Direktori Asas XDG menawarkan penyelesaian yang bersih yang berfungsi merentas sistem seperti Unix, termasuk macOS. Ia menyediakan lokasi piawai untuk konfigurasi ($XDG_CONFIG_HOME), cache ($XDG_CACHE_HOME), dan fail data, dengan lalai yang munasabah apabila pembolehubah persekitaran tidak ditetapkan.
Sesetengah pembangun telah menemui penyelesaian dengan menggunakan perpustakaan alternatif seperti crate etcetera dalam Rust, yang menggunakan standard XDG pada kedua-dua Linux dan macOS secara lalai. Yang lain telah mencipta pelaksanaan khusus yang menghormati pembolehubah persekitaran XDG apabila ia ditetapkan, memberikan pengguna kawalan ke atas penempatan konfigurasi mereka.
Penggunaan Direktori Konfigurasi yang Betul:
- Alat CLI: Patut menggunakan
~/.config(spesifikasi XDG) - Aplikasi GUI dalam /Applications: Boleh menggunakan
~/Library/Application Support - Keutamaan macOS: Patut menggunakan
~/Library/Preferencesdengan API NSDefaults
Bergerak Ke Hadapan
Penyelesaiannya tidak kompleks - alat baris arahan sepatutnya mengikut spesifikasi XDG, secara lalai menggunakan ~/.config untuk fail konfigurasi pada sistem seperti Unix termasuk macOS. Untuk aplikasi GUI yang dipasang dalam /Applications yang menguruskan konfigurasi secara automatik, ~/Library/Application Support kekal sesuai.
Perdebatan ini menyerlahkan isu yang lebih luas dalam pembangunan merentas platform: kepentingan memahami garis panduan khusus platform dalam konteks yang betul daripada membuta tuli mengaplikasikannya kepada semua jenis perisian. Memandangkan komuniti pembangun terus mendesak untuk konsistensi dan lalai yang mesra pengguna, penyelenggara perpustakaan mungkin perlu mempertimbangkan semula pelaksanaan semasa mereka untuk melayani keperluan sebenar pengguna mereka dengan lebih baik.
Rujukan: macOS dotfiles should not go in ~/Library/Application Support
