DEV Community

Cover image for A Catalog of Your Files
Amit Novick
Amit Novick

Posted on • Updated on

A Catalog of Your Files

My life revolves around digital files. Every piece of data important to me is represented as a file on my computer:

  • 📝 Notes that I take throughout the day
  • 🧾 Invoices and periodic financial reports
  • 🌐 A collection of website addresses
  • 📚 A collection of (e)Books
  • 🎵 A collection of audio files (Music, podcasts)

Files have become integral to my creative work and organizational capabilities, and I have amassed quite a lot of them by now.

But this post isn't about me specifically, since I'm certainly not the only person managing a lot of files. So if you have a substantial collection of files that are important to you on the computer, then this post is definitely for you!

The Problem I Had

As the volume of my files grew over time, I experimented with my computer's File-and-Folder management tools as possible solutions towards better organization of my always-growing collection.

My results have been the following: if you are interested in replicating an existing File-and-Folder system from your physical world, then the digital File-and-Folder tools (Windows File Explorer, Mac Finder) are probably the best you can get, since they represent physical objects (🖹 📁), only in digital format.

But for anyone like myself who wants to be completely digital, I argue that the File-and-Folder system is inferior in usability to a slightly different system which I will introduce in this post.

In the File-and-Folder system, the file is a unit of content, and the folder is the building block for making hierarchies of categories.

Putting a file in a folder is meant to signify: "this content belongs to this category". And since folders can be put inside other folders, this allows a more elaborate hierarchy of implications. Indeed, putting a folder inside another folder is meant to signify: "this narrow category is a part of that broader category".

This means that creating an association between a file and the folder hierarchy involves identifying a single suitable folder and inserting the file into it.

