¿Existe esto ?: una forma estandarizada de documentar una estructura de sistema de archivos

11

En el trabajo, estoy a cargo de mantener la organización de una gran cantidad de datos variados en un sistema de archivos estándar. Parte de esto viene con una clasificación sensata (por similitud, necesidad, acceso de lectura / escritura, etc.), pero la parte más importante es realmente documentarlo: qué documentos / archivos / medios deben ir a dónde, qué no debe estar en este directorio, "para algo ligeramente diferente, ver ../../other-dir", etc.

Por el momento, he documentado esto usando un archivo de texto sin formato readmeen cada directorio que quiero documentar. Si alguien no está seguro de qué debe estar en cualquier directorio, lee ese archivo.

Esto funciona bien, pero parece extraño que tenga esta solución personalizada primitiva para un problema que cualquier responsable de una estructura de directorio no trivial debe experimentar. Todas las compañías que conozco, por ejemplo, tienen algún tipo de sistema de archivos compartido donde la terminología acordada para la categorización es importante. En mi experiencia, las personas solo tienen que aprender qué es qué mediante prueba y error y experimentación.

Permítame proponerle una mejor solución, y espero que pueda decirme si existe. Cualquier directorio en cualquier sistema de archivos puede tener un archivo de texto plano oculto llamado .readme. Sus contenidos son descriptivos del lenguaje humano. Utiliza un marcado como Markdown, con poco más que hipervínculos en negrita, cursiva y (relativa) a otros directorios. Ahora, un explorador de archivos habilitado adecuadamente buscará un archivo llamado .readmecada vez que muestre un directorio. Si existe, su contenido se analiza y se muestra en un panel discreto cerca del widget de ruta de directorio. Se puede hacer clic en cualquier enlace que contenga, y el usuario será llevado al directorio de destino de ese enlace.

Creo que el esfuerzo de implementar tal estándar se vería recompensado muchas veces en ganancias de usabilidad. Tendríamos, digamos, complementos para Nautilus, Konqueror, etc. Podría usarse para mostrar información de directorio en las listas de archivos estándar que sirven los servidores web. Y así.

Entonces, pregunta: ¿existe tal cosa? ¿Si no, porque no? ¿La gente piensa que es una idea que vale la pena?

jameshfisher
fuente
Dado que menciona mejoras en el sistema de archivos (o en los navegadores de archivos para un sistema de archivos específico), especialmente para el código fuente, entonces también vale la pena mencionar la característica muy necesaria de la ordenación de archivos . La mayoría de los sistemas de archivos tienen dos tipos principales de ordenamiento: alfabético y no ordenado. Pero, ¿qué pasa con un pedido especificado por el usuario? Por ejemplo, en el caso del código fuente, si tiene 7 archivos (clases, módulos, componentes) en una carpeta (módulo, paquete, componente principal), su orden "lógico" generalmente no es el mismo que el orden alfabético. Pero más bien es el orden de su "árbol de dependencia".
Sorin Postelnicu
Entonces, como adiciones estándar a los sistemas de archivos modernos, estas tres características deberían venir por defecto: 1) descripciones de archivos, 2) ordenamiento de archivos personalizados dentro de una carpeta y 3) etiquetado / etiquetado de archivos. Uno no debería necesitar usar un CMS para beneficiarse de estas 3 características "básicas".
Sorin Postelnicu

Respuestas:

5

Que yo sepa, no hay un estándar. Aquí hay algunas ideas de mi experiencia.

Configúralo, nunca lo cambies

Esto es donde la mayoría de las empresas fallan. Nada es peor que una estructura de sistema de archivos siempre cambiante. Si no es posible mantenerlo constante, entonces un sistema de archivos puro es el contenedor incorrecto para organizar su información. Use una base de datos o un sistema de gestión de contenido.

Use nombres de directorio descriptivos y consistentes

