Esiste: un modo standardizzato di documentare una struttura di file system


11

Al lavoro, mi occupo di mantenere l'organizzazione di molti dati diversi su un file system standard. Parte di ciò sta arrivando a una classificazione ragionevole (per somiglianza, necessità, accesso in lettura / scrittura, ecc.), Ma la parte più grande lo sta effettivamente documentando: quali documenti / file / media dovrebbero andare dove, cosa non dovrebbe essere in questa directory, "per qualcosa di leggermente diverso, vedi ../../other-dir", ecc.

Al momento, ho documentato questo usando un file readmein chiaro in ogni directory che voglio documentare. Se qualcuno non è sicuro di cosa si debba trovare in una directory, legge quel file.

Funziona bene, ma mi sembra strano che io abbia questa soluzione personalizzata primitiva a un problema che ogni manutentore di una struttura di directory non banale deve sperimentare. Ogni azienda che ho conosciuto, ad esempio, ha una sorta di file system condiviso in cui la terminologia concordata per la categorizzazione è importante. In base alla mia esperienza, le persone devono solo imparare cosa è ciò che provano e provano errori e sperimentazioni.

Quindi permettimi di proporre una soluzione migliore, e spero che tu possa dirmi se esiste. Qualsiasi directory su qualsiasi filesystem può avere un file di testo in chiaro nascosto chiamato .readme. I suoi contenuti sono in linguaggio umano descrittivo. Utilizza alcuni markup come Markdown, con poco più di collegamenti ipertestuali grassetto, corsivo e (relativi) ad altre directory. Ora un browser di file abilitato opportunamente controllerà un file chiamato .readmeogni volta che visualizza una directory. Se esiste, i suoi contenuti vengono analizzati e visualizzati in un riquadro discreto vicino al widget del percorso di directory. È possibile fare clic su qualsiasi collegamento al suo interno e l'utente verrà portato nella directory di destinazione di quel collegamento.

Penso che lo sforzo di attuare un simile standard ripagherà molte volte i guadagni di usabilità. Ad esempio, avremmo plugin per Nautilus, Konqueror, ecc. Potrebbe essere usato per visualizzare le informazioni della directory negli elenchi di file standard forniti dai server web. E così via.

Quindi, domanda: esiste una cosa del genere? In caso contrario, perché no? La gente pensa che sia un'idea utile?


Dato che menzioni miglioramenti al file system (o ai browser di file per un file system specifico), in particolare per il codice sorgente, vale anche la pena menzionare la tanto necessaria funzione di ordinamento dei file . La maggior parte dei file system ha due tipi principali di ordinamento: alfabetico e non ordinato. Ma che dire di un ordine specificato dall'utente? Ad esempio nel caso del codice sorgente, se in una cartella (modulo, pacchetto, componente principale) sono presenti 7 file (classi, moduli, componenti), il loro ordine "logico" di solito non coincide con l'ordine alfabetico. Ma piuttosto è l'ordine del loro "albero delle dipendenze".
Sorin Postelnicu,

Quindi, come aggiunte standard ai moderni filesystem, queste tre funzionalità dovrebbero essere predefinite: 1) descrizioni dei file, 2) ordinamento dei file personalizzati all'interno di una cartella e 3) etichettatura / etichettatura dei file. Non è necessario utilizzare un CMS per beneficiare di queste 3 funzioni "di base".
Sorin Postelnicu,

Risposte:


5

Per quanto ne so non esiste uno standard. Ecco alcune idee della mia esperienza.

Installalo, non cambiarlo mai

Questo è dove la maggior parte delle aziende falliscono. Niente è peggio di una struttura del file system in continua evoluzione. Se non è possibile mantenerlo costante, un file system puro è solo il contenitore sbagliato per organizzare le tue informazioni. Utilizzare un database o un sistema di gestione dei contenuti.

Utilizzare nomi di directory descrittivi e coerenti

Nessuno ha il tempo di leggere un .filingfile o altro. Se i nomi delle tue directory non si spiegano da soli, probabilmente ti perderai comunque.

Scrivi una documentazione per la tua struttura di directory

Scrivi un documento in cui spieghi il ruolo di ogni directory. Fai molti esempi. Rendilo disponibile a chiunque debba lavorare con la tua struttura, ma non credere che nessuno lo leggerà. Dovrebbe essere più simile a una Bibbia per te. Non è facile trovare un esempio per un simile documento, perché ovviamente le aziende non li pubblicano. Un esempio del software open source è il Filesystem Hierarchy Standard .


Se questo suona un po 'negativo, lo è. Non ho mai visto un repository non banale basato su un file system con più di cinque utenti che lavorano a lungo termine in pratica. Il problema è che, indipendentemente dalle categorie che imposterai, le persone avranno idee completamente diverse su di esse. Quindi, per rispondere finalmente alle tue domande:

Esiste una cosa del genere?

No, non la penso così.

In caso contrario, perché no?

Secondo me: per una piccola gerarchia statica con pochi utenti è eccessivo. Per una grande gerarchia che cambia con molti utenti non funzionerà perché l'idea delle categorie (= directory, cartella) non si ridimensiona.

La gente pensa che sia un'idea utile?

Hm, è un'idea interessante. Per vedere se le persone lo useranno, qualcuno deve implementarlo. Invece di un .filingfile è possibile archiviare tali informazioni in un flusso di dati alternativo (sì, anche le cartelle possono avere ADS). È possibile utilizzare attributi estesi su Linux e OSX. Il problema più grande sarebbe probabilmente quello di patchare i browser dei file.


1
"Niente è peggio di una struttura di file system in continua evoluzione" tranne una che rifiuta risolutamente di cambiare anche quando la struttura non ha più senso.
jameshfisher,

