Lemmy Handshake - Beta release

gusVLZ@sh.itjust.works to Fediverse@lemmy.world – 712 points –

The app that synchronizes multiple lemmy accounts so you can migrate and keep backup accounts across instances, it's opensource and free, currently working in android and windows.

It's in homologation now and anyone can test, any feedbacks are welcome as always.

If you find any bugs please report

Github Source


Download now


91

This should be in the lemmy code. Federate out accounts.

Seriously, would it be possible to integrate Lemmy Handshake into Lemmy source code?

I feel this should be part of the core package.

Do you accept PRs? I’d love to setup an iOS build for this

Of course, I'd love iOS support but I don't have iphone

Would love to have this on iOS πŸ™πŸ»

LASIM is similar and while it won't run on iOS it will work on *Nix, Windows, and MacOS.

Unfortunately I’m basically 99% mobile only in my personal life, and while I could drag out my laptop for this it would just be hella nice to have an iOS app for the function. Thank you for the think, though!

Beware!

This unsubscribed me from twenty+ communities on all of my instances. It first tried to subscribe all of my accounts to all of the communities of my largest instance, which is what I wanted it to do. One instance failed to sub to 20+ communities, which was fine, as it was a smaller instance.

Ten minutes later, however, I got a notification that it had unsubscribed all of my other instances from those communities as well. It took me about an hour to figure out most of the ones that had been lost, and even now I think I'm missing a few.

I'm sorry it happened, it definitely should not do it, could you describe the steps you made to trigger this behavior? So I can patch it ASAP?

Please add a logging functionality, so that even if something like that would happen in the future because of some special case bug, it would still be possible to figure out which subscriptions were removed.

Same thing happened to me, it seemed like it didn't do it when I had just two accounts, but it did do it when I had 3.

Not sure if it has anything to do with certain communities not being federated to the other instances

Here is everything I can remember doing:

  1. Downloaded the apk

  2. Installed and opened the program

  3. Allowed notifications

  4. Input my four instances: lemm.ee, sh.itjust.works, lemmy.basedcount.com, and lemmy.ml

  5. Hit "sync" and watched them sync. Three of these instances had almost the same number of communities (around 120), but one had none whatsoever. It took two or three minutes for that instance (basedcount) to sync all of the communities, and in the end, it wasn't able to subscribe to about 20 of them for some reason. (maybe because nobody had ever gone to/searched for those communities from that instance before - I've heard this can lead to access problems, but you'd probably know more about that than I would)

  6. About five minutes later, I got couple of notifications saying that 6(-ish) communities had been synced and that 18(-ish) had been unsubscribed across my instances. This confused me, so I checked my instance list and saw that all three of my instances with around 120 communities now had around 95.

  7. I disabled notifications because they were starting to feel spammy.

  8. I looked at the notification again and realized what had actually happened. I immediately uninstalled the program and resubscribed to as many communities as I could on lemm.ee, my main account.

Sorry this is so long - I hope it helps!

Thank you so much for taking the time to write this, it will be so helpful for sure

No reddthat too? 😜

Ooh, great suggestion - I just signed up there as well! Thanks!

Amazing! You have just filled the biggest crevice of Lemmy! Thank you!!

Unfortunately it doesn't seem to be working for accounts with 2FA. Had to disable it to get the job done.

Vish, this is really an issue, I'll add it to issues so I can check if it's possible to fix later

Awesome to hear. It has already been useful for me, just so I could move my subscriptions to another instance, because the one I'm on has been under fire lately.

Ooh syncs saved posts as well! Definitely downloading this

Edit: Ah that's not ready yet. Still very cool

Soon it will sync, I didn't have much time last weekend

Maybe now people can finally spread out... It's just sad to see everyone on Lemmy.world as if it was the new Gmail or something.

One of the main reasons I did it, so people can spread across instances

My company blocks lemmy.zip on WiFi, but lets lemmy.world through. So I tried to be on something other than lemmy.world, but still use it about half the time.

Wow finally! Hopefully this gets released for iOS also

The code can be compiled to iOS with a few increments, but I don't have the knowledge to do so

Any plan on Mac and Linux version soon?

I don't own a Mac, but I plan to compile it to Linux soon

Thanks for supporting linux, please consuder flatpak instead of making a binary per distro

LASIM is similar and while it won't run on iOS it will work on *Nix, Windows, and MacOS.

Android and windows. Two things I don’t use. Can you at make a Linux version?

I think this would work great as a web app.

It's made in flutter so I can probably port it to Linux and web, once I do it I'll update the app

Great job! That's an excellent way to spread out.

