openedx / openedx/openedx-core

Implement Pluggable Serialization for opendx_content backup/restore

Open
#425 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
10
Forks
32
Avg merge
2d 17h
Merged PRs (30d)
12

Description

Serialization logic currently lives in the backup_restore app, but it should be delegated to individual apps to make it extensible.

Disorganized thoughts:

Bkg:

  • Currently serialization is an app that knows about the other apps (containers, etc)
  • We want this app to be open to extensions
  • Open Q: Something more limited for plugins? Not necessary that our system in LC uses the exact same system as what we'd offer for the plugin experience...
  • Open Q: Tech choices
    • Pydantic seems be the obvious thing to use
    • Other things as well
  • Braden: would prefer a system where plugins can register model and LC serializes them for you, rather than plugins having control how they serialize
    • Dave: models change over time and may change in ways that break backcompat with that auto-generated serialization format. This is an area where ppl who make plugins won't necessarily be thinking about OLX-forever compatibility
      • Braden: Also thinking about OLX compat. Whatever we land on, would be good to encourage plugin developers to think about OLX.
      • Dave: We also want to encourage forwards-compatibility thinking (e.g. silently passing through things we don't recognize), which is something even fewer folks consider. I'm not sure how this plays with schema validation though.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by mapping the serialization logic in the backup_restore app and reviewing the open questions about plugin registration, schema validation, and compatibility. No files, tests, or entry points are named in the issue. Done means an agreed extensible design delegates serialization to individual apps while addressing backward and forward compatibility.

Written by the indexing model from the issue text.

Assessment

Tech stack
django, python
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.