Skip to content

Only incur storage usage for imported exercises that have been edited #3306

@bjester

Description

@bjester

Current behavior

During publishing of a channel, a .perseus ZIP file is generated for each exercise it contains. If the exercise was imported, this happens regardless of whether any aspect of the exercise has been altered. These ZIP files are saved to object storage and are counted in a user's storage usage.

Desired behavior

It is our intention to support freely re-mixing publicly available educational resources, including exercises. We should only generate and save exercise .perseus ZIP files if the user has modified the exercise from it's imported version, and therefore user's storage should only reflect files they've uploaded or exercises they've modified.

Value add

  • Enables our intention to support freely re-mixing educational resources from publicly available channels
  • Avoids confusion regarding storage usage for exercises when a user hasn't created any

Implementation ideas

  • Edit perseus files in the frontend, and then zip and checksum them in the browser to determine if there have been changes
  • (patch) Exclude Khan Academy exercises that are already uneditable

Possible tradeoffs

  • Complexity in generating a predictable ZIP file whose checksum can be used to determine if changes were made
  • Current perseus generation adds a comment (Perseus file generated during export process) to each file, and likely affects the ability to rely on checksums:
Archive:  ./2e061e478350406e880bb5efe5483e4c.perseus
  Length      Date    Time    Name
---------  ---------- -----   ----
     1484  2013-03-14 01:59   exercise.json
Perseus file generated during export process
      280  2013-03-14 01:59   images/42714dceed8e10807bab2d9aedf17968.png
Perseus file generated during export process
     3098  2013-03-14 01:59   images/488036d2d4498cb8b67ee4af3937fc3f.png
Perseus file generated during export process
      229  2013-03-14 01:59   images/25682b13e9606cf068d1a30625a08010.png
Perseus file generated during export process
     4376  2013-03-14 01:59   images/2865abdb3111b6350c6c5c2077242079.png
Perseus file generated during export process

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions