docs: add ADR for pathway catalog and content split - #761
Conversation
|
Thanks for the pull request, @Agrendalath! This repository is currently maintained by 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 approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo 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:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere 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:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
ormsbee
left a comment
There was a problem hiding this comment.
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).
| (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**. |
There was a problem hiding this comment.
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.
|
|
||
| 1. A Pathway is split into two parts: | ||
|
|
||
| - **Catalog Pathway** - the learner-browsable, enrollable thing. It includes the display name, the description |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
@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:
- 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.
- 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
left a comment
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
@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?
f6f2bbc to
9218009
Compare
This adds an ADR describing a separation of concerns between the marketing and authoring parts of a pathway.
Related PRs:
Private-ref: BB-10965