Isso existe: uma maneira padronizada de documentar uma estrutura do sistema de arquivos

11

No trabalho, sou responsável por manter a organização de muitos dados variados em um sistema de arquivos padrão. Parte disso é apresentar uma classificação sensata (por similaridade, necessidade, acesso de leitura / gravação, etc.), mas a maior parte está na verdade documentando: quais documentos / arquivos / mídia devem ir para onde, o que não deve estar neste diretório, "para algo ligeiramente diferente, consulte ../../other-dir", etc.

No momento, eu documentei isso usando um arquivo de texto sem formatação readmeem todos os diretórios que quero documentar. Se alguém não tiver certeza do que deve estar em qualquer diretório, ele lê esse arquivo.

Isso funciona bem, mas parece estranho que eu tenha essa solução personalizada primitiva para um problema que qualquer mantenedor de uma estrutura de diretórios não trivial deve enfrentar. Toda empresa que eu conheço, por exemplo, tem algum tipo de sistema de arquivos compartilhado, onde a terminologia acordada para categorização é importante. Na minha experiência, as pessoas apenas precisam aprender o que é o que é por tentativa e erro e experimentação.

Então, permita-me propor uma solução melhor e espero que você possa me dizer se ela existe. Qualquer diretório em qualquer sistema de arquivos pode ter um arquivo de texto sem formatação oculto chamado .readme. Seu conteúdo é uma linguagem humana descritiva. Ele usa alguma marcação como o Markdown, com pouco mais do que negrito, itálico e hiperlinks (relativos) para outros diretórios. Agora, um navegador de arquivos habilitado adequadamente procurará um arquivo nomeado .readmesempre que exibir um diretório. Se existir, seu conteúdo será analisado e exibido em um painel discreto próximo ao widget de caminho do diretório. Qualquer link nele pode ser clicado e o usuário será levado ao diretório de destino desse link.

Penso que o esforço de implementar esse padrão compensaria muitas vezes os ganhos de usabilidade. Teríamos, digamos, plugins para o Nautilus, Konqueror, etc. Ele poderia ser usado para exibir informações de diretório nas listas de arquivos padrão servidas pelos servidores da web. E assim por diante.

Então, pergunta: existe algo assim? Se não, por que não? As pessoas acham que é uma ideia que vale a pena?

jameshfisher
fonte
Como você menciona melhorias no sistema de arquivos (ou nos navegadores de arquivos de um sistema de arquivos específico), especialmente no código-fonte, também vale a pena mencionar o recurso muito necessário para a solicitação de arquivos . A maioria dos sistemas de arquivos possui dois tipos principais de pedidos: alfabético e não classificado. Mas e quanto a um pedido especificado pelo usuário? Por exemplo, no caso do código fonte, se você tiver 7 arquivos (classes, módulos, componentes) em uma pasta (módulo, pacote, componente pai), a ordem "lógica" deles geralmente não é a mesma que a ordem alfabética. Mas, ao contrário, é a ordem de sua "árvore de dependência".
Sorin Postelnicu
Portanto, como adições padrão aos sistemas de arquivos modernos, esses três recursos devem vir por padrão: 1) descrições de arquivos, 2) pedidos personalizados de arquivos dentro de uma pasta e 3) marcação / etiquetagem de arquivos. Não é necessário usar um CMS para se beneficiar desses três recursos "básicos".
Sorin Postelnicu

Respostas:

5

Tanto quanto eu sei, não existe um padrão. Aqui estão algumas idéias da minha experiência.

Configure, nunca mude

Isto é onde a maioria das empresas falha. Nada é pior do que uma estrutura de sistema de arquivos em constante mudança. Se não for possível mantê-lo constante, um sistema de arquivos puro é apenas o contêiner errado para organizar suas informações. Use um banco de dados ou um sistema de gerenciamento de conteúdo.

Use nomes de diretório descritivos e consistentes