Nadie tiene tiempo para leer un .filingarchivo ni nada más. Si los nombres de su directorio no se explican por sí mismos, probablemente se pierda de todos modos.

Escriba una documentación para la estructura de su directorio.

Escriba un documento donde explique el papel de cada directorio. Da muchos ejemplos. Póngalo a disposición de cualquiera que tenga que trabajar con su estructura, pero no crea que nadie lo leerá. Debería ser más como una Biblia para ti. No es fácil encontrar un ejemplo para dicho documento, porque obviamente las compañías no lo publican. Un ejemplo de software de código abierto es el estándar de jerarquía del sistema de archivos .


Si esto suena un poco negativo, lo es. Nunca he visto un repositorio no trivial basado en un sistema de archivos con más de cinco usuarios trabajando a la larga en la práctica. El problema es que, independientemente de las categorías que establezca, las personas tendrán ideas completamente diferentes sobre ellas. Entonces para finalmente responder a sus preguntas:

¿Existe tal cosa?

No, no lo creo.

¿Si no, porque no?

En mi opinión: para una pequeña jerarquía estática con unos pocos usuarios es excesivo. Para una gran jerarquía cambiante con muchos usuarios, no funcionará porque la idea de categorías (= directorios, carpeta) no se escala.

¿La gente piensa que es una idea que vale la pena?

Hm, es una idea interesante. Para ver si la gente lo usará, alguien tiene que implementarlo. En lugar de un .filingarchivo, puede almacenar esa información en una secuencia de datos alternativa (sí, las carpetas también pueden tener ADS). Puede usar atributos extendidos en Linux y OSX. El mayor problema probablemente sería parchear los navegadores de archivos.

Ludwig Weinzierl
fuente
1
"Nada es peor que una estructura de sistema de archivos en constante cambio", excepto uno que se niega resueltamente a cambiar incluso cuando la estructura ya no tiene sentido.
jameshfisher
1
"Usar nombres de directorio descriptivos y consistentes" - absolutamente necesario, sí. Desafortunadamente, hay un conflicto entre la descriptividad y la brevedad: nadie quiere escribir una ruta a un archivo en / srv / all-hierarchical-data / accesible-only-by-office-and-admin / letters-but-not-public -noticias / año académico-2009 / ... y así sucesivamente.
jameshfisher
"Escriba una documentación para la estructura de su directorio", también es una gran idea. Es esencialmente lo que estoy sugiriendo; solo que la documentación se distribuiría en lugar de ser monolítica.
jameshfisher
"la idea de categorías (= directorios, carpeta) no se escala" - true-ish, excepto que a veces solo tiene que hacerlo. Digamos, grandes árboles fuente de software ( git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree ).
jameshfisher
"En lugar de un .filingarchivo, podría almacenar esa información en una secuencia de datos alternativa (sí, las carpetas también pueden tener ADS). Podría usar atributos extendidos en Linux y OSX". Posible, me imagino, pero disminuye la portabilidad y la transparencia que creo que es tan importante. ¿Qué pasa si quiero colocar todo en un repositorio git? Los archivos de texto sin formato se utilizan para la configuración específica del directorio (por ejemplo, htaccess), entonces, ¿por qué no también la documentación?
jameshfisher
2

El wasabi vale la pena intentarlo. En la raíz del proyecto, la fuente de texto sin formato servirá como una descripción general sólida del proyecto y puede lanzar el mismo documento en un navegador para obtener resultados más sofisticados.

Por supuesto, no es una solución basada en un sistema de archivos, pero hasta que todos los sistemas de archivos admitan algo común, wasabi (o su propia implementación) podría ser la mejor opción.

usuario3276552
fuente
1

Su idea tiene algún mérito, pero me temo que cuando necesita algo como esto realmente significa que necesita algo más estructurado. Es decir, un CMS, tal vez solo uno liviano, pero definitivamente algo más que un simple archivo de texto.

