Existiert dies: eine standardisierte Art der Dokumentation einer Dateisystemstruktur

11

Bei der Arbeit bin ich dafür verantwortlich, die Organisation einer Vielzahl unterschiedlicher Daten in einem Standard-Dateisystem aufrechtzuerhalten. Ein Teil davon ist eine sinnvolle Klassifizierung (nach Ähnlichkeit, Bedarf, Lese- / Schreibzugriff usw.), aber der größere Teil dokumentiert sie tatsächlich: Welche Dokumente / Dateien / Medien sollten wohin gehen, was sollte nicht in diesem Verzeichnis sein? "für etwas etwas anderes siehe ../../other-dir" usw.

Im Moment habe ich dies mit einer Klartextdatei readmein jedem Verzeichnis dokumentiert, das ich dokumentieren möchte. Wenn jemand nicht sicher ist, was sich in einem Verzeichnis befinden soll, liest er diese Datei.

Dies funktioniert in Ordnung, aber es scheint seltsam, dass ich diese primitive benutzerdefinierte Lösung für ein Problem habe, das jeder Betreuer einer nicht trivialen Verzeichnisstruktur haben muss. Jedes Unternehmen, von dem ich weiß, verfügt beispielsweise über ein gemeinsames Dateisystem, in dem eine vereinbarte Terminologie für die Kategorisierung wichtig ist. Nach meiner Erfahrung müssen die Leute nur durch Ausprobieren und Experimentieren lernen, was was ist.

Erlauben Sie mir also, eine bessere Lösung vorzuschlagen, und hoffentlich können Sie mir sagen, ob es eine gibt. Jedes Verzeichnis in einem beliebigen Dateisystem kann eine versteckte Klartextdatei mit dem Namen haben .readme. Sein Inhalt ist beschreibende menschliche Sprache. Es werden Markups wie Markdown verwendet, mit kaum mehr als fetten, kursiven und (relativen) Hyperlinks zu anderen Verzeichnissen. Jetzt sucht ein entsprechend aktivierter Dateibrowser nach einer Datei mit dem Namen, .readmewenn ein Verzeichnis angezeigt wird . Wenn es vorhanden ist, wird sein Inhalt analysiert und in einem unauffälligen Bereich in der Nähe des Verzeichnispfad-Widgets angezeigt. Alle darin enthaltenen Links können angeklickt werden, und der Benutzer wird in das Zielverzeichnis dieses Links weitergeleitet.

Ich denke, dass sich der Aufwand für die Implementierung eines solchen Standards um ein Vielfaches in Bezug auf die Benutzerfreundlichkeit auszahlen würde. Wir hätten beispielsweise Plugins für Nautilus, Konqueror usw. Es könnte verwendet werden, um Verzeichnisinformationen in den Standard-Dateilisten anzuzeigen, die von Webservern bereitgestellt werden. Und so weiter.

Frage: Gibt es so etwas? Wenn nicht, warum nicht? Denken die Leute, dass es eine lohnende Idee ist?

Jamesfischer
quelle
Da Sie Verbesserungen des Dateisystems (oder der Dateibrowser für ein bestimmtes Dateisystem) erwähnen, insbesondere des Quellcodes, sollten Sie auch die dringend benötigte Funktion der Dateibestellung erwähnen . Die meisten Dateisysteme haben zwei Hauptreihenfolgearten: alphabetisch und unsortiert. Aber was ist mit einer benutzerdefinierten Bestellung? Wenn Sie beispielsweise im Quellcode 7 Dateien (Klassen, Module, Komponenten) in einem Ordner (Modul, Paket, übergeordnete Komponente) haben, stimmt deren "logische" Reihenfolge normalerweise nicht mit der alphabetischen Reihenfolge überein. Sondern es ist die Reihenfolge ihres "Abhängigkeitsbaums".
Sorin Postelnicu
Als Standardzusätze zu den modernen Dateisystemen sollten diese drei Funktionen standardmäßig verfügbar sein: 1) Dateibeschreibungen, 2) benutzerdefinierte Dateireihenfolge in einem Ordner und 3) Dateikennzeichnung / -kennzeichnung. Man sollte kein CMS verwenden müssen, um von diesen 3 "grundlegenden" Funktionen zu profitieren.
Sorin Postelnicu

Antworten:

5

Soweit ich weiß, gibt es keinen Standard. Hier sind einige Ideen aus meiner Erfahrung.

Richten Sie es ein, ändern Sie es nie

Hier scheitern die meisten Unternehmen. Nichts ist schlimmer als eine sich ständig ändernde Dateisystemstruktur. Wenn es nicht möglich ist, es konstant zu halten, ist ein reines Dateisystem genau der falsche Container, um Ihre Informationen zu organisieren. Verwenden Sie eine Datenbank oder ein Content Management System.

Verwenden Sie beschreibende und konsistente Verzeichnisnamen

Niemand hat die Zeit, eine .filingDatei oder etwas anderes zu lesen . Wenn Ihre Verzeichnisnamen nicht selbsterklärend sind, sind Sie wahrscheinlich trotzdem verloren.

Schreiben Sie eine Dokumentation für Ihre Verzeichnisstruktur

Schreiben Sie ein Dokument, in dem Sie die Rolle jedes Verzeichnisses erläutern. Nennen Sie viele Beispiele. Stellen Sie es jedem zur Verfügung, der mit Ihrer Struktur arbeiten muss, aber glauben Sie nicht, dass jemand es lesen wird. Es sollte für Sie eher wie eine Bibel sein. Es ist nicht einfach, ein Beispiel für ein solches Dokument zu finden, da Unternehmen sie offensichtlich nicht veröffentlichen. Ein Beispiel für Open Source-Software ist der Filesystem Hierarchy Standard .


Wenn dies etwas negativ klingt, ist es. Ich habe noch nie ein nicht triviales Repository gesehen, das auf einem Dateisystem basiert und in dem in der Praxis auf lange Sicht mehr als fünf Benutzer arbeiten. Das Problem ist, dass die Kategorien, unabhängig davon, welche Kategorien Sie einrichten, völlig unterschiedliche Vorstellungen haben. Um Ihre Fragen endlich zu beantworten:

Gibt es so etwas?

Nein, das glaube ich nicht.

Wenn nicht, warum nicht?

Meiner Meinung nach: Für eine kleine statische Hierarchie mit wenigen Benutzern ist es übertrieben. Bei einer sich stark ändernden Hierarchie mit vielen Benutzern funktioniert dies nicht, da die Idee von Kategorien (= Verzeichnisse, Ordner) nicht skaliert werden kann.

Denken die Leute, dass es eine lohnende Idee ist?

Hm, das ist eine interessante Idee. Um zu sehen, ob die Leute es benutzen, muss es jemand implementieren. Anstelle einer .filingDatei können Sie diese Informationen auch in einem alternativen Datenstrom speichern (ja, Ordner können auch ADS enthalten). Sie können erweiterte Attribute unter Linux und OSX verwenden. Das größte Problem wäre wahrscheinlich, die Dateibrowser zu patchen.

Ludwig Weinzierl
quelle
1
"Nichts ist schlimmer als eine sich ständig ändernde Dateisystemstruktur", außer einer, die sich entschieden weigert, Änderungen vorzunehmen, selbst wenn die Struktur keinen Sinn mehr ergibt.
Jameshfisher
1
"Verwenden Sie beschreibende und konsistente Verzeichnisnamen" - absolut notwendig, ja. Leider gibt es einen Konflikt zwischen Deskriptivität und Kürze - niemand möchte einen Pfad zu einer Datei in / srv / all-hierarchical-data / nur für das Büro und den Administrator / Briefe-aber-nicht-öffentlich zugänglich eingeben -Notizen / akademisches Jahr 2009 / ... und so weiter.
Jameshfisher
"Schreiben Sie eine Dokumentation für Ihre Verzeichnisstruktur" - auch eine gute Idee. Es ist im Wesentlichen das, was ich vorschlage; nur, dass die Dokumentation eher verteilt als monolithisch wäre.
Jameshfisher
"Die Idee von Kategorien (= Verzeichnisse, Ordner) lässt sich nicht skalieren" - wahr, außer manchmal muss es einfach so sein. Angenommen , große Software-Quellbäume ( git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree ).
Jameshfisher
"Anstelle einer .filingDatei können Sie diese Informationen in einem alternativen Datenstrom speichern (ja, Ordner können auch ADS enthalten). Sie können erweiterte Attribute unter Linux und OSX verwenden." Möglich, stelle ich mir vor, verringert aber die Portabilität und Transparenz, die ich für so wichtig halte. Was ist, wenn ich alles in ein Git-Repo legen möchte? Klartextdateien werden für die verzeichnisspezifische Konfiguration verwendet (z. B. htaccess). Warum also nicht auch die Dokumentation?
Jameshfisher
2

Wasabi ist einen Versuch wert. In Ihrem Projektstamm dient die Nur-Text-Quelle als solide Projektübersicht, und Sie können dasselbe Dokument in einen Browser werfen, um bessere Ergebnisse zu erzielen.

Zugegeben, es ist keine Dateisystem-basierte Lösung, aber bis alle Dateisysteme etwas Gemeinsames unterstützen, könnte Wasabi (oder Ihre eigene Implementierung) die beste Option sein.

user3276552
quelle
1

Ihre Idee hat einige Vorzüge, aber ich befürchte, wenn Sie so etwas brauchen, bedeutet das wirklich, dass Sie etwas strukturierteres brauchen. Dh ein CMS, vielleicht nur ein leichtes, aber definitiv etwas mehr als nur eine Textdatei.

Insbesondere, wenn Sie das Schreiben (oder sogar den Zugriff) bestimmter Dokumente (und damit der darin enthaltenen Ordner) auf eine Teilmenge Ihrer Benutzerbasis beschränken möchten.

Sie geben Ihr Betriebssystem nicht an, aber es gibt ausgezeichnete (und kostenlose) Produkte wie Alfresco , die Ihnen möglicherweise besser dienen könnten als Ihr aktuelles Setup.

p.marino
quelle
Ich habe mich mit verschiedenen CMS beschäftigt, aber festgestellt, dass Portabilität, Einfachheit und Transparenz im Vergleich zu dem ehrwürdigsten CMS auf dem Markt enorme Kosten verursachen: dem Verzeichnisbaum. Die meisten Daten, die ich verwalten musste, könnten in eine Hierarchie passen. Als letzten Ausweg gibt es Symlinks. Und die Verzeichnisstruktur ist manchmal die einzige Lösung: In der Softwareentwicklung ist der Quellcode beispielsweise ein Verzeichnisbaum. (Solche Verzeichnisse zu dokumentieren bedeutet im Allgemeinen, sich an ein starres und kryptisches Schema zu halten, das schließlich zusammenbricht. Ich denke, meine Lösung könnte auch hier helfen.)
Jameshfisher
Wie gesagt, Ihre Idee hat ihre Berechtigung, aber ich denke, wie der Autor des anderen Posters, dass dies nicht über ein bestimmtes Niveau hinaus skaliert werden kann. Sie erwähnen den Quellcode, aber dies ist ein sehr spezieller Fall - und wenn Sie Code hinzufügen, schauen Sie nicht in die vorhandenen Verzeichnisse, um herauszufinden, wo er "passen" sollte. Ein CMS bietet Ihnen normalerweise die Möglichkeit, Inhalte mit Tags zu versehen, sodass Sie über "Verzeichnisse" (Ordner, Leerzeichen, Seiten) verfügen, die wie Ihre Lösung funktionieren, sowie über ein Tagging-System, mit dem Benutzer Inhalte finden können, ohne nach dem "richtigen" Verzeichnis suchen zu müssen. Dies ist flexibler als Symlinks und weniger fehleranfällig, IMHO.
p.marino
1

Hier ist eine Idee. Schreiben Sie ein Skript, das dem Benutzer verschiedene Fragen zur Datei stellt und / oder den Dateiinhalt selbst abgleichen und dann den Speicherort für die Datei empfiehlt oder sie selbst dort ablegt. Das Skript kann so einfach oder so komplex sein, wie Sie es möchten.

Das Skript fungiert als Dateiverwaltungssystem, Entscheidungsunterstützungssystem und als lebendige Dokumentation der Dateisystemhierarchie. Der Linux Filesystem Hierarchy Standard ist ein Mythos, wenn man darüber nachdenkt, da es sehr große Unterschiede zwischen den Distributionen gibt. Die meisten Linux / Unix-Benutzer müssen sich jedoch nicht selbst mit der Dateisystemhierarchie vertraut machen, da verschiedene im System installierte Software vorhanden ist, die die Hierarchie auf standardisierte Weise verwaltet (Paketmanager, Konfigurationstool usw.). Verschiedene Anwendungsframeworks erstellen auch Skripts zum Verwalten ihrer Verzeichnisse, z. B. verfügt django über Verwaltungsbefehle zum Erstellen eines neuen Projekts oder eines neuen App-Moduls oder von Squash-Migrationsdateien usw.

Dies hat den zusätzlichen Vorteil, dass das Skript verschiedene Symlinks erstellen kann, wenn die Datei auf mehrere Arten gesucht werden muss, z. B. einen Index, der auf dem Autor der Datei oder dem Erstellungsdatum oder einer beliebigen Geschäftsregel basiert. Sie können das Taggen mit Symlinks simulieren. Ein Tag ist einfach ein Symlink aus einem tagsVerzeichnis, tags/mytag/myfilekann also ein Symlink zu sein actual/myfile.

Darüber hinaus ist es auch möglich, die Hierarchiestruktur des Dateisystems zu ändern, ohne die Benutzeroberfläche zu ändern.

Ein Dateisystem ist eine Datenbank. Keine relationale Datenbank, sondern eine hierarchische Datenbank. Stellen Sie sich das wie das Verwalten einer Datenbank vor. Sie möchten nicht, dass die Benutzer die relationale Struktur lernen müssen, sondern dass die Anwendung dem Benutzer verschiedene Aufgaben aufzeigt, die er ausführen muss (z. B. erledigen Sie eine monatliche Aufgabe) XYZ-Bericht, großartig, legen Sie ihn dann in diesem Ordner ab und erstellen Sie diesen Symlink. Anschließend müssen Sie eine andere Datei ändern, um aufzuzeichnen, dass Sie den Bericht für diesen Monat erstellt haben usw.).

Lie Ryan
quelle