Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[suggestion] Taggable Folders #74

Open
cirillom opened this issue Apr 27, 2024 · 4 comments
Open

[suggestion] Taggable Folders #74

cirillom opened this issue Apr 27, 2024 · 4 comments
Labels
enhancement New feature or request

Comments

@cirillom
Copy link
Contributor

TagStudio should enable direct folder tagging, enhancing its functionality significantly. This feature would enhance compatibility with project-centric environments such as Unity and Android Studio, where various files and subfolders need to be grouped yet might include junk files that don't require tagging.

This functionality could be implemented by introducing a .tsignore file within folders. The file would serve both as a marker for TagStudio to recognize the folder as taggable and as a mechanism for users to specify which contents should be ignored (like .gitignore). This approach would allow users to find projects and resources used in the projects that could be useful elsewhere

@Vectasus
Copy link

TagStudio abstracts the file / folder structure entirely and keeps the files in one space. Using folders at all would be contrary to the concept.

@cirillom
Copy link
Contributor Author

TagStudio abstracts the file / folder structure entirely and keeps the files in one space. Using folders at all would be contrary to the concept.

@Vectasus this is only valid when you do not have folders that are basically files. TagStudio has the potential to be the main way we navigate the file system, being able to find projects that are folders is a total game changer.

@CyanVoxel
Copy link
Member

I'm open to an implementation of allowing users to tag their desktop folders in a way that fits in with TagStudio's mentality of abstracting the base filesystem, as Vectasus mentioned. System folder views may be added in the future anyway in order to help with workflows like this, but for now TagStudio tries to abstract the concept of folders away in favor of tags.

There's a couple recent features that might help with this though, and that's the ability to use your folder structure to automatically create and apply tags (though the current implementation is more geared towards a one-time import rather than continuous importing), as well as the ability to hide certain filetypes from your library.

@grepgrok
Copy link

TLDR; there are properties born fundamentally out of folders. The sum of the parts is not the whole. The whole without the parts is nothing.

I absolutely support this feature and I don't think it even involves the idea of folders. I think the core idea here is that what counts as "interesting enough to tag" is fairly vague. It could be a single file, a symlink, a tag, a folder, a scattered assortment of folders/files, hell, someone may even want to tag a random chunk of memory. The whole thing of TagStudio is to be able to organize more general things—specifically tags, but I don't see why that should preclude other general objects. I understand some things may be hard to keep track of (particularly that random chunk of memory) but I definitely think that folders themselves are worthwhile.

In particular, a number of software systems use "projects" which is the semantically more useful thing to tag. To put it in a nice example, consider:

  • Airplane (flying machine)
    • Wings (mechanical)
    • Seats
    • Crew (group)
      • Pilot (person)
      • Stewardess (person)
    • Passenger 1 (person)
    • Passenger 2 (person, annoying baby)
    • ...

This is a classic. Where is the airplane? You can point to any part (or any not-part) but that isn't really the plane, is it? And its not just a collection of parts either, otherwise every junkyard would be flying through the skies. There is an inherently abstracted notion that we are interested in: the airplane. And I want to talk about the airplane as being a flying machine. Also, note that I can't just tag everything as Airplane because a pilot is not an airplane. However, you still need wings and seats and a crew for an airplane, so we can't just get rid of the rest.

The sum of the parts is not the whole. The whole without the parts is nothing.

Technical Stuff

From what I understand (and this is literally me looking this up while typing, so I apologize if some of this is common knowledge), there are a handful of different types of file-system objects in a Unix-like system:

  1. Regular files,
  2. Directories (the topic at hand),
  3. Symbolic links,
  4. FIFOs (named pipes),
  5. Sockets,
  6. Device files
    a. Character device,
    b. Block device

Conveniently, all of these just glorified files according to Unix. And any file in Unix is packaged up neatly with its metadata in a structure called an inode.

Based on the TagStudio documentation, it seems like this is basically what an Entry Object is, but standardized and already done up for you. Based on the Wikipedia entry, I think you can map inodes to Entry Objects as so:

  • id: any Unix file in the file system is uniquely determined by a device ID and file serial number
  • name: not from inode, I guess just use whatever the current system is;
    • directories are basically maps from string names to inodes, so any inode will have an identifiable name
    • I will note that the identifiability of inodes may make collecting multiple names for the same file easier
  • path: like name, inode may not be helpful
  • field: I'm not really sure what this is supposed to be in the first place

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

4 participants