3 poin oleh GN⁺ 2024-07-04 | 1 komentar | Bagikan ke WhatsApp
  • .DS_Store adalah singkatan dari Desktop Services Store, yang muncul saat Finder untuk Mac OS X dibuat ulang pada 1999
  • Saat itu basis kode Finder sudah berusia sekitar 8 tahun, sehingga perubahan kecil pun memerlukan biaya besar dan bisa merusak fitur yang tampaknya tidak terkait, sehingga diperlukan penulisan ulang total
  • Finder baru memisahkan antarmuka pengguna dan backend, dan backend menangani metadata seperti enumerasi file, pemantauan perubahan, posisi ikon, dan pengaturan folder
  • Backend Finder menjadi kandidat API publik yang dapat digunakan di luar Finder, dan bersama rencana mengubah nama Finder menjadi “Desktop”, muncullah nama Desktop Services
  • .DS_Store awalnya seharusnya hanya dibuat saat pengaturan tampilan atau posisi ikon diubah, tetapi karena bug, file ini sering dibuat hanya dengan mengunjungi folder

Lahirnya nama Desktop Services Store

  • Pada 1999, saat Apple membuat ulang Finder untuk Mac OS X, basis kode Finder lama sudah berusia sekitar 8 tahun
    • Perubahan memerlukan upaya rekayasa yang besar
    • Perubahan biasanya merusak 2~3 fitur yang tampaknya tidak terkait
    • Diputuskan bahwa Finder untuk Mac OS X harus ditulis ulang dari awal
  • Dalam proses penulisan ulang, antarmuka pengguna Finder dipisahkan dari backend fungsi inti
    • Nama internalnya masing-masing adalah Finder_FE dan Finder_BE
    • Backend bertanggung jawab atas enumerasi file, pemantauan perubahan sistem file, pemrosesan metadata, posisi ikon, dan pengaturan folder
  • Backend Finder dinilai bisa berguna juga di luar Finder, sehingga muncul rencana untuk suatu hari menyediakannya sebagai API publik
    • Berdasarkan pengalaman sebelumnya memberi nama Icon Services dan Navigation Services, dipilihlah nama Desktop Services
    • Saat itu juga sedang dipertimbangkan rencana mengganti nama Finder menjadi “Desktop”
    • .DS_Store berasal dari nama “Desktop Services Store”
    • Tanda . di depan dipilih agar diperlakukan sebagai file tak terlihat di OS keluarga Unix dan Mac OS

Kondisi pembuatan dan dampak setelahnya

  • Namanya mungkin saja bisa dibuat lebih deskriptif, tetapi setelah telanjur digunakan luas, menjadi sulit untuk mengubahnya
  • File .DS_Store awalnya seharusnya hanya dibuat ketika pengguna menyesuaikan pengaturan tampilan folder atau menetapkan posisi ikon secara manual
    • Namun, karena bug yang tidak pernah diperbaiki, file ini dibuat secara berlebihan
    • Dalam praktiknya, hampir dapat dipastikan bahwa .DS_Store akan dibuat hanya dengan mengunjungi folder
  • Finder_BE, yaitu Desktop Services, juga digunakan di luar Finder
    • Navigation Services, yaitu dialog buka/simpan, kemudian ikut menggunakannya
    • Pada rilis awal Mac OS, Navigation Services belum menggunakannya
    • Desktop Services API masih belum sepenuhnya dipublikasikan

