This is the super thread for the Collections feature on Blockstack.
A collection is a user-owned bucket of data which is writable and readable from different applications, each of which will need to ask permission for the bucket. Users will be able to revoke that permission from their browser. As an example, a user can have a single photos collection that can be brought to different photo apps and messaging apps.
Below is a list of previous threads and github issues related to this topic:
Definitely something that should be implemented if Blockstack wants to create a competitive Web-Based App Platform (something like a replacement OS – could you imagine a blockstack(chrome)book?).
Another thing to consider is if all apps write inside an appdata collection. One of the issues that’s been bouncing around in my head is how does an end-user truly mange their data if they don’t know where it all is?
If you sign into an app – say, lioapp.io – and the appdata is stored in it’s generated app bucket… and then you forget that the app even existed, or the app itself is deleted. You have no idea what the app bucket is, you have no idea it even exists, so if you wanted to clear your entire blockstack data that would remain out of the picture – even the storage provider wouldn’t know who it belongs to (AFAIK).
Lets also say that someone wants to host a GaiaHub storage node, but they only have 200gb and so they want to limit it to 50mb per user. In the current setup they have no way to do that, but if we had an appdata collection, users could track how much storage their apps are actually using… and if an app wanted to obfuscate its name it would technically still be free to do that but at least the user would know it exists.
Perhaps there’s other solutions and/or problems with that, but regardless collections for multi-app sharing (for pictures, videos, music, documents, messages/notifications) would be very useful and important in the future of Blockstack.
I see collections just as another app bucket on gaia defined by the mime-type (instead of the appDomain) like vnd.blockstack.collection/image, vnd.blockstack.collection/note or vnd.blockstack.collection/vnd.myexample.whatever. (Simlar to the Android content provider approach)
The type vnd.blockstack.collection defines that you have key/value pairs, and the subtype defines that the value of the pair follows the particular schema.
The browser could keep track of all apps and collections that the user has signed in, in a private file.
I would caution against making the browser responsible for indexing the GaiaHub as the browser’s data could be deleted – this should be the responsibility of the GaiaHub itself.
I do think collections could be handled as buckets though, if the ability for sub-buckets exists (and those sub-buckets having the ability to have different sharing attributes as well).