But what happens when there isn't a single suitable folder? what if we want the same file to be accessible via two different folders? 🤔 the File-and-Folder system forces us to choose between multiple equally horrible solutions:

  1. Decide which folder makes the most sense and try to forget about the association with the other folder (👎 and be disappointed when you can't find this file under the neglected folder when you look for it later on)
  2. Copy the file and put it under both folders (👎 the two files will go out of sync as soon as you make a modification to one of them)
  3. Combine all the files of the first folder with all the files of the second folder (👎 and lose the fine-grained categorization the two folders provided)
  4. Ponder your hierarchy structure for awhile and make a grand re-structuring so that Everything Makes Sense Again™️ with the new file in it.

To be fair, the last solution isn't totally horrible, as hierarchies often need to be re-structured in order to remain usable with the addition of new content. However, I found it to be too strict since it forced me to do the re-structuring upfront, which is inconvenient. My hypothesis on that is that our mental models of the hierarchy take time to adapt with each re-structuring that occurs, and so ideally we should delay it until our minds have fully wrapped around it.

My Solution

I propose to use a slightly different system than the File-and-Folder one.

Instead of the folder to file relationship being a one-to-many, this system offers a many-to-many relationship.

Filesystem vs. Catalog: Comparison Diagram

Left: traditional filesystem. Right: proposed system

From the image above, the diagram on the left is the traditional filesystem: files depend on the folder hierarchy, and can only connect to a single folder.

In contrast, the diagram on the right is my proposed hierarchy, where files are completely independent from the category hierarchy, and can connect to multiple categories (or none!).

In the physical world, this is impossible to achieve, since a file can only be contained inside a single parent folder at any given time, but computers 🤖 don't have to be restricted to what folders are like in the physical world, and can be programmed to deal with files that have multiple parent folders, or rather categories.

But I'm not here just to tell you that computers can work with this suggested system, but also that I have successfully implemented this system and use it every day for organizing my files.

I named this program Catalog because the idea is very much that each user is a cataloger and is given the power to classify his content by way of assigning categories to it.

Catalog is really easy to get started with, and users of File-and-Folder tools should find it intuitive to use. 👍 For example, Catalog has an interface for navigating the categories hierarchy which is strikingly similar to the interface you would already be using for navigating your folder hierarchy:

Catalog: navigating the categories hierarchy

Catalog: navigating the categories hierarchy

In short, Catalog is an open-source software which I maintain in my spare time, and is available for users on all platforms: Windows, Mac and Linux. It is 100% free of charge and doesn't require registration. Catalog also doesn't require an internet connection which means that it will run on your computer no matter where you go.

I welcome you to give Catalog a try:

GitHub logo amitnovick / catalog

Catalog - a file manager application for Desktop

Catalog Logo

In library and information science, cataloging is the process of creating metadata representing information resources, such as books, sound recordings, moving images, etc.

-- WIkipedia, the Free Encyclopedia

Catalog is a free, open-source file manager application. It helps organize files on local drives by adding categories to files. Users get the same user interface to manage their files on different platforms. Catalog is compatible with Windows, Linux and Mac. The application requires neither internet connection, nor user's registration to run on desktop devices.

Catalog App Screenshot

Downloads

Desktop application

Operating System Download
Windows Get it on Windows
macOS Get it on macOS
Linux Get it on Linux

Web Clipper browser extension

The Web Clipper browser extension is an optional companion to the Desktop application, It offers the ability to capture screenshots from websites for later reference.

Browser Download
Firefox Get extension for Firefox
Chrome Get extension for Google Chrome

Motivation

Digital file organization using folders is inefficient due to limitations of the folder concept itself. Catalog offers an alternative way to organize files using…

Please let me know if you have any issues by commenting below or even better: by opening an issue on GitHub.
I would also appreciate it if you ⭐️ or ❤️.
Thank you for reading!

Top comments (6)

Collapse
 
f_rez profile image
Felipe Rezende

Hi!

I may say i believe its a great idea!. I'm going to try it out.
If i get this correct, key concept of your develop is to be like the label based organization system in G Mail, am i right?

Regards,
F.Rez

Collapse
 
amitnovick profile image
Amit Novick

Hi there Felipe! 👋

I may say i believe its a great idea!. I'm going to try it out.

Cool! let me know if there's any issues! be sure to check out the Getting Started guide that I made just for new users like yourself!

If i get this correct, key concept of your develop is to be like the label based organization system in G Mail, am i right?

Absolutely spot-on 👍, I'm impressed that you were able to make the connection between the two programs based on the similarity of the hierarchy concept.

GMail labels can indeed be nested under other existing labels to form a hierarchy similar to Catalog's category hierarchy.

However, as far as I can tell, GMail's labels exist only in GMail (not available in other G-Suite services such as Google Drive). This is a huge limitation 😧. That's even before you realize that Google could drop the entire label system tomorrow despite it being a feature that you rely on every day.

On the other hand, Catalog offers a generalized hierarchy system that you can use not just for your emails, but also for all files on your computer 💪. The code is Open-Source, small, and readable: therefore you are not dependent on a vendor's commercial interests with your valuable data.

Collapse
 
philhosoft profile image
Philippe Lhoste

Interesting. It sounds a bit like TagSpaces tagspaces.org/
I might try both and see which one better fits my needs.
(It is good to have choice... 😊)
Thanks for sharing.

Collapse
 
amitnovick profile image
Amit Novick • Edited

Thanks for sharing your thoughts Philipe!

TagSpaces is a great app! looks very polished and well maintained. Props to the authors for also releasing it as Open-Source software ❤️.

Personally, I found that it wasn't for me, since it doesn't support hierarchies in the way I described in this article 🙁. It seems that a substantial amount of users have already realized they wanted this feature and posted several times on their forums asking for it. Here's one post from 2014.

Collapse
 
hoffmann profile image
Peter Hoffmann

What you are describing seems to be a tag based filesystem. There are solutions that can be accessed with your traditionel file manager.
You could also link files into multiple folders.

Collapse
 
amitnovick profile image
Amit Novick

Hi Peter!

Thanks for taking the time to share your thoughts on this! 🙂

The solution you're (very briefly!) describing is Symnolic link (aka soft link).

Actually I experimented quite a bit with Symbolic links myself before deciding it's not the solution I'm looking for.

Here are my thoughts on that:

  • Symbolic links create a second, linking file, with a separate name. That means that if you are using some traditional file manager tools like find to look for it under some folder structure, you will retrieve duplicate results ➿.
  • The linking file isn't removed when the original file is removed, leaving you with broken links that have to be manually removed 😫.
  • The filesystem doesn't perform bulk deletion operations as an atomic operation, which means that if you were trying to remove several files at once but your computer crashed, you might find that the filesystem didn't complete the operation and is left in an unclean state with unwanted leftover artifacts 🤦🏻.

Catalog addresses all of these concerns by managing the hierarchy on its own and being able to work across operating systems with very low filesystem I/O overhead.

Feel free to let me know what you think!
-Amit