This RFC has made me to think a lot. Lots of questions, and doubts.
What if some app starts to store some photo metadata inside objects serialized into binary MutableData and label it with “photo”? How this will be useful to other apps? Will they see this data?
Will icons, design projects, document scans, logos, comics also be automatically labelled “photos”? Will it be labelled based on file content, or extension? MIME is available only in Web / Electron, from what I’m aware. What with other apps (Java, C, FFI + whatever)?
What other labels would be automatically created? What would be a “standard” set of labels?
How we differentiate labels from folder path? If we have folder “abc” labelled “photos” and also a label “abc”, what would “photos/abc/1.jpg” refer to – a file inside folder or a labeled file?
Why multi-labels have to be in alphabetical order? They represent AND operator, and it’s commutative (a AND b == b AND a).
Is it app:safe-cli or app(safe-cli)?
Is it allowed to label two files with same name with same label? How would “safe index get photos meInJapan.jpg” work then?
How would you implement automatic mapping of similar labels (mentioned Photo = Foto)? Artificial Intelligence? Dictionaries?
How would multi-label indexes be implemented? If we want “me/photos”, we have to traverse all objects from “me” and for each of them traverse “photos” to find if it’s there, so highly inefficient. Would multi-indexes be created for all combinations of all labels? Or would apps create indexes that they need to use? If you uninstall the app, would the index be deleted? What if other app also needs it? Create another structure to track which app uses which index?
Now it’s possible for an app to pretend to be another app, you just need to connect with different id, which is just a normal string you can copy inside your code. I think that at some point, apps will access each other’s data just by pretending. If there is a popular photo app called “photo-album”, all photo apps will eventually start putting photos inside this app’s folder. This would work wit ZERO effort from MaidSafe team, it’s already implemented in Alpha2. Siloing goes away with that.
I think there are more important problems for the Team to solve, as immutable, appendable, unpublished etc. data with per-user permissions, this is the basis of the project, and still not ready to use. MaidSafe should focus on things that app devs don’t know how to create. Indexing and labeling is a common problem for app/lib developers, I would leave it to them. Maybe it’s too much to call this a feature creep, But my opinion is that you have more important things to think about.
cheers
Maciek