Ninguém tem tempo para ler um .filingarquivo ou qualquer outra coisa. Se os nomes dos diretórios não forem autoexplicativos, você provavelmente estará perdido de qualquer maneira.

Escreva uma documentação para sua estrutura de diretórios

Escreva um documento em que explique o papel de cada diretório. Dê muitos exemplos. Torne-o disponível para qualquer pessoa que precise trabalhar com sua estrutura, mas não acredite que alguém a leia. Deve ser mais como uma Bíblia para você. Não é fácil encontrar um exemplo para esse documento, porque obviamente as empresas não os publicam. Um exemplo de software de código aberto é o padrão de hierarquia de sistemas de arquivos .


Se isso soa um pouco negativo, é. Nunca vi um repositório não trivial baseado em um sistema de arquivos com mais de cinco usuários trabalhando a longo prazo na prática. O problema é que, independentemente das categorias que você definir, as pessoas terão idéias completamente diferentes sobre elas. Então, para finalmente responder às suas perguntas:

Será que tal coisa existe?

Não, eu não penso assim.

Se não, por que não?

Na minha opinião: para uma pequena hierarquia estática com poucos usuários, é um exagero. Para uma grande hierarquia de mudança com muitos usuários, isso não funcionará porque a ideia de categorias (= diretórios, pasta) não é dimensionada.

As pessoas acham que é uma ideia que vale a pena?

Hum, é uma ideia interessante. Para ver se as pessoas o usarão, alguém precisa implementá-lo. Em vez de um .filingarquivo, você pode armazenar essas informações em um fluxo de dados alternativo (sim, as pastas também podem ter ADS). Você pode usar atributos estendidos no Linux e OSX. O maior problema provavelmente seria corrigir os navegadores de arquivos.

Ludwig Weinzierl
fonte
1
"Nada é pior do que uma estrutura de sistema de arquivos em constante mudança", exceto uma que se recusa resolutamente a mudar, mesmo quando a estrutura não faz mais sentido.
Jameshfisher
1
"Use nomes de diretório descritivos e consistentes" - absolutamente necessário, sim. Infelizmente, existe um conflito entre descritividade e brevidade - ninguém deseja digitar o caminho para um arquivo em / srv / all-hierarchical data / acessível apenas pelo escritório e admin / letras-mas-não-público -notices / ano-acadêmico-de-2009 / ... e assim por diante.
Jameshfisher
"Escreva uma documentação para sua estrutura de diretórios" - também é uma ótima idéia. É essencialmente o que estou sugerindo; apenas que a documentação seria distribuída em vez de monolítica.
Jameshfisher
"a idéia de categorias (= diretórios, pasta) não é dimensionada" - é verdade, exceto que às vezes é necessário. Digamos, grandes árvores de fontes de software ( git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree ).
Jameshfisher
"Em vez de um .filingarquivo, você pode armazenar essas informações em um fluxo de dados alternativo (sim, as pastas também podem ter ADS). Você pode usar atributos estendidos no Linux e OSX." Possível, imagino, mas diminui a portabilidade e a transparência que considero tão importantes. E se eu quiser colocar tudo em um repositório Git? Os arquivos de texto sem formatação são usados ​​para a configuração específica do diretório (por exemplo, htaccess), então por que não a documentação também?
Jameshfisher
2

wasabi vale a pena tentar. Na raiz do projeto, a fonte de texto sem formatação servirá como uma sólida visão geral do projeto e você poderá lançar o mesmo documento em um navegador para obter resultados mais sofisticados.

É verdade que não é uma solução baseada em sistema de arquivos, mas até que todos os sistemas de arquivos suportem algo comum, o wasabi (ou sua própria implementação) pode ser a melhor opção.

user3276552
fonte
1

Sua ideia tem algum mérito, mas receio que, quando você precisar de algo assim, realmente signifique que precisa de algo mais estruturado. Ou seja, um CMS, talvez apenas um leve, mas definitivamente algo mais do que apenas um arquivo de texto.