1
"Usa nomi di directory descrittivi e coerenti" - assolutamente necessario, sì. Sfortunatamente c'è un conflitto tra descrittività e brevità - nessuno vuole digitare un percorso a un file in / srv / all-hierarchical-data / accessibile-solo-da-ufficio-e-amministratore / lettere-ma-non-pubblico -notices / accademico-dell'anno-2009 / ... e così via.
jameshfisher,

"Scrivi una documentazione per la tua struttura di directory" - anche un'ottima idea. È essenzialmente quello che sto suggerendo; solo che la documentazione sarebbe stata distribuita piuttosto che monolitica.
jameshfisher,

"l'idea delle categorie (= directory, cartella) non si ridimensiona" - vero, tranne che a volte deve solo. Ad esempio, grandi alberi di sorgenti software ( git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree ).
jameshfisher,

"Invece di un .filingfile è possibile archiviare tali informazioni in un flusso di dati alternativo (sì, anche le cartelle possono avere ADS). È possibile utilizzare attributi estesi su Linux e OSX." Possibile, immagino, ma diminuisce la portabilità e la trasparenza che ritengo così importanti. E se volessi mettere tutto in un repository git? I file in testo normale vengono utilizzati per la configurazione specifica della directory (ad es. Htaccess), quindi perché non anche la documentazione?
jameshfisher,

2

il wasabi vale la pena provare. Alla radice del progetto, la fonte in testo semplice fungerà da solida panoramica del progetto e puoi lanciare lo stesso documento in un browser per ottenere risultati più elaborati.

Certo, non è una soluzione basata su filesystem, ma fino a quando tutti i filesystem in circolazione non supportano qualcosa di comune, wasabi (o la tua implementazione) potrebbe essere l'opzione migliore.


1

La tua idea ha qualche merito, ma temo che quando hai bisogno di qualcosa del genere significhi davvero che hai bisogno di qualcosa di più strutturato. Cioè un CMS, forse solo leggero, ma sicuramente qualcosa di più di un semplice file testuale.

Soprattutto se si desidera limitare la scrittura (o persino l'accesso) a documenti specifici (e quindi alle relative cartelle) ad alcuni sottogruppi della base utenti.

Non specifichi il tuo sistema operativo, ma esistono prodotti eccellenti (e gratuiti) come Alfresco che potrebbero servirti meglio della tua configurazione attuale.


Mi sono dilettato con vari CMS, ma ho scoperto che portabilità, semplicità e trasparenza sono costi enormi da pagare rispetto al CMS più venerabile là fuori: l'albero delle directory. La maggior parte dei dati che ho dovuto gestire potrebbero rientrare in una gerarchia. Come ultima risorsa, ci sono collegamenti simbolici. E la struttura delle directory è talvolta l'unica soluzione: ad esempio nello sviluppo del software, il codice sorgente è, alla base, un albero di directory. (Documentare directory del genere in genere significa attenersi a uno schema rigido e criptico, che alla fine si rompe. Penso che anche la mia soluzione possa aiutare qui.)
jameshfisher

Come ho già detto, la tua idea ha valore, ma penso, come l'autore dell'altro poster, che questo non possa scalare oltre un determinato livello. Tu citi il ​​codice sorgente, ma questo è un caso molto specializzato - e quando aggiungi il codice ad esso non guardi nelle directory esistenti per trovare dove dovrebbe "adattarsi". Un CMS di solito ti dà la possibilità di taggare cose in modo da avere "directory" (cartelle, spazi, pagine) che funzionano come la tua soluzione, IN PIÙ un sistema di tagging che consente alle persone di trovare cose senza dover cercare la directory "giusta". Questo è più flessibile dei link simbolici e meno soggetto a errori, IMHO.
p.marino,

1

Ecco un'idea. Scrivi uno script che ponga all'utente varie domande sul file e / o esegua una corrispondenza nel contenuto del file stesso, quindi consiglia l'ubicazione in cui inserire il file o inserendolo. Lo script può essere semplice o complesso come lo desideri.

Lo script funge da sistema di gestione dei file, sistema di supporto alle decisioni e documentazione vivente della gerarchia dei filesystem. Il Linux Filesystem Hierarchy Standard è un po 'un mito se ci pensate, perché c'è una grande varianza tra le distro. Tuttavia, la maggior parte degli utenti Linux / Unix non deve effettivamente conoscere la gerarchia del filesystem in quanto esiste un software installato nel sistema che gestisce la gerarchia in modo standardizzato (gestore pacchetti, strumento di configurazione, ecc.). Vari framework di applicazioni creano anche script per gestire le sue directory, ad esempio django ha comandi di gestione per creare un nuovo progetto, o un nuovo modulo di app, o schiacciare i file di migrazione, ecc.

Ciò ha l'ulteriore vantaggio che lo script può creare vari collegamenti simbolici se il file deve essere cercato in più di un modo, ad esempio un indice basato sull'autore del file o sulla data di creazione o su qualunque regola di business tu abbia. È possibile simulare la codifica con collegamenti simbolici. Un tag è un semplice collegamento simbolico da una tagsdirectory, quindi tags/mytag/myfilepuò essere un collegamento simbolico a actual/myfile.

Inoltre sarà anche possibile modificare la struttura della gerarchia del filesystem senza cambiare l'interfaccia utente.

Un filesystem è un database. Non un database relazionale, ma un database gerarchico. Pensaci come se gestissi un database, non vuoi davvero che le persone debbano imparare la struttura relazionale, ma piuttosto vuoi che l'applicazione si presenti all'utente come varie attività che devono fare (ad esempio stai facendo un mensile Rapporto XYZ, ottimo, quindi inseriscilo in questa cartella e crea questo link simbolico, quindi dovrai modificare un altro file per registrare che hai fatto il rapporto per questo mese, ecc.).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.