RE: https://neuromatch.social/@jonny/115343246885448739

Rumors that the fediverse can't do mobile identity have been greatly exaggerated: #FEP_1580 is now in draft status - https://codeberg.org/fediverse/fep/src/branch/main/fep/1580/fep-1580.md

This is a proposal for how to migrate all your stuff along with you when you move instances.

The gist:

  • Send a request to move along with a set of stuff you'd like to bring with you. Moderators (optionally) can, approve, send back a change request, or deny. If the changes look ok, start the move, if not, hey you avoided incompatible moderation. Should be possible to layer in any kind of bulk actions you might want: "everything except my DMs," "strip attachments," "only my favorite posts," "nothing," etc.
  • keep a public collection of move events signed by both the source and target for durable, portable proof that you are the same person as the old account
  • the new instance crawls your old account and grabs whatever you specified, and then posts a mapping from old URIs to new URIs.
  • other instances can then immediately remap the URIs so e.g. future interactions get sent to the right place, and then gradually update their local versions over time, spacing out traffic.

Just using existing ActivityPub mechanisms. There are 6 new terms.

Bonus: lays the next steps to migrate to content addressed URIs, decouple accounts from instances, and merge and split accounts.

It being a draft means that there is a 60 day (or longer) public comment period, and feedback/edits/etc. Are very much welcome.
Issue: https://codeberg.org/fediverse/fep/issues/702
Discussion: https://socialhub.activitypub.rocks/t/fep-1580-move-actor-objects-with-a-migration-collection/8111

#FediDev #MoveAllPosts

Gonna try and negotiate an acceptable implementation with the masto devs (if u see this no pressure! Ik ur busy), will take a bit of background work like to implement an integrity proofs FEP, so may take a bit, but if you wanna write this with me I would love to work together on this. hopefully its implementable, it's my first spec document ive ever written so idk what I'm doing rly I just think I can write it and wanna move my posts around and break down the feudal fedi
Also if anyone wants to write about the social/political/governance problems caused by not being able to move your stuff with you when you move for motivating context, I'd be glad to put it in, I haven't had the energy to write that yet

Also it treats post backups as posts (I mean they should anyway, importing a list of posts is the same as posting a list of posts, and backdating is not a crime), and if instances support exporting your private key with account backups, then you can create a Move activity without needing the source instance, so account backups are just... your account in a file, so you can restore if your instance goes down or becomes hostile.

CBOR and CAR files and Merkle Search Trees are cool, but so is a zip file of JSON.

(This is spec'd as a "should" BC there are some problems to work out incl. Key rotation and etc. but the mechanism for remapping is general and driven by the new instance)

also it theoretically allows you to do a chain of moves, including moves without changing actor URI to rotate keys, so you can deal with repeated moves or old posts. idk it may help with key rotation but I know enough about cryptography to know that I don't know enough to say that confidently.
Speaking of which, shoutout to @ansuz for taking the time to give input and info on some of the cryptography stuff (if there are places where I am super wrong about things that is all me though)

@jonny Hey, are you still working on this FEP?

I wrote a short review a couple of weeks ago. Sometimes SocialHub email notifications don't work, so here's a link to my post in case you missed it: https://socialhub.activitypub.rocks/t/fep-1580-move-actor-objects-with-a-migration-collection/8111/22

FEP-1580: Move Actor Objects with a `migration` Collection

Supporting instances MUST indicate their support of this FEP by including its namespace in the @context of affected Actor objects. I think it would be better to use a regular property (e.g. supportsObjectMigrations) because most Fediverse platforms don't use JSON-LD and don't parse @context. Some may not want to add @context to their objects. Another option is FEP-844e. A "proposed move" is an Offer[Move] activity emitted by the source instance addressed to the target instance's shared inbox (an...

SocialHub
@silverpill
Yep! Just was on vacation and had a conference to do. It's on my list for Monday to do some followup and updates
despite receiving probably the most notifications of anyone on fedi, i have been told that this may be of interest to @pluralistic , having written extensively about the importance of the power of being able to leave re: preventing feudalism and lock-in

@jonny No response? Maybe you have to invoke him the Beetlejuice way: @pluralistic @pluralistic @pluralistic

Look Cory, better account portability FEP!

@jonny this is awesome!!

Along with load all posts, you're single handedly (well, not really, ty other fedi devs, but you get what I mean hopefully) improving fedi usability by like 200%

Fedi developer of the year award winner right here

Ty for doing this!

@danvolchek thank you. all i know how to do is collections, enumerate they collections, eat hot collections, and collection.

@jonny just as a note for the future: content addressed resources would be technically tricky, but would also have a lot of desirable technical benefits. The biggest problem with implementing that is social, though. You need to know how to route reports about a given resource. Right now, that's inferred from the host name, and that likely breaks down under content addressing.

It's something I'd be more than happy to talk through some time

@jenniferplusplus yes of course! we are gonna start experimenting with the distributed trust idea that we talked about nearly a year ago by next week when we finalize two last sciop things and move to federation work. definitely not doing away with instances, just shifting their role, and i think doing reporting when an actor can be a part of several instances will be a good and hard puzzle
@jonny Thank you for this but also for the list of things that are out of scope in the proposal. I initially skimmed it and had a load of 'how do you do X' things, and it was great seeing a list of 'X is out of scope, it's handled in this other FEP' things, which avoided my need to ask stupid questions.
@david_chisnall i appreciate you saying so, and also if you did have any remaining questions i promise you i will not think they are stupid.
@jonny I have only a very vague understanding of ActivityPub, but I found this easy to follow and all of my questions were either answered or explicitly not answered as being either future work or covered on other specs. It was a great read, thank you!
@david_chisnall i was not expecting to hear that this document was an enjoyable read, that is high praise and thank you for it.

@jonny

I might be a statistical outlier in the kinds of things I enjoy reading.

@david_chisnall the world is richer for its outliers :)
@jonny looking forward to Digging into this!

@jonny

Very cool. We absolutely need a full-fidelity move that’s supported by as many apps as possible, and you FEP looks very well written.

I’ll catch up on your work and share my thought on codeberg :)

Could you compare/contrast this with the LOLA work going on under the W3C. It’s a solid plan, but it can be hard to decipher in places: https://swicg.github.io/activitypub-data-portability/lola

I think it’s super important for us to define migration well, once. Competing specs could easily derail the whole thing.

LOLA Portability for ActivityPub (0.2)

@benpate @jonny
These are very consistent in the stuff that both do - it is clear that ActivityPub is already *almost* able to do content portability just by serving up content the way it does. We have a task force within the SocialWebCG working on account portability - jonny would you join a call if we schedule one soon?
@lisarue
@benpate
Absolutely! DM me here or email [email protected]
@jonny @lisarue @benpate
Excited to see where this is all leading!!!
Hopefully this will let fediverse servers act in a more PDS style manner a la bluesky
@valorzard
@lisarue @benpate
Yep, there's never been a technical reason activitypub can't do mobile identity, even truly delocalized identity, its just a matter of nudging the existing implementations to a point where you can make a jump

@jonny @lisarue @benpate
Do you think @silverpill portable objects proposal can compliment what your up to?

https://codeberg.org/fediverse/fep/src/branch/main/fep/ef61/fep-ef61.md

fep/fep/ef61/fep-ef61.md at main

fep - Fediverse Enhancement Proposals

Codeberg.org
@valorzard
@lisarue @benpate @silverpill
It is indeed the medium term goal
@jonny @lisarue @benpate @silverpill
If you need any help implementing any of this I’d be down.
Idk wtf I’d do, but I’m down
(Either portable objects or migrations)
@valorzard
Once we get a nod from masto devs on whether they'd accept it I can sketch out a few sections, and in the meantime I'm gonna get rolling on glitch

@lisarue @jonny

If you get something scheduled, I'll do my best to attend :)

@benpate @lisarue thanks for reminding me to respond to that email 🫣

@[email protected] @[email protected] please keep in mind that simplicity is key. I think that's Jonny's FEP's strength.

The more complicated it is, the less buy-in, and you need all the buy-in you can get!

@julian
@lisarue
Thank you for saying so! I tried to keep it as simple as I could and take care to carve out space for low-resource authors to implement gradually, though when all the necessary considerations were on the table it feels more complicated than I would like. Glad it still feels simple to others :)
@jonny
Well, that sounds amazing! Great work, everybody and thank you all
@jonny how does this relate to the LOLA proposal from the SWICG? That has been in progress for quite some time and I’d like to see a comparison / how this integrates or handles the cases and issues identified.
@andypiper
I heard of the LOLA proposal after drafting this, and still havent found it but now knowing it comes from SWICG should be enough to. I'll take a look. I would defer to protocol experts, but lemme take a look
@andypiper
Brief read: looks nearly compatible, some things are more explicitly spec'd here, some more explicit there, this relies more on target instance and attempts to minimize role/burden on source instance, theirs is more source instance centric, this relies more on cryptographic proofs and exclusively AP, theirs seems to be oauth and webfinger. But it seems like reconciling shouldn't be hard
@jonny it's here. i gave it a quick read, and i don't think these are mutually exclusive.
LOLA Portability for ActivityPub (0.2)

@jonny Thank you for putting in so much work to put this together. I hadn't realised you were the person who had shared it in the Github thread, when I saw it there. It looks really good, and it's great to see that it's compatible with earlier FEPs like https://codeberg.org/fediverse/fep/src/branch/main/fep/ef61/fep-ef61.md, too.

It's good that this includes some ability for the new/target instance to decide whether it wants to accept content—target instance admins were the main source of pushback I got when building my (very basic) ...

fep/fep/ef61/fep-ef61.md at main

fep - Fediverse Enhancement Proposals

Codeberg.org

@jonny ...migration tool a few years back. Most of the objections were unfounded and based more on fear than reality.

Drawing on that experience, I wonder if by letting target admins decide whether or not to accept content separately from accepting a the overall migration, or which parts of a user's content they will or won't accept (allowing them to strip out DMs, for example, or media), is going to cause problems. Primarily that will be a moderation burden because admins fear they're going...

@jonny ... to be deluged with problem content when the reality is it's going to be a pretty small part of it. I'm concerned the consequence of this is going to be friction against the whole feature, and a knee-jerk reaction that says "this just shouldn't happen at all" rather than working with you to find a way to make it work.

It could also create a situation where a user can think their content will be migrated but afterwards discover that only half of it is there. ...

@jonny .... Really, if a target instance isn't going to accept a user's content that should be flagged at the start, not once the account has been migrated but the moderator is later considering whether to accept the content as well. (Am I misunderstanding the proposed sequence of events?)

In general, while I appreciate there needs to be a way to prevent abuse and accommodate admin's concerns about problem content, admins are a big part of why this feature doesn't exist, and I'm concerned ...

@jonny ... giving them the ability to accept only part of people's content and/or make that decision after the user has otherwise migrated is going to empower them to basically torpedo what you're trying to do, by causing bad experiences for users (whether or not intentionally), demanding the ability to moderate and then not being willing to handle the moderation traffic, or just hindering people's ability to move their content. ...

@jonny ... There's also privacy concerns. Few admins will read posts or people's DMs unless something is flagged as abuse, but it looks like what's proposed here puts all of people's content in front of admins and asks them to review it, which is much more invasive than typical use of the instances otherwise.

If instances accept people signing up and posting without review, I question the grounds on which they want to be able to review all of someone's posting history before allowing migration.

@jonny ...To cut a long thread short, my personal feel is that while abuse should be prevented and migration should be managed in a way that respects rate limits and doesn't overload instances, a lot of other instance admin concerns are more fear than reality, and may lead to a solution that raises privacy concerns and the risk of unexpected user data loss, while empowering admins to hinder a process they basically don't want to happen, undermining the whole concept of content portability.