[meta] Modularise export system

Created on 10 April 2018, over 6 years ago
Updated 16 February 2024, 9 months ago

Summary

This is a meta issue to describe and discuss the work done towards an improved export system for content and users. Any actual work will be done in child issues.

Problem

There is currently a user export system in the form of the social_user_export module. However, this module is pretty rigid in its behaviour and you have little control over what gets exported and how that's formatted. There's also a need for being able to export other things as users such as content. Currently there would have to be some duplication of code in the way that serving of the export is done when a new export type is added.

Another drawback of the current system is that it requires the user to keep their browser window open to further the batch API and not miss the download, this could cause problems for larger platforms. The current system also isn't as secure as possible as the filename of downloads could potentially be guessed.

Solution

A more flexible system should be set-up that allows site managers to configure the available exports and allows modules like the ones created for GDPR to influence what is exportable (or how it's exported).

I suggest creating a Download entity which wraps a file entity and has user/group access handling. The goal is for a user to be able own a download entity and share this with others on the platform. The reason for building this sharing into the platform is because it makes it easier to keep track of how data is shared. If we don't build that into the platform then the user can download the file and send it to another user anyway.

When a user performs an export then a task is created for this export and the export is done in the background. The user can view the progress of this export in their download/export centre and download the file there when it's ready. In this overview the user can also select to manage the access to this file and share it with other users.

Remaining tasks

  • Agree on architecture, feature sets and level of flexibility
  • Create subissues for individual components
🌱 Plan
Status

Active

Version

1.0

Component

Code (back-end)

Created by

🇳🇱Netherlands kingdutch

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

Production build 0.71.5 2024