fraction / oasis

Free, open-source, peer-to-peer social application that helps you follow friends and discover new ones on Secure Scuttlebutt (SSB).
http://oasis-demo.fraction.io
GNU Affero General Public License v3.0
287 stars 42 forks source link

Same-as support #267

Open christianbundy opened 4 years ago

christianbundy commented 4 years ago

This sounds crazy but I swear it isn't.

What's the problem you want solved? Lots of people have lots of accounts and there isn't a clear way to link the accounts. On SSB this is usually called #same-as, and there's some deprecated code here that doesn't work, but the spec is there.

Is there a solution you'd like to recommend? If you're following someone publicly, maybe give two options: "unfollow" and "same-as" (TODO: better wording). If you select same-as, it publishes a message that says { following: true, blocking: false, sameAs: true }. The easiest win would be changing the Mentions page so that it adds mentions for all of your feeds instead of just the one you're on now. We could iteratively add features like:

Anyway, my thought is that it can be iterative, and that literally just changing Mentions will have a gigantic impact on the adoption of same-as by other clients. :man_shrugging:

cinnamon-bun commented 4 years ago

Yeah! This is the start of a complex UX challenge but it's a good place to start. I have many thoughts!

Having to follow first before seeing the same-as button is unintuitive, could it always be there?

There are lots of relationship actions, maybe it makes sense to put some of them behind a dropdown. This could be one, since it will be rarely used.

We'd need a way to undo it also. Different-than. :)

same-as sounds like jargon - how about "Claim as my profile"?

Let's see, there are 4 cases. What should we show on a 3rd party profile page (not your current identity's profile)?

Neither I nor the profile I'm viewing have sent same-as

I've not sent same-as, but the profile I'm viewing has

I've sent same-as, profile I'm viewing has not

Both have sent same-as

Lastly, every profile (yours and others) should show a list of the other confirmed same-as accounts (or be a single merged profile page, but that's tricky)

cinnamon-bun commented 4 years ago

Let's call a cluster of same-as'd identities an "identity bundle" for lack of a better word.

I wish we could hide this whole situation from users so it just feels like a seamless single identity across devices, but I don't think we can plug the leaks in this abstraction. Instead of hiding it, I think it would be better to highlight the difference so users understand the concept.

Lots of challenges to solve!

Profiles and names

Relationships

Private messages

cinnamon-bun commented 4 years ago

Right about now I'm wishing same-as worked by using a single shared keypair among all devices. Then we could use the keypair as a stable ID for the bundle.

cinnamon-bun commented 4 years ago

Anyway I'm thinking too far ahead! Yes to this:

cinnamon-bun commented 4 years ago

Discussion: using the upcoming private-groups for sameAs purposes

http://localhost:3000/thread/%25Rmmkx2uuqYyxh%2BhNljaNsZrMKoItIdiUXslzTBmZSvg%3D.sha256#%25Rmmkx2uuqYyxh%2BhNljaNsZrMKoItIdiUXslzTBmZSvg%3D.sha256

casutherland commented 4 years ago

It could be of interest to review how keybase provides a fluid #same-as user experience, by composing the user's identity graph (linking to hellobot's as Chris's graph is not rendering) from the user's device identities and the device sigchain.

Reconstructing this graph is what the Keybase app does, using chris's chain. It also checks each of the social proofs: the tweets, gists, etc., to make sure the edges are truly bidirectional.

Aside: as was mentioned previously elsewhere, SSB could potentially provide a social proof endpoint, in addition to consider a similar proofing and sigchain mechanism to implement #same-as.

tunnckoCore commented 4 years ago

@qcu, just was thinking about the same thing.

Meanwhile I found there's ssb-identities which seems like such thing, reasons not using it?

anicolao commented 3 years ago

I don't see how this can possibly work in the presence of private messages, or even how you send private messages to someone with it being clear how to encrypt. It's not a stretch to imagine someone with more than 7 same-as identities, or trying to send a message to two people whose sum of same-as'ed identities is more than 7, or a user who expects to be able to read your old message with a newly minted same-as identity.

christianbundy commented 3 years ago

@anicolao You need to either change how private messages are encrypted or say "we can only encrypt to this maximum number of recipients". 🤷

CommanderMoto commented 2 years ago

So, DID 1.0 was officially released as a W3C recommendation today. I believe this information should be relevant to the same-as discussion. If this is a topic that has been waiting for a proper Standard to help solve some of its challenges, well - we're un-blocked now!

jphastings commented 1 year ago

I think you'd need to create a "meta" identity to hold all the fluid accounts that are same-as. It'd be a substantial change to support such a thing, but it'd offer lots of flexibility. I'd see it operating like this:

  1. Me (Phone) initiates 'same-as': A new SSB identity/private key is created ("Meta private key").
  2. Meta account is created: Meta private key is encrypted so only Me (Phone) can decrypt, and included in a post from the meta account which declares "This is a meta-account including Me (Phone)"
  3. Me (Phone) sends invite to Me (Laptop) to join meta-account: a private message including the Meta private key encrypted so only Me (Laptop) can decrypt.
  4. Me (Laptop) accepts request to join: Uses meta-account private key to repeat (2) from Me (Laptop).
  5. New followers can follow the meta-account, and clients will automatically follow both Me (Laptop) and Me (Phone) behind the scenes, showing both as if they were posted by the meta account.

Does this seem wildly infeasible or undesirable?