Library Pemrograman Populer Salah Mengartikan Panduan macOS, Memaksa Tools CLI ke Direktori yang Salah

Tim Komunitas BigGo
Library Pemrograman Populer Salah Mengartikan Panduan macOS, Memaksa Tools CLI ke Direktori yang Salah

Sebuah perdebatan yang berkembang dalam komunitas developer telah muncul mengenai di mana tools command-line seharusnya menyimpan file konfigurasi mereka di macOS. Banyak library pemrograman populer secara keliru menempatkan file konfigurasi CLI di ~/Library/Application Support, menyebabkan frustrasi di antara developer yang mengharapkan file-file ini mengikuti XDG Base Directory Specification dan berada di ~/.config.

Masalah ini berasal dari library yang banyak digunakan yang menentukan direktori konfigurasi khusus platform. Package platformdirs Python (242 juta unduhan bulanan), env-paths JavaScript (95 juta unduhan bulanan), crate dirs Rust (4,8 juta unduhan bulanan), dan package adrg/xdg Go semuanya default ke ~/Library/Application Support di macOS. Ini mempengaruhi ratusan tools command-line yang bergantung pada library-library ini untuk manajemen konfigurasi.

Pustaka Populer yang Menggunakan Direktori yang Salah:

  • platformdirs Python: 242 juta unduhan/bulan
  • env-paths JavaScript: 95 juta unduhan/bulan
  • dirs crate Rust: 4,8 juta unduhan/bulan
  • paket adrg/xdg Go: digunakan dalam 913 paket

Akar Masalah

Kebingungan ini muncul dari salah interpretasi terhadap panduan macOS Standard Directories Apple. Panduan-panduan ini secara khusus merujuk pada apps - yang di macOS berarti Application Bundles dengan ekstensi .app, bundle identifier, dan persyaratan instalasi khusus. Tools command-line secara fundamental berbeda dari apps dan tidak memiliki karakteristik-karakteristik ini.

Dokumentasi Apple dengan jelas menyatakan bahwa Application Support harus berisi file-file yang dibuat dan dikelola apps atas nama pengguna dan harus diorganisir menggunakan bundle identifier. Karena tools CLI tidak memiliki bundle identifier dan file konfigurasi mereka biasanya diedit manual oleh pengguna, mereka tidak cocok untuk kategori ini.

Ekspektasi Developer vs Realita

Frustrasi komunitas terlihat jelas dalam diskusi yang sedang berlangsung seputar library-library populer. Developer Rust telah berulang kali meminta perubahan pada crate dirs, tetapi maintainer menolak untuk mengakomodasi standar XDG di macOS. Ini telah menyebabkan beberapa developer meninggalkan library tersebut sepenuhnya, menciptakan solusi kustom yang dengan benar mengimplementasikan spesifikasi XDG lintas platform.

Sebagai pengguna baru, sangat mengejutkan bagi saya bahwa tools modern seperti nu akan menempatkan file konfigurasi di bawah Application Support di macOS. Bahkan lebih mengejutkan lagi melihat bahwa beberapa orang secara aktif menentang adopsi standar XDG.

Ekspektasi untuk ~/.config bukanlah hal yang sembarangan - ini berdasarkan konsistensi dengan sistem Unix-like lainnya dan fakta bahwa macOS adalah sistem operasi Unix bersertifikat. Bahkan tools command-line Apple sendiri seperti bash, zsh, git, dan vim mengikuti konvensi Unix tradisional untuk penempatan file konfigurasi.

Dotfile Manager Mengungkap Preferensi Pengguna

Tools manajemen dotfile populer memberikan wawasan tentang perilaku pengguna yang sebenarnya. Tools seperti chezmoi (14,3k bintang GitHub), dotbot (7,3k bintang), dan yadm (5,5k bintang) tidak berusaha mendukung ~/Library/Application Support secara default, meskipun menyertakan konfigurasi khusus macOS. Ini menunjukkan bahwa pengguna terutama mengharapkan dan mengelola konfigurasi CLI mereka di lokasi Unix standar.

Bintang GitHub Manajer Dotfile:

  • chezmoi: 14.3k bintang
  • dotbot: 7.3k bintang
  • yadm: 5.5k bintang
  • rcm: 3.2k bintang

Solusi XDG

XDG Base Directory Specification menawarkan solusi yang bersih yang bekerja lintas sistem Unix-like, termasuk macOS. Ini menyediakan lokasi standar untuk konfigurasi ($XDG_CONFIG_HOME), cache ($XDG_CACHE_HOME), dan file data, dengan default yang masuk akal ketika variabel environment tidak diatur.

Beberapa developer telah menemukan solusi dengan menggunakan library alternatif seperti crate etcetera di Rust, yang menggunakan standar XDG di Linux dan macOS secara default. Yang lain telah menciptakan implementasi kustom yang menghormati variabel environment XDG ketika diatur, memberikan pengguna kontrol atas penempatan konfigurasi mereka.

Penggunaan Direktori Konfigurasi yang Benar:

  • Tools CLI: Harus menggunakan ~/.config (spesifikasi XDG)
  • Aplikasi GUI di /Applications: Dapat menggunakan ~/Library/Application Support
  • Preferensi macOS: Harus menggunakan ~/Library/Preferences dengan API NSDefaults

Bergerak Maju

Solusinya tidak kompleks - tools command-line harus mengikuti spesifikasi XDG, default ke ~/.config untuk file konfigurasi di sistem Unix-like termasuk macOS. Untuk aplikasi GUI yang diinstal di /Applications yang mengelola konfigurasi secara otomatis, ~/Library/Application Support tetap sesuai.

Perdebatan ini menyoroti masalah yang lebih luas dalam pengembangan lintas platform: pentingnya memahami panduan khusus platform dalam konteks yang tepat daripada secara membabi buta menerapkannya pada semua jenis perangkat lunak. Saat komunitas developer terus mendorong konsistensi dan default yang ramah pengguna, maintainer library mungkin perlu mempertimbangkan kembali implementasi mereka saat ini untuk melayani kebutuhan aktual pengguna mereka dengan lebih baik.

Referensi: macOS dotfiles should not go in ~/Library/Application Support