Skip to content

docs: add ADR for pathway catalog and content split - #761

Open
Agrendalath wants to merge 2 commits into
openedx:mainfrom
open-craft:agrendalath/pathways-adr-catalog-content-split
Open

docs: add ADR for pathway catalog and content split#761
Agrendalath wants to merge 2 commits into
openedx:mainfrom
open-craft:agrendalath/pathways-adr-catalog-content-split

Conversation

@Agrendalath

@Agrendalath Agrendalath commented Aug 20, 2026

Copy link
Copy Markdown
Member

@openedx-webhooks openedx-webhooks added open-source-contribution PR author is not from Axim or 2U core contributor PR author is a Core Contributor (who may or may not have write access to this repo). labels Aug 20, 2026
@openedx-webhooks

Copy link
Copy Markdown

Thanks for the pull request, @Agrendalath!

This repository is currently maintained by @axim-engineering.

Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review.

🔘 Get product approval

If you haven't already, check this list to see if your contribution needs to go through the product review process.

  • If it does, you'll need to submit a product proposal for your contribution, and have it reviewed by the Product Working Group.
    • This process (including the steps you'll need to take) is documented here.
  • If it doesn't, simply proceed with the next step.
🔘 Provide context

To help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:

  • Dependencies

    This PR must be merged before / after / at the same time as ...

  • Blockers

    This PR is waiting for OEP-1234 to be accepted.

  • Timeline information

    This PR must be merged by XX date because ...

  • Partner information

    This is for a course on edx.org.

  • Supporting documentation
  • Relevant Open edX discussion forum threads
🔘 Get a green build

If one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green.

Details
Where can I find more information?

If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources:

When can I expect my changes to be merged?

Our goal is to get community contributions seen and reviewed as efficiently as possible.

However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:

  • The size and impact of the changes that it introduces
  • The need for product review
  • Maintenance status of the parent repository

💡 As a result it may take up to several weeks or months to complete a review and merge your PR.

@ormsbee ormsbee left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you also please add something about the dependency relationship, i.e. openedx_content knows about openedx_catalog, but not vice-versa? That has some implications elsewhere (e.g. Items are allowed to directly reference CourseRuns, and the mapping of CatalogPathway to Pathway content has to be in openedx_content).

Comment on lines +37 to +38
(e.g. "Master's Degree", "Annual Training"). If it is specified, learners see the Category instead of the word
"Pathway". The Catalog Pathway is **not versioned**.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a code point of view, I think we should always force it to be specified, and we can create a default database entry for "Pathway". If we do it with a hardcoded fallback-in-code, we're more likely to get inconsistent behaviors.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ormsbee, good point - added in 9218009.


1. A Pathway is split into two parts:

- **Catalog Pathway** - the learner-browsable, enrollable thing. It includes the display name, the description

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you say more about this? It sounds like a credential will tie together a learner, a catalog pathway, and particular content pathway that "implemented" that catalog pathway.

Is that right? Will an enrollment do the same?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kdmccormick, I added more details about the enrollments in 9218009. I will add the details about the credentials to #764, since it's out of scope for the current ADR (and I wanted to avoid forward refs here).

In short:

  1. Enrollment binds User and Catalog Pathway, because a learner enrolls in a pathway, not its content - i.e., any active authoring (content) changes are visible to the learner. Therefore, I believe there is no real reason to track, at the DB level, the exact state in which the learner was enrolled.
  2. Credential is different - it binds User and a specific version of the pathway content, because a credential is a claim that a particular definition of requirements (that was active at that point in time) was met.

@bradenmacdonald bradenmacdonald left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall sounds good, though +1 to @ormsbee's comment.

who edits what, not about who can see it.
- **Different permissions follow from that.** We expect instances to want to let marketing staff update catalog
copy without granting them the ability to change what learners must complete, and vice versa. Keeping the two
apart makes that possible without inventing field-level permissions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keeping the two apart makes that possible without inventing field-level permissions.

In our new RBAC world, I would expect that there's not much difference between implementing "field-level" permissions and "model-level" permissions, since we're using Casbin to define whatever roles and permissions make sense for each API. Either way, it's simply permissions and needs to be enforced in the REST API via permission_classes as appropriate.

However, I still think this split makes sense for the other reasons you've stated.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bradenmacdonald, ah, that's good to know - I'm not very familiar with the recent RBAC changes. Should we remove this point from the ADR?

@Agrendalath
Agrendalath force-pushed the agrendalath/pathways-adr-catalog-content-split branch from f6f2bbc to 9218009 Compare August 25, 2026 18:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core contributor PR author is a Core Contributor (who may or may not have write access to this repo). open-source-contribution PR author is not from Axim or 2U

Projects

Status: Needs Triage

Development

Successfully merging this pull request may close these issues.

5 participants