Especialmente si desea restringir la escritura (o incluso el acceso) de documentos específicos (y, por lo tanto, sus carpetas que contienen) a algún subconjunto de su base de usuarios.

No especificas tu sistema operativo, pero hay productos excelentes (y gratuitos) como al aire libre que quizás podrían servirte mejor que tu configuración actual.

p.marino
fuente
He incursionado en varios CMS, pero he descubierto que la portabilidad, la simplicidad y la transparencia son enormes costos a pagar en comparación con el CMS más venerable que existe: el árbol de directorios. La mayoría de los datos que he tenido que administrar podrían encajar en una jerarquía. Como último recurso, hay enlaces simbólicos. Y la estructura del directorio es a veces la única solución: por ejemplo, en el desarrollo de software, el código fuente es, en la base, un árbol de directorios. (Documentar directorios como ese generalmente significa apegarse a un esquema rígido y críptico, que eventualmente se rompe. Creo que mi solución podría ayudar aquí también.)
James
Como dije, su idea tiene mérito, pero creo, como el autor del otro póster, que esto no puede escalar más allá de un nivel dado. Usted menciona el código fuente, pero este es un caso muy especializado, y cuando le agrega código no busca en los directorios existentes para encontrar dónde debe "encajar". Un CMS generalmente le da la capacidad de etiquetar cosas para que tenga "directorios" (carpetas, espacios, páginas) que funcionan como su solución, ADEMÁS de un sistema de etiquetado que permite a las personas encontrar cosas sin tener que buscar el directorio "correcto". Esto es más flexible que los enlaces simbólicos y menos propenso a errores, en mi humilde opinión.
p.marino
1

Aquí hay una idea. Escriba un script que le haga varias preguntas al usuario sobre el archivo y / o haga algunas coincidencias en el contenido del archivo, y luego recomiende la ubicación para colocar el archivo o lo coloque allí mismo. El script puede ser tan simple o tan complejo como usted quiera que sea.

El script actúa como un sistema de administración de archivos, un sistema de soporte de decisiones y una documentación viva de la jerarquía del sistema de archivos. El estándar de jerarquía del sistema de archivos de Linux es un poco un mito si lo piensas, porque hay una gran variación entre las distribuciones. Sin embargo, la mayoría de los usuarios de Linux / Unix en realidad no tienen que aprender sobre la jerarquía del sistema de archivos ellos mismos porque existen varios programas instalados en el sistema que administran la jerarquía de manera estandarizada (administrador de paquetes, herramienta de configuración, etc.). Varios marcos de aplicaciones también crean scripts para administrar sus directorios, por ejemplo, django tiene comandos de administración para crear un nuevo proyecto, un nuevo módulo de aplicación o archivos de migración de squash, etc.

Esto tiene la ventaja adicional de que el script puede crear varios enlaces simbólicos si es necesario buscar el archivo de más de una manera, por ejemplo, un índice basado en el autor del archivo o la fecha de creación o cualquier regla comercial que tenga. Puede simular el etiquetado con enlaces simbólicos. Una etiqueta es simple un enlace simbólico de un tagsdirectorio, por lo que tags/mytag/myfilepuede ser un enlace simbólico a actual/myfile.

Además, también será posible cambiar la estructura de la jerarquía del sistema de archivos sin cambiar la interfaz de usuario.

Un sistema de archivos es una base de datos. No es una base de datos relacional, sino una base de datos jerárquica. Piense en ello como administrar una base de datos, realmente no desea exigir a las personas que tengan que aprender la estructura relacional, sino que desea que la aplicación presente al usuario las diversas tareas que deben realizar (por ejemplo, ¿está haciendo una mensualidad? Informe XYZ, genial, luego póngalo en esta carpeta y cree este enlace simbólico, y luego deberá modificar otro archivo para registrar que ha realizado el informe para este mes, etc.

Lie Ryan
fuente