@larry would it be possible to create a new scope for this purpose? Some of us developers would really like our apps to be counted, but don’t want to tell our users that they have to let the whole world know their using a specific app.
Ideally this new stats scope would not ‘out’ specific usernames or hashes that can be looked up on explorer but could still render unique values that can be counted.
How would it work then? This current method of counting apps is done by scanning the profile.json of all the users. The solution you are asking for seems to be something that would still take up space in the user’s profile but not be traceable… which is impossible.
The only other way that it could work is if the sites themselves publish stats, and therefore have to record the stats in the first place (which would be unfortunate).
Stats are, by and large, centralized – to make them decentralized while keeping privacy is impossible from what I can see.
I do not know the details … but why not a scope that pings a public profile? It would work similar to publish_data, only all data would be to a specific profile maybe using “encryptContent”. Or maybe it just pings a service, rather than writes data, if that is more efficient…
I’m honestly not sure. I’m hoping smarter people than me could figure out something innovative out.
I think this is an important discussion, sort of expected it to start sooner or later.
Here’s my 2 satoshis.
If we ignore the technical limitations for a second: we probably want users to be able to hide the number of apps and what apps they are using. It’s their data. (Though we should have in mind then, that many users would like to also hide this information from the app developer as well)
However my understanding is that the list of apps is public so that app users can discover each other and connect/share data. I don’t think it’s possible (without a third party) for a user to sort of ‘announce’ that they’re using the app to other users and keep this information hidden at the same time.
From the top of my head here are some options that could improve privacy
Web of trust
Encrypt info about the apps you’re using only the public keys of users you want to share this info with (say your afari or stealthy contacts). But then we need a mechanism for how users outside this network can connect with you. Pseudoanonimity
Bitcoin approach: everyone knows every address’es balance, but it is hard to know who these accounts belong to. This would require the profile information like name, social accounts etc. to be encrypted so that it’s hard to trace back to the owner. Also possibly installing every app on a different subdomain so that info about what combination of apps someone has is not public. Obfuscation
Monero approach. Users have apps that they really use on their profiles, but also all or some of the other apps. Only the user knows which ones they really use. This would be a bit messy. Centralization
Might be possible, but sort of defeats the purpose of Blockstack: store a list of app users and urls to their gaia storage on a server belonging to the app developer.
Out of those I prefer pseudoanonimity and in the future, possibly, some sort of web of trust implementation.
I’ve been thinking a lot about this. I brought it up a while ago actually. I think there’s a conflation that happens in the decentralized space, so it’s important to remember: Decentralized ≠ Private. Privacy is an added feature of some projects.
Blockstack already allows for the same level of privacy that you can get with bitcoin (which is to say enough to be anonymous until someone really wants to find you). If you create an ID that does not contain personally identifiable information and if you do not participate in the social verification process, then you have a pretty anonymous log in you can use to hide the apps you use from the public.
Pseudoanonimity seems to be pretty good – though cumbersome. This could be implemented in such a way where the user derives a different ID for every app they want to use. The downside is that both cross-app integration as well as finding friends across apps would be impossible. I think the better way of doing it this way would be users doing it themselves when they want to keep their use of certain apps private.
Web of trust could be possible with the introduction of Gaia Inboxes; connect with the user via “invitations,” and then each user would record the other users’ information in their own “contact book”. I feel like this would be amazing, but would again have a significant downside: your “contact book” info could be out of date, and you might need to re-resolve everything with another invitation if they change their gaia hub, for instance.
I do love the Web of Trust method a lot as a second iteration of the profile.json, but with using this method stats also become impossible to record.
For better or worse, I feel like centralization – and specifically, apps recording their own stats – is the best way to do it. There’s nothing stopping them from being able to create them and even sell*(!) that information in the first place besides morals.