I'm thinking an AI to analyze your photo library would take a really long time to run, just like downloading metadata for thousands of tracks from CDDB. I wouldn't tend to think of local storage of this metadata as a cache, especially since the user should always be able to correct mistakes (there's no way an AI will be right 100% of the time... probably 80% would be the best you could ever expect, but it's better than 0%).Brendan wrote:If the metadata can be obtained automatically, then it could be obtained automatically when it's needed and not stored anywhere. In this case the extended attributes would cache the metadata (e.g. to improve the time it takes to obtain) rather than adding something new.
I've faced these sorts of problems in real life, sharing photos with my wife and my parents. In practice, it isn't a problem because the amount of photos we share is far, far less than the amount of our own photos that we manage. Plus, the tools we use for managing the metadata make bulk updates really easy.Brendan wrote:I'm also wondering how you'd avoid problems with context. For example, a friend takes some photos with a phone and sets the metadata to "My family on holiday", and then sends these pictures to you (including the metadata). Now you've got pictures that say "My family" when it's not your family at all. There's also a major internationalization issue here - e.g. metadata in one language isn't going to be useful to someone who doesn't understand that language.
I used to be the same, but since I started using Spotlight I hardly ever browse the file system. If I remember part of the name of the file or app I want to open, I just hit command-space and start typing. In less than a second, what I'm looking for is selected in the drop-down search results menu and I just hit Return, and there it is. It's almost like having a command line that magically knows what the current directory should be.Brendan wrote:I'm the opposite - a hierarchical filesystem helps me find exactly what I'm after. For example, for OS development information I've got a large directory called "info" that contains hundreds of files, but this directory has many subdirectories (e.g. "video", "network", "CPU", etc). Using the hierarchical filesystem, if I want to find some errata for Pentium 4 CPUs I can find it fast because it's in the "/info/CPU/Intel/Pentium4/errata" directory. Without a hierarchical filesystem I'd be forced to use searches, which can be slow but more importantly aren't very precise - for example, maybe I use the word "netburst" in my SQL query and find nothing because I forgot the metadata called these files "Pentium 4" instead.
@mbluett: Your objection to hierarchical file system navigation is justified -- it really does take training for novices to understand. Fast & accurate search capability is much more user-friendly. However, you do not need a full database engine to implement this, as many of us have pointed out. Try OS X for a while and see for yourself....
This is why you use indexing.... The search service can keep the index file open all the time, and have access to everything it needs without constantly opening and closing files. The technology already exists today!mbluett wrote:Opening one file and closing it is not an issue. That is quite fast. However, when you have a search process traverse an entire file system containing 100's of thousands of files watch how long it takes. Each file results in at least two system calls. And each involves moving the heads and reading a file. This is the slowest part of the process.
In Mac OS X, the "file open" sheet has a "media" section on the left hand side in addition to the usual file system browser. You click on "photos", and your entire iPhoto library is presented as thumbnails. Even my Mom can figure this out.mbluett wrote:For example, say they want to attach a digital image file to an email. After clicking on the "Attach" button of your email package, what are you presented with? A filesystem browser box. What does the Novice do now?
As I said, it does exist on Mac OS X, but not because of a database engine. As to why, IMO it's a matter of business priorities. Apple's competitive advantage is their ability to make very simple, elegant user interfaces. Until recently, MS' focus has been more on the business side of things, along with a strong emphasis on adding features over increasing usability. I expect this to shift over time, starting with Windows 7, due to competitive pressure from Apple.mbluett wrote:With a database and properly designed applications there is no filesystem traversal. Instead, a database search occurs for image relative information, the image (or images) are retrieved, the user selects the proper one, it is attached and the user is all done. That is the way it should work. This type of thing might be available on the MAC, but does not exist in any other O/S I have ever seen. Why hasn't this issue been addressed in Linux or MS O/S's?
As for Linux, IMO its usability is always going to suffer because it depends too much on the good graces of volunteer engineers, and we engineers for the most part can't UI-design our way out of a paper bag.