docs: add ADR for institution-defined tag code field#637
docs: add ADR for institution-defined tag code field#637mgwozdz-unicon wants to merge 3 commits into
Conversation
Proposes a generic Tag.code field in openedx_tagging to hold an institution's own competency identifier, plus a completeness rule that requires it for Competency Taxonomy tags without teaching openedx_tagging what a Competency Taxonomy is. Answers issue openedx#625.
|
Thanks for the pull request, @mgwozdz-unicon! 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. |
… mirror the system-level taxonomy
| short, human-readable identifier an institution can reference in its own systems | ||
| (spreadsheets, internal catalogs, etc). Clicking it drives the workflow that |
There was a problem hiding this comment.
Is it always one identifier, or do institutions sometimes have multiple identifiers for the same tag (e.g. from different systems)?
| This identifier is explicitly **not** a CASE or CTDL identifier. Those are external | ||
| standards bodies' IDs that may need their own storage in the future; conflating them | ||
| with an institution's internal code would make each harder to reason about | ||
| independently. This ADR is scoped to the internal, institution-defined code only. |
There was a problem hiding this comment.
I don't know if I agree with that. If we can have a robust system that maps namespaced identifiers to tags, I could imagine us using a system where internal namespaces are peers to standardized ones.
That being said, if and when that time comes, we can always migrate the existing data that we have to some new, more general schema. So I do support the idea that we're focusing strictly on internal codes for now, with the simpler model that implies.
| purely as the lookup key to find and update existing tags on re-import. Repurposing | ||
| it as an admin-editable Competency ID would conflict with that existing, load-bearing | ||
| contract. |
There was a problem hiding this comment.
Can you expand on why this is currently immutable, and why it must remain so? My understanding was that external_id was created for a similar use case to what's being proposed here.
Claude assisted...
Summary
Tag.code, a generic, optional field onopenedx_tagging'sTagmodel, to hold an institution's own competency identifier — distinct from CASE/CTDL and from the existingexternal_idfield.codefor every tag in a Competency Taxonomy, enforced through a generic property onTaxonomythat only a Competency Taxonomy subclass turns on, soopenedx_taggingnever has to know what a Competency Taxonomy is.openedx/openedx-core#625("Determine what and how many ID fields should be added to the Taxonomy data model").Why
Competency Management UX designs show a "Competency ID" that institutions click to build competency-criteria associations. Institutions need their own internal identifier for this, separate from any future CASE/CTDL identifiers. The existing
external_idfield can't be reused: it's de facto immutable and is the load-bearing lookup key for import/export matching, so giving it a second, editable meaning would break that contract.Status
Proposed. This is a recommendation for engineering and Open edX community review, not an implementation — no code changes are included in this PR.
Dependencies and follow-ups (tracked separately, not in this PR)
#613(implements theCompetencyTaxonomymodel) needs to override thetag_code_requiredproperty this ADR defines. This ADR's property should land before or alongside [BE] Implement CBE core data models (CompetencyTaxonomy, criteria, learner status) #613, not after it — [BE] Implement CBE core data models (CompetencyTaxonomy, criteria, learner status) #613 depends on this ADR, not the reverse.#634("Taxonomy subclasses: embrace or deprecate?") is an open architecture discussion that could affect the subclass-override mechanism this ADR relies on.These are called out in a comment on #625 rather than in the ADR itself.