It really needs to be everything - posts, comments, subscriptions, upvotes/downvotes, blocks, and mod status. It needs to be such that signing in to your account on the new instance is the same as signing into on the old one. It should be so seamless that you can just switch instances just to try out a new one and switch back again if it isn’t for you.
Indexes are unique to each instance. Post ID, Comment ID, Vote ID. There’s no way to correlate this information between two instances other than to do a full text match, post by post, comment by comment, vote by vote, to determine if what is being imported already exists on the new instance or is “new”.
Even if you go that route, then there’s the quandaries that follow… if you import what is effectively a “new” post to your new instance, do the comments (which aren’t yours) come along, or do you simply end up importing your post with no interaction history.
Then there is identity. You most likely have a non-local identity on your new server, as a result of federation, how does the new instance know that you are who you say you are, givimg you ownership of any of that existing content as it binds it to your, now, local identity?
I kinda just want to keep my cake day. I signed up on my first account on my IRL birthday, but then I created my own instance some time later and created an account on that one. I just thought it was fun to have it on my birthday. :(
This is a perfect example of how engineers/developers can fret over all sorts of technical challenges and compromises while completely missing the one thing a user wants most because it’s simple and sentimental and “human” which also turns out to be comparatively trivial to implement.
Indexes are unique to each instance. Post ID, Comment ID, Vote ID. There’s no way to correlate this information between two instances other than to do a full text match, post by post, comment by comment
I hope there will be a solution for this. It’s so unpractical. The only sane way to link to posts on other instances seems to be to cross-post them.
If you just share a link to a specific post or comment … people can see it, but unless they happen to have an account on that instance, they cannot interact with it. To do so, you have to search for it, and the search is not reliable.
Why can’t post or comment IDs be generated hashes, and each instance uses the same algorithm?
Someone else did bring up the point that the canonical URL is stored, so that does make correlation a bit easier.
Doesn’t solve the concerns you’ve brought forth. For example, the “I don’t have an account here”. A local instance can correlate a local post to a remote post, being able to provide a “open on original instance” link but it can’t be done the opposite direction, which would relieve this problem.
As for hashing, it too certain what that would gain but at some point there was obviously a decision not to correlate by the message UUID (which would accomplish the same thing). Since I wasn’t in the room can’t say why.
As long as they’re using UUIDs where they should be the possibility of a collision is literally so low as to be impossible, but that relies on all the pieces of software using good principles.
Message activity contains a UUID but the activity table is considered disposable and is purged regularly. Once the message is broken down into its parts and stored the universal identifier is lost. All correlation is local.
Posts and comments have a canonical URL (i.e. the original submission’s URL that’s linked to via the Fediverse pentagram), so that can be used as a foreign key when comparing.
I think identify claiming would need to have been designed into the original spec with something like a public/private key for account ownership to allow moving of related data in a safe way, or e.g. editing a post from a different instance than originally posted it.
Like I said, I was just running of the top of my head.
While it’s true they have canonical URLs, there still remains that there’s no apparent method for integrity checks. No way to validate a correlation between the “new user” and the post or comment that can prevent abuse.
Yeah, I wasn’t arguing, just thinking out loud too. I think the whole decentralised aspect of the fediverse means that ownership has to have a cryptographic answer because there’s no central source of truth that everyone can agree on.
I think moving accounts is a little easier than you think, apart from who gets to say that something should move. It’d be better to have a “pull” than something like the “push” solution that currently exists on Mastodon - there you can forward an account to a new place, as long as the old instance exists and cooperates (big ifs).
I’m mostly thinking about moving accounts (+ communities) in the case of when an instance suddenly vanishes.
Agreed. It really comes down to what is enough to satisfy most people. Exporting subscriptions is an easy implementation. Saved/favorited posts, slightly less easy but very achievable. Each of these could be safely done as a user initiated export/import.
Once you start getting into any type of ownership type work, votes, comments, etc. then it’s starts getting hairy due to integrity concerns. How do we trust that this activity actually belongs to the person claiming it.
It really needs to be everything - posts, comments, subscriptions, upvotes/downvotes, blocks, and mod status. It needs to be such that signing in to your account on the new instance is the same as signing into on the old one. It should be so seamless that you can just switch instances just to try out a new one and switch back again if it isn’t for you.
It won’t be anything even close.
Indexes are unique to each instance. Post ID, Comment ID, Vote ID. There’s no way to correlate this information between two instances other than to do a full text match, post by post, comment by comment, vote by vote, to determine if what is being imported already exists on the new instance or is “new”.
Even if you go that route, then there’s the quandaries that follow… if you import what is effectively a “new” post to your new instance, do the comments (which aren’t yours) come along, or do you simply end up importing your post with no interaction history.
Then there is identity. You most likely have a non-local identity on your new server, as a result of federation, how does the new instance know that you are who you say you are, givimg you ownership of any of that existing content as it binds it to your, now, local identity?
That’s just off the top of my head.
If you’re lucky you’ll get to keep your cake day.
I kinda just want to keep my cake day. I signed up on my first account on my IRL birthday, but then I created my own instance some time later and created an account on that one. I just thought it was fun to have it on my birthday. :(
This is a perfect example of how engineers/developers can fret over all sorts of technical challenges and compromises while completely missing the one thing a user wants most because it’s simple and sentimental and “human” which also turns out to be comparatively trivial to implement.
I hope there will be a solution for this. It’s so unpractical. The only sane way to link to posts on other instances seems to be to cross-post them.
If you just share a link to a specific post or comment … people can see it, but unless they happen to have an account on that instance, they cannot interact with it. To do so, you have to search for it, and the search is not reliable.
Why can’t post or comment IDs be generated hashes, and each instance uses the same algorithm?
Someone else did bring up the point that the canonical URL is stored, so that does make correlation a bit easier.
Doesn’t solve the concerns you’ve brought forth. For example, the “I don’t have an account here”. A local instance can correlate a local post to a remote post, being able to provide a “open on original instance” link but it can’t be done the opposite direction, which would relieve this problem.
As for hashing, it too certain what that would gain but at some point there was obviously a decision not to correlate by the message UUID (which would accomplish the same thing). Since I wasn’t in the room can’t say why.
As long as they’re using UUIDs where they should be the possibility of a collision is literally so low as to be impossible, but that relies on all the pieces of software using good principles.
Message activity contains a UUID but the activity table is considered disposable and is purged regularly. Once the message is broken down into its parts and stored the universal identifier is lost. All correlation is local.
Posts and comments have a canonical URL (i.e. the original submission’s URL that’s linked to via the Fediverse pentagram), so that can be used as a foreign key when comparing.
I think identify claiming would need to have been designed into the original spec with something like a public/private key for account ownership to allow moving of related data in a safe way, or e.g. editing a post from a different instance than originally posted it.
Like I said, I was just running of the top of my head.
While it’s true they have canonical URLs, there still remains that there’s no apparent method for integrity checks. No way to validate a correlation between the “new user” and the post or comment that can prevent abuse.
Yeah, I wasn’t arguing, just thinking out loud too. I think the whole decentralised aspect of the fediverse means that ownership has to have a cryptographic answer because there’s no central source of truth that everyone can agree on.
I think moving accounts is a little easier than you think, apart from who gets to say that something should move. It’d be better to have a “pull” than something like the “push” solution that currently exists on Mastodon - there you can forward an account to a new place, as long as the old instance exists and cooperates (big ifs).
I’m mostly thinking about moving accounts (+ communities) in the case of when an instance suddenly vanishes.
Agreed. It really comes down to what is enough to satisfy most people. Exporting subscriptions is an easy implementation. Saved/favorited posts, slightly less easy but very achievable. Each of these could be safely done as a user initiated export/import.
Once you start getting into any type of ownership type work, votes, comments, etc. then it’s starts getting hairy due to integrity concerns. How do we trust that this activity actually belongs to the person claiming it.
It’s not that on mastodon and it shouldn’t be that here either. There needs to be some consequence to switching instance.
No there shouldn’t be a consequence. However, most of this is related to server-load.