1 komentar

 
GN⁺ 2024-07-04
Opini Hacker News
  • Selain berkas ini, ada juga momen yang membingungkan karena konsep fork pada sistem berkas Mac
    Fork di sini bukan fork(), melainkan struktur dalam sistem berkas di mana komponen data dan komponen resource hadir berpasangan; yang satu diperlakukan seperti metadata, yang satu seperti isi berkas
    Di Unix, metadata berada di sisi blok direktori inode dan bukan format yang terikat unik pada berkas, sehingga struktur seperti tar, cpio, zip harus merepresentasikannya secara terpisah
    Untuk mengimplementasikan dukungan berkas yang kompatibel dengan Mac di Unix, resource fork harus diperlakukan sebagai data kelas utama, dan cara yang wajar adalah menaruh berkas seperti .file di samping tiap berkas
    Saat itu blok inode UFS tidak bisa memetakan semua atribut resource fork, dan hal-hal seperti ikon juga ada di dalamnya. Sistem berkas yang lebih modern punya struktur blok direktori yang lebih besar sehingga bisa menangani data seperti ini dengan lebih baik

    • Menurut saya menyebutnya “yang satu metadata, yang satu isi berkas” tidak akurat untuk menjelaskan resource fork
      Lebih tepat melihatnya sebagai dua set isi berkas; yang satu disebut data, yang satu rsrc, dan di atas disk keduanya hanyalah stream byte
      Namun resource fork biasanya menyimpan struktur potongan data kecil yang diindeks dengan kode tipe 4 byte dan ID integer 2 byte
      Aplikasi Mac 68K memasukkan hampir semuanya ke resource fork: kode, menu, kotak dialog, gambar, ikon, string, dan lain-lain; jika aplikasi Mac lama disalin ke PC atau Unix tanpa konversi, ia terlihat seperti berkas kosong
      Karena itu, untuk mengirim aplikasi Mac lewat jaringan, ia harus dienkode menjadi satu stream; pada masa awal digunakan BinHex .hqx atau MacBinary .bin, lalu kemudian arsip Stuffit .sit
      Alasan struktur seperti ini tidak cocok dengan inode adalah karena pada dasarnya sama saja seperti mencoba menjejalkan satu berkas utuh ke sana. Struktur resource fork itu sendiri memiliki batas 16 MB, tetapi jika diperlakukan sebagai stream data terpisah, ukurannya bisa dibuat sebesar yang diinginkan
    • Seingat saya, resource fork berisi hal-hal yang dulu diedit dengan ResEdit. Ikon, berbagai resource GUI, teks, dan aset terjemahan juga bisa ada di sana
      Misalnya plugin Escape Velocity memakai tipe resource kustom, dan bisa diedit dengan mudah menggunakan plugin ResEdit
    • NTFS juga memiliki Alternate Data Streams, tetapi menurut saya hampir tidak pernah dipakai
      https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(AD...
    • Metadata aplikasi seperti format berkas yang bisa dibuka aplikasi, atau ikon apa yang digunakan ketika cocok dengan creator code aplikasi, disimpan di resource fork aplikasi tersebut, tetapi metadata berkas tidak disimpan di resource fork
      Tipe berkas, creator code, lock, invisible, bit bozo, dan sebagainya selalu disimpan di sistem berkas
      Misalnya lihat penjelasan format disk MFS: https://wiki.osdev.org/MFS#File_Directory_Blocks
    • Karena data yang bercabang seperti ini, membuat CD/DVD format ganda cukup menarik. Awalnya semacam trik, tetapi kemudian perangkat lunak pembakar Mac menanganinya dengan mudah
      Membuat DVD boot Mac juga lumayan tidak mudah
  • Seingat saya dulu ada cara untuk mematikan pembuatan .DS_Store, tetapi Apple menghapusnya, dan saya sama sekali tidak paham kenapa mereka membuat perubahan itu
    Akhirnya saya sampai menulis sendiri program yang memantau seluruh sistem berkas lalu menghapus .DS_Store begitu muncul
    [0] https://github.com/slmjkdbtl/dskill

    • Bisa dimatikan untuk volume jaringan
      defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
      https://support.apple.com/en-us/102064
      Saya tidak ingat pernah ada cara untuk mematikannya pada volume lokal
    • Apple benar-benar membuat kekacauan ketika mulai membuat berkas yang diawali . di root sistem berkas
      Setelah .DS_Store diizinkan, tampaknya engineer lain juga jadi mudah menyetujui hal-hal seperti .fseventsd, .Spotlight-V100
      Entah sudah berapa banyak sistem berkas yang saya lihat “tercemar” oleh berkas-berkas seperti ini. Biasanya kartu SD atau flash drive USB, tetapi kadang ada kasus yang jauh lebih mengerikan
      Biasanya dalam situasi seperti ini saya menjalankan rm -rf .DS_Store .Trashes ._.Trashes .fseventsd .Spotlight-V100, lalu cepat-cepat melepas drive sebelum ada hal lain yang ditulis
      Terutama ketika harus menyalin data dari disk yang kondisinya memburuk, hal yang paling tidak diinginkan adalah memulai pengindeksan penuh dan menulis ke disk
      Serius, hal seperti ini seharusnya punya opsi pengaturan
    • find / -name ".DS_Store" -exec rm {} \; 2>/dev/null
      Masukkan ini ke skrip lalu tambahkan ke crontab
  • .DS_Store benar-benar terlihat seperti desain yang sial. Memang ada tujuannya dan ada berbagai cara mengakalinya, tetapi dalam praktiknya ia menjadi sesuatu yang menyebarkan sampah file kepada 99% orang yang menemuinya
    Dari sisi penyelesaian pengalaman pengguna, ini terasa tidak seperti Apple
    Saya tumbuh dengan memakai System 7.5, OS X, dan Windows bersama-sama, dan Mac biasanya tidak memaksa pengguna melihat detail implementasi seperti file atau format file yang tidak perlu, atau “bagaimana komputer bekerja secara internal”
    Jadi aneh rasanya file ini muncul di mana-mana, karena sangat tidak cocok dengan mental model saya tentang Mac

    • Orang yang hidup sepenuhnya di ekosistem Apple tidak akan pernah melihat file .DS_Store kecuali memakai terminal
      Finder sekarang tidak menampilkannya bahkan saat tampilan file tersembunyi diaktifkan
      Namun saat berbagi file dari Mac ke pengguna Windows, tampilannya benar-benar buruk, dan menurut saya bisa memberi kesan pertama yang jelek kepada orang yang sedang mempertimbangkan pindah ke Mac
    • Kualitas finishing Apple memang selalu lebih dekat ke permukaan daripada ke bagian dalam
  • Saya tidak mengerti mengapa file itu harus berada di folder yang sama. Tidak bisakah sistem operasi menyimpan basis data kecil miliknya sendiri di suatu tempat lalu merujuk tiap path?

    • Niatnya adalah agar metadata seperti label file ikut berpindah bersama drive jaringan, perangkat apa pun yang menggunakannya
    • Menaruhnya di dalam folder juga punya kelebihan: saat folder dihapus, file itu ikut terhapus secara alami
  • Saya setuju dengan pendapat bahwa “file itu seharusnya hanya dibuat ketika pengguna benar-benar mengubah pengaturan tampilan atau menentukan posisi ikon di dalam folder secara manual.” Namun pada kenyataannya, hanya dengan mengunjungi folder saja hampir pasti .DS_Store akan dibuat
    Ini keluhan terbesar saya terhadap Finder
    Kemampuan untuk mengustomisasi tampilan dan ukuran jendela folder individual seperti di Classic Mac OS Finder adalah fitur yang sangat bagus
    Tetapi hanya dengan melewati folder yang sama lewat jendela browser, sebagian besar kustomisasi itu akan ditimpa oleh pengaturan jendela browser, padahal tidak ada yang diubah
    Kalau semudah itu rusaknya, tidak ada gunanya memberi kustomisasi yang hebat
    Saya membuka folder Applications dengan pintasan global, tetapi percuma saja ingin mempercantik tampilan jendelanya. Setiap kali menekan pintasan, saya tidak tahu apa yang akan terlihat dan pengaturannya terus direset
    Alasannya karena Finder tidak punya cara untuk mengatur konfigurasi jendela browser default. Sebagai gantinya, ia meninggalkan pengaturan browser saat ini di setiap folder yang dikunjungi, dan ini benar-benar menjengkelkan

    • Sebelum Darwin, satu folder yang terbuka berkorespondensi dengan satu jendela, dan hanya ada satu pengguna, jadi pendekatan seperti itu cocok
      Saya sangat suka dan merindukan jendela yang muncul kembali persis seperti posisi terakhirnya
    • Tidak global, tetapi di dalam Finder Anda bisa membuka folder Applications dengan cmd-shift-A, dan folder Utilities dengan cmd-shift-U
  • Karena saya bukan pengguna Mac, saya selalu agak kesal saat .tgz yang saya unduh dari tempat seperti GitHub penuh dengan .DS_Store
    macOS tampaknya mungkin memakai GNU tar, jadi cukup mengejutkan bahwa mereka tidak memodifikasi atau mengonfigurasinya agar secara default mengabaikan .DS_Store

    • Bukan default, tetapi bisa dibuat begitu
      Jika mengekspor COPYFILE_DISABLE=true, tar akan melewati file .DS_Store
    • Sebagian besar utilitas Unix di Mac bukan sesuatu yang secara khusus diutak-atik Apple, melainkan hampir langsung berasal dari FreeBSD
  • Cara menonaktifkan pembuatan file .DS_Store secara default saat menjelajahi volume jaringan layak disebut. Jika tidak, hanya dengan melihat-lihat lewat Finder saja waktu modifikasi direktori akan berubah, dan itu benar-benar yang terburuk
    https://old.reddit.com/r/MacOS/comments/lvju40/comment/gpc8i...

    • macOS sekarang merepotkan. Saat saya melihat apakah ada .DS_Store di volume jaringan lewat Finder, kelihatannya tidak ada, tetapi ketika saya masuk lewat terminal, ternyata sebenarnya ada
      Kini fitur Finder untuk menampilkan file tersembunyi tidak bisa dipercaya. Alih-alih menampilkan semua file tersembunyi, Finder hanya menampilkan file tersembunyi yang menurutnya perlu diperhatikan pengguna
      Network share saya adalah Synology lokal, jadi bukan masalah besar, tetapi di tempat kerja file-file seperti ini menciptakan situasi yang cukup berantakan
    • Secara pribadi, saya meminta pengguna Mac mengatur ini sebelum mereka mendapat hak tulis ke network share. Menurut saya itu etiket berbagi pakai yang masuk akal
    • Jika menjalankan Samba, Anda juga bisa membuat konfigurasi Samba agar permintaan pembuatan seperti ini diabaikan begitu saja
  • Ada juga file titik-garis bawah (._). Apakah ada cara untuk menonaktifkan agar file seperti ini tidak muncul di network share?
    [0] https://superuser.com/questions/212896/is-there-any-way-to-p...

  • Untungnya, jika memakai manajer file Emacs, Dired, kita bisa dengan mudah berpura-pura file kecil yang menyebalkan ini dan file-file yang dibuat oleh eksekusi LaTeX tidak ada
    (setq dired-omit-mode t
    dired-omit-files "^.+\\.\\(DS_Store\\|aux\\|bak\\|bbl\\|bcf\\|blg\\|dvi\\|ent\\|idx\\|ilg\\|ind\\|log\\|orig\\|out\\|pdf-view-restore\\|pdf#\\|reg\\|run.xml\\|synctex.gz\\|toc\\)$")