Especialmente se você deseja restringir a gravação (ou mesmo o acesso) de documentos específicos (e, portanto, as pastas que os contêm) a algum subconjunto da sua base de usuários.

Você não especifica seu sistema operacional, mas existem produtos excelentes (e gratuitos) como o alfresco que talvez possam atendê-lo melhor do que sua configuração atual.

p.marino
fonte
Eu brinquei com vários CMSes, mas descobri que portabilidade, simplicidade e transparência são custos enormes a serem comparados ao CMS mais venerável existente: a árvore de diretórios. A maioria dos dados que eu tive que gerenciar pode caber em uma hierarquia. Como último recurso, existem links simbólicos. E a estrutura de diretórios às vezes é a única solução: por exemplo, no desenvolvimento de software, o código fonte é, na base, uma árvore de diretórios. (. Diretórios Documentação como que geralmente significa que adere a um esquema rígido e enigmática, que eventualmente rompe Acho que a minha solução poderia ajudar também.)
jameshfisher
Como eu disse, sua ideia tem mérito, mas acho que, como o autor do outro pôster, isso não pode ultrapassar um determinado nível. Você menciona o código-fonte, mas este é um caso muito especializado - e quando você adiciona código, não procura nos diretórios existentes para descobrir onde ele deve "caber". Um CMS geralmente permite que você marque coisas para que você tenha "diretórios" (pastas, espaços, páginas) que funcionam como sua solução, além de um sistema de marcação que permite que as pessoas encontrem coisas sem precisar procurar o diretório "certo". Isso é mais flexível que links simbólicos e menos propenso a erros, IMHO.
P.marino 15/05
1

Aqui está uma ideia. Escreva um script que faça ao usuário várias perguntas sobre o arquivo e / ou faça alguma correspondência no próprio conteúdo do arquivo e, em seguida, recomende o local para colocar o arquivo ou colocá-lo lá. O script pode ser tão simples ou tão complexo quanto você deseja.

O script atua como um sistema de gerenciamento de arquivos, sistema de suporte a decisões e uma documentação viva da hierarquia do sistema de arquivos. O Linux Filesystem Hierarchy Standard é um mito, se você pensar sobre isso, porque há uma variação muito grande entre as distribuições. Entretanto, a maioria dos usuários de Linux / Unix não precisa aprender sobre a hierarquia do sistema de arquivos, porque existem vários softwares instalados no sistema que gerenciam a hierarquia de maneira padronizada (gerenciador de pacotes, ferramenta de configuração etc.). Várias estruturas de aplicativos também criam scripts para gerenciar seus diretórios, por exemplo, o django possui comandos de gerenciamento para criar novo projeto, ou novo módulo de aplicativo ou arquivos de migração de squash, etc.

Isso tem a vantagem adicional de que o script pode criar vários links simbólicos se o arquivo precisar ser pesquisado de mais de uma maneira, por exemplo, um índice com base no autor do arquivo ou na data de criação ou em qualquer regra comercial que você tenha. Você pode simular a marcação com links simbólicos. Uma tag é um link simbólico simples de um tagsdiretório, portanto, tags/mytag/myfilepode ser um link simbólico para actual/myfile.

Além disso, também será possível alterar a estrutura da hierarquia do sistema de arquivos sem alterar a interface do usuário.

Um sistema de arquivos é um banco de dados. Não é um banco de dados relacional, mas hierárquico. Pense nisso como gerenciar um banco de dados, você realmente não precisa exigir que as pessoas aprendam a estrutura relacional, mas deseja que o aplicativo apresente ao usuário as várias tarefas que ele precisa executar (por exemplo, você está realizando mensalmente) Relatório XYZ, ótimo, coloque-o nesta pasta e crie este link simbólico, e você precisará modificar outro arquivo para registrar que você fez o relatório para este mês, etc.).

Lie Ryan
fonte