This is REALLY cool and helpful. I just tried it with the 3 accounts I have and it worked flawlessly.

Only suggestion would be to have the app check a servers defederated list and disregard any communities that you cannot subscribe too. This would prevent a lot of errors that happen when going through the sync. This is pretty minor as the app does seem to skip the community after the error but I suspect it would be a little faster if it just rejectected the community via internal software. Some users who are not aware of defederated communities may get confused by the errors as well.

Maybe this isn't very realistic? If it isn't, never mind. :)

I'm thinking about how to get rid of those errors, this might the solution but I think there isn't a way to check the list of defederated instances, one thing I'll implement soon is to expire synchronization tries after x days so the list won't grow forever

Glad the app helped you

Wow, great work! thank you!

Just created another account and synced it with this account using your app. Worked like a charm! This is great man!

How does this handle cases where no subscribers from an instance have subscribed to an external community yet? Other migration tools I have used require these to be added manually. Does yours automate this process?

Edit: any plans to add to FDroid?

I'm not sure, I had issues syncing some communities maybe this was the case

Maybe grouping these communities into a list and then linking to them manually for users to click though and sub would be a good idea.

Didn't get a chance to look at how your app works under the hood, but for LASIM I look up the community by name to get the ID and then call thr subscribe API. The former did seem to trigger the Lemmy instance to "learn" about the community, but it takes awhile, and there is no way to know when it has learned it other than to retry looking it up a few times.

Oh, okay, this will definitely be helpful

Excellent work by the way, much better solution than my own :)

You started and fixed the issue way before, I just polished it

I'm getting error : unable to get user data

Hmm, weird which instance? Lemmy.world was offline earlier

Tried it with lemmy.world and lemdro.id. same error in both cases. Update : It now works for some reason.

I don't have any backup accounts to make use of this, but this is a great tool!

Sorry I am new to lemmy and fediverse concept.

How is it different from an app like Connect?

Connect is a client, it shows Lemmy content and let you interact with them

Handshake is an account synchronizer, it syncs multiple accounts so you can keep accounts across instances with the same communities and soon saved and banned content

How are you gonna implement saved/banned content replication? Alls ids for posts are local to that instance, how are going to find one post from on instance in another. It might not even exist yet.

That's a problem to the future me πŸ˜…, but I've seen it's possible to learn about a communities, hopefully it's the same strategy

? You can't use the same strategy for what u do to find communities. (assuming you use the name field to retrieve the community) there is no equivalent

This synchronizes subscribed communities between instances if you have accounts on more than one instance. Connect is for browsing and posting.

I dont get it because I have accounts on several instances. I can add them into Connect and it seems I can see post from all my instances.

In case you're still wondering. This app can take all your subscriptions from lemm.ee and copy them to another instance. When you switch to that instance and go to your subscribed everything should be on the second instance.

This way you don't have to subscribe manually on multiple instances. I believe blocks will be added as well.

ok ! Thank you!

And yes I still had no clue.

But, I still don't understand something so I will take my exemple.

  1. I created my first account on Lemmy world.
  2. Because they decided to censor piracy they weren't anymore in line with my philosophy (I'm not pro piracy, I'm against arbitrary censorship)
  3. So I created a second account on Lemm.ee after learning about their principles.
  4. From there I resubscribed to my subs and I never feel the need to go back to Lemmy world.

My conclusion is there's probably something I still don't understand about the fediverse.

If you find the least censored instance, why would you create account on other or multiples instances?

What do I risk missing by staying on an instance without ever switching?

Please send help lol

Ps : Sorry for my bad English

This app would have done step 4 without you having to do it yourself.

As for why to switch instances. It's a matter of preference. The example you gave is a good reason. Obviously if your instance closes you would have to move so it's nice to have a backup just in case

Okay, I'm not technologically illiterate, but I can't figure out how to get this to run on my Windows laptop. I got to the link, but I don't see what to download. Any help?

I'll provide the .exe tomorrow, you can download the source and compile to windows also but you would need to install flutter which is a pain in the ass

You should see if you can use GitHub Actions to automate builds - they should be unlimited / free for public repos.

Just wondering if you had time to make an .exe for Windows of this? I don't see it on the download link.

I tried but the exe came out all buggy and almost anything worked.

I'll have to fix it

Thanks for the update!

Can you sync across to kbin?

I'm not sure actually

I don't think kbin (excluding artemis.camp) supports API use yet so that'll be a no. Also kbin is different than lemmy (still federated over activitypub but different platform) so it needs to specifically be supported, won't work with a lemmy client.

Good question. Will it sync with artemis.camp that does support a developmental API?