Apakah ini ada: cara standar untuk mendokumentasikan struktur sistem file

11

Di tempat kerja, saya bertanggung jawab untuk mengelola seluruh data yang bervariasi pada sistem file standar. Sebagian dari ini datang dengan klasifikasi yang masuk akal (berdasarkan kesamaan, kebutuhan, akses baca / tulis, dll), tetapi bagian yang lebih besar sebenarnya mendokumentasikannya: dokumen / file / media apa yang harus dituju, apa yang seharusnya tidak ada dalam direktori ini, "untuk sesuatu yang sedikit berbeda, lihat ../../other-dir", dll.

Saat ini, saya telah mendokumentasikan ini menggunakan file plaintext readmedi setiap direktori yang ingin saya dokumentasikan. Jika seseorang tidak yakin apa yang dimaksudkan dalam direktori apa pun, mereka membaca file itu.

Ini berfungsi dengan baik, tetapi tampaknya aneh bahwa saya memiliki solusi kustom primitif ini untuk masalah yang harus dialami oleh setiap pengelola struktur direktori non-sepele. Setiap perusahaan yang saya kenal, misalnya, memiliki semacam sistem file bersama di mana terminologi yang disepakati untuk kategorisasi adalah penting. Dalam pengalaman saya, orang hanya perlu belajar apa dengan percobaan-dan-kesalahan dan eksperimen.

Jadi izinkan saya untuk mengusulkan solusi yang lebih baik, dan mudah-mudahan Anda dapat memberi tahu saya jika itu ada. Direktori apa pun pada sistem file apa pun dapat memiliki nama file plaintext tersembunyi .readme. Isinya adalah bahasa manusia deskriptif. Ini menggunakan beberapa markup seperti penurunan harga, dengan sedikit lebih dari tebal, miring, dan (relatif) hyperlink ke direktori lain. Sekarang browser file yang diaktifkan dengan tepat akan memeriksa file bernama .readmesetiap kali menampilkan direktori. Jika ada, isinya diurai dan ditampilkan dalam panel yang tidak mencolok di dekat widget jalur-direktori. Tautan apa pun di dalamnya dapat diklik, dan pengguna akan dibawa ke direktori target tautan itu.

Saya pikir upaya penerapan standar semacam itu akan membayarkan berkali-kali lipat dalam keuntungan usabilitas. Kami akan memiliki, misalnya, plugin untuk Nautilus, Konqueror, dll. Ini dapat digunakan untuk menampilkan informasi direktori dalam daftar file standar yang dilayani oleh webserver. Dan seterusnya.

Jadi, pertanyaan: apakah hal seperti itu ada? Jika tidak, mengapa tidak? Apakah orang berpikir itu ide yang bermanfaat?

jameshfisher
sumber
Karena Anda menyebutkan peningkatan pada sistem file (atau browser file untuk sistem file tertentu), terutama untuk kode sumber, maka ada baiknya menyebutkan fitur yang sangat dibutuhkan dalam pemesanan file . Sebagian besar sistem file memiliki dua jenis pemesanan utama: abjad, dan tidak disortir. Tapi bagaimana dengan pesanan yang ditentukan pengguna? Misalnya dalam kasus kode sumber, jika Anda memiliki 7 file (kelas, modul, komponen) dalam folder (modul, paket, komponen induk), maka urutan "logis" mereka biasanya tidak sama dengan urutan alfabet. Melainkan itu adalah urutan "pohon ketergantungan" mereka.
Sorin Postelnicu
Jadi, sebagai tambahan standar untuk sistem file modern, ketiga fitur ini seharusnya datang secara default: 1) deskripsi file, 2) pemesanan file kustom di dalam folder, dan 3) penandaan / pelabelan file. Orang tidak perlu menggunakan CMS untuk mendapatkan manfaat dari 3 fitur "dasar" ini.
Sorin Postelnicu

Jawaban:

5

Sejauh yang saya tahu tidak ada standar. Inilah beberapa ide dari pengalaman saya.

Atur, jangan pernah mengubahnya

Ini adalah sebagian besar perusahaan gagal. Tidak ada yang lebih buruk daripada struktur sistem file yang terus berubah. Jika tidak mungkin untuk tetap konstan maka sistem file murni hanyalah wadah yang salah untuk mengatur informasi Anda. Gunakan database atau Sistem Manajemen Konten.

Gunakan nama direktori yang deskriptif dan konsisten

Tidak ada yang punya waktu untuk membaca .filingfile atau apa pun. Jika nama direktori Anda tidak menjelaskan diri sendiri, Anda mungkin akan hilang juga.

Tulis dokumentasi untuk struktur direktori Anda

Tulis dokumen tempat Anda menjelaskan peran setiap direktori. Berikan banyak contoh. Jadikan itu tersedia untuk siapa saja yang harus bekerja dengan struktur Anda, tetapi jangan percaya siapa pun akan membacanya. Seharusnya lebih seperti Alkitab bagi Anda. Tidak mudah menemukan contoh untuk dokumen semacam itu, karena jelas perusahaan tidak mempublikasikannya. Contoh dari perangkat lunak open source adalah Filesystem Hierarchy Standard .


Jika ini terdengar agak negatif, itu benar. Saya belum pernah melihat repositori non-sepele berdasarkan sistem file dengan lebih dari lima pengguna yang bekerja dalam jangka panjang dalam praktiknya. Masalahnya adalah bahwa kategori apa pun yang Anda buat, orang akan memiliki ide yang sangat berbeda tentang mereka. Jadi untuk akhirnya menjawab pertanyaan Anda:

Apakah hal semacam itu ada?

Tidak, kurasa tidak.

Jika tidak, mengapa tidak?

Menurut pendapat saya: Untuk hierarki statis kecil dengan beberapa pengguna itu berlebihan. Untuk hierarki perubahan besar dengan banyak pengguna, itu tidak akan berfungsi karena gagasan kategori (= direktori, folder) tidak berskala.

Apakah orang berpikir itu ide yang bermanfaat?

Hm, itu ide yang menarik. Untuk melihat apakah orang akan menggunakannya, seseorang harus mengimplementasikannya. Alih-alih .filingfile Anda bisa menyimpan informasi itu dalam aliran data alternatif (ya, folder juga dapat memiliki ADS). Anda bisa menggunakan atribut diperluas di Linux dan OSX. Masalah terbesar mungkin akan menambal browser file.

Ludwig Weinzierl
sumber
1
"Tidak ada yang lebih buruk daripada struktur sistem file yang terus berubah" kecuali satu yang dengan tegas menolak untuk berubah walaupun struktur itu tidak lagi masuk akal.
jameshfisher
1
"Gunakan nama direktori yang deskriptif dan konsisten" - mutlak diperlukan, ya. Sayangnya ada konflik antara deskripsi dan singkatnya - tidak ada yang mau mengetikkan path ke file di / srv / all-hierarchical-data / diakses-hanya-oleh-kantor-dan-admin / surat-tetapi-tidak-publik -pesan / akademik-tahun-2009 / ... dan seterusnya.
jameshfisher
"Tulis dokumentasi untuk struktur direktori Anda" - juga ide yang bagus. Ini pada dasarnya apa yang saya sarankan; Hanya saja dokumentasinya akan didistribusikan daripada monolitik.
jameshfisher
"Gagasan kategori (= direktori, folder) tidak menskala" - true-ish, kecuali terkadang hanya perlu. Katakanlah, pohon sumber perangkat lunak besar ( git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree ).
jameshfisher
"Alih-alih .filingfile Anda bisa menyimpan informasi itu dalam aliran data alternatif (ya, folder juga dapat memiliki ADS). Anda dapat menggunakan atribut tambahan di Linux dan OSX." Mungkin, saya bayangkan, tetapi menurunkan portabilitas dan transparansi yang menurut saya sangat penting. Bagaimana jika saya ingin meletakkan semuanya di repo git? File Plaintext digunakan untuk konfigurasi khusus direktori (misalnya htaccess), jadi mengapa tidak mendokumentasikan juga?
jameshfisher
2

wasabi patut dicoba. Di root proyek Anda, sumber teks biasa akan berfungsi sebagai gambaran umum proyek yang solid dan Anda dapat membuang dokumen yang sama di browser untuk beberapa hasil yang lebih bagus.

Memang, ini bukan solusi berbasis sistem file, tetapi sampai semua sistem file mendukung sesuatu yang umum, wasabi (atau implementasi Anda sendiri) bisa menjadi pilihan terbaik.

pengguna3276552
sumber
1

Gagasan Anda memiliki beberapa kelebihan, tetapi saya khawatir ketika Anda membutuhkan sesuatu seperti ini, itu berarti Anda membutuhkan sesuatu yang lebih terstruktur. Yaitu CMS, mungkin hanya yang ringan, tapi pasti sesuatu yang lebih dari sekadar file teks.

Terutama jika Anda ingin membatasi penulisan (atau bahkan mengakses) dokumen tertentu (dan karena itu mengandung folder) untuk beberapa bagian dari basis pengguna Anda.

Anda tidak menentukan OS Anda, tetapi ada produk unggulan (dan gratis) seperti alfresco yang mungkin dapat melayani Anda lebih baik daripada pengaturan Anda saat ini.

p.marino
sumber
Saya telah mencoba-coba berbagai CMS, tetapi telah menemukan bahwa portabilitas, kesederhanaan, dan transparansi adalah biaya yang sangat besar untuk dibayar bila dibandingkan dengan CMS yang paling terhormat di luar sana: pohon direktori. Sebagian besar data yang saya kelola bisa masuk ke dalam hierarki. Sebagai upaya terakhir, ada symlink. Dan struktur direktori kadang-kadang satu-satunya solusi: misalnya dalam pengembangan perangkat lunak, kode sumbernya, pada dasarnya, pohon direktori. (Mendokumentasikan direktori seperti itu pada umumnya berarti tetap pada skema yang kaku dan samar, yang akhirnya rusak. Saya pikir solusi saya dapat membantu di sini juga.)
jameshfisher
Seperti yang saya katakan, ide Anda pantas, tetapi saya pikir, seperti penulis poster lainnya, bahwa ini tidak dapat melebihi skala yang ditentukan. Anda menyebutkan kode sumber, tetapi ini adalah kasus yang sangat khusus - dan ketika Anda menambahkan kode untuk itu Anda tidak melihat ke direktori yang ada untuk menemukan di mana itu "cocok". CMS biasanya memberi Anda kemampuan untuk menandai barang sehingga Anda memiliki "direktori" (folder, spasi, halaman) yang berfungsi seperti solusi Anda, PLUS sistem penandaan yang memungkinkan orang menemukan barang tanpa harus mencari direktori "benar". Ini lebih fleksibel daripada symlink dan kurang rentan terhadap kesalahan, IMHO.
p.marino
1

Ini ide. Tulis skrip yang menanyakan berbagai pertanyaan kepada pengguna tentang file dan / atau melakukan beberapa kecocokan dalam konten file itu sendiri, dan kemudian merekomendasikan lokasi untuk meletakkan file atau meletakkannya di sana sendiri. Script bisa sesederhana atau serumit yang Anda inginkan.

Script bertindak sebagai sistem manajemen file, sistem pendukung keputusan, dan dokumentasi langsung dari hierarki sistem file. Linux Filesystem Hierarchy Standard adalah sedikit mitos jika Anda memikirkannya, karena ada perbedaan yang sangat besar antara distro. Namun sebagian besar pengguna Linux / Unix sebenarnya tidak harus belajar tentang hirarki sistem file itu sendiri karena terdapat berbagai perangkat lunak yang diinstal dalam sistem yang mengelola hirarki dengan cara yang distandarisasi (manajer paket, alat konfigurasi, dll). Berbagai kerangka kerja aplikasi juga membuat skrip untuk mengelola direktori-direktorinya, misalnya Django memiliki perintah manajemen untuk membuat proyek baru, atau modul aplikasi baru, atau file migrasi squash, dll.

Ini memiliki keuntungan tambahan bahwa skrip dapat membuat berbagai symlink jika file perlu dicari lebih dari satu cara, misalnya indeks berdasarkan pembuat file atau tanggal pembuatan atau aturan bisnis apa pun yang Anda miliki. Anda dapat mensimulasikan penandaan dengan symlink. Tag adalah simplink sederhana dari suatu tagsdirektori, jadi tags/mytag/myfilemungkin symlink ke actual/myfile.

Selain itu juga dimungkinkan untuk mengubah struktur hierarki sistem file tanpa mengubah antarmuka pengguna.

Filesystem adalah database. Bukan basis data relasional, tetapi basis data hierarkis. Pikirkan tentang hal ini seperti mengelola basis data, Anda tidak benar-benar ingin mengharuskan orang untuk mempelajari struktur relasional, tetapi Anda ingin aplikasi untuk disajikan kepada pengguna sebagai berbagai tugas yang perlu mereka lakukan (mis. Anda melakukan bulanan Laporan XYZ, hebat, lalu taruh di folder ini, dan buat symlink ini, dan kemudian Anda perlu memodifikasi file lain untuk merekam bahwa Anda telah melakukan laporan untuk bulan ini, dll).

Lie Ryan
sumber