Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement a way for a user to export their account data. #506

Closed
StaticallyTypedRice opened this issue Feb 4, 2020 · 11 comments
Closed
Labels
area: federation support federation via activitypub area: privacy enhancement New feature or request extra: good first issue Good for newcomers

Comments

@StaticallyTypedRice
Copy link
Contributor

StaticallyTypedRice commented Feb 4, 2020

Most social media platforms have a way to export all of your account data into a downloadable zip file, including all your posts, comments and uploaded files. This is good for privacy as it allows the user to easily check what information the website has on them, and also allows the user to back up or archive their own data offline. I believe GDPR and CPPA also requires this feature, at least for the user's personal information (along with a way to permanently delete that information), so we should add it to the list of things to implement before Lemmy gets out of beta.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

@dessalines dessalines added Component: Backend enhancement New feature or request labels Feb 4, 2020
@Nutomic
Copy link
Member

Nutomic commented Feb 29, 2020

Okay so what kind of data does this need to include? And what should be the goal of this export, to import it somewhere else, or to view it locally?

@StaticallyTypedRice
Copy link
Contributor Author

StaticallyTypedRice commented Feb 29, 2020

Okay so what kind of data does this need to include? And what should be the goal of this export, to import it somewhere else, or to view it locally?

I would try to export anything that can be attributed to a user, but it should at least include posts, comments, votes and settings. Also images uploaded to pictshare and maybe things like subscriptions. At the very least anything that contain the user's personally identifiable information should be exportable in compliance with privacy laws.

As for what it's for, I think the main goal would be to have an easy way to back it up at first. However, a restore system would make a lot of sense when Lemmy becomes federated to allow users to switch instances without losing their content.

@dessalines
Copy link
Member

This isn't too difficult, as a lot of the back-end DB calls can already filter by user. So this is kind of just creating a wrapper for a lot of that data. Its just wayyy down in priority for me.

@glibg10b
Copy link

glibg10b commented Jun 11, 2023

With the current surge of users migrating from Reddit, this feature would allow us to relieve some pressure of lemmy.ml, whose amount of active users has grown 683% since Reddit's API announcement

@TheYang
Copy link

TheYang commented Jun 11, 2023

I'd say exporting and importing subscriptions would be a good first step in easing users ability to migrate instances.

@maltfield
Copy link

maltfield commented Jun 12, 2023

@TheYang see #3040 for just importing a list of community subscriptions with a single-click

@RobertSchuh
Copy link

RobertSchuh commented Jun 12, 2023

There's a bookmarklet workaround to get a list of subscribed communities, useful for if you're moving to another instance:
https://feddit.de/post/808717

@academician
Copy link

I'd like to recommend that this be implemented in a way that it can be offloaded to a cron job or something, possibly performed on a different service entirely. From experience, database exports can be expensive for accounts with a large amount of data, and if there's ever a rush of multiple at once it can bog down the server or database.

My initial approach for a problem like this:

  • Make an export queue DB table
  • Make a script/program that polls the table periodically and grabs the newest row(s?)
  • Lock the row(s) it's processing (with a timeout)
  • Do the work and upload the zip file somewhere
  • Email a link to the user (and/or put it on a web page accessible from the UI)

If an export fails or a row lock times out (ie, because the script crashed), unlock the row and increment a retry counter, then retry the export after some backoff interval up to some max number of retries where we report the failure to the user (and admins?).

Should probably also only keep the last N exports and only for M days. This can be configured in something like an S3 bucket.

@m3gatech9
Copy link

I'd like to be able to backup my saved posts/comments as well.

@ghost ghost mentioned this issue Jun 27, 2023
4 tasks
@CMahaff
Copy link

CMahaff commented Jul 12, 2023

I elaborated more in #3040 (#3040 (comment)), but besides what has already been requested here, being able to migrate user and community blocks is also super important.

Nice to haves are things like being able to migrate profile settings like theme, default sort, etc. These are more problematic though because they are still changing a lot.

@Nutomic
Copy link
Member

Nutomic commented Oct 2, 2023

#3976

@Nutomic Nutomic closed this as completed Oct 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: federation support federation via activitypub area: privacy enhancement New feature or request extra: good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests