Skip to content

Merge openedx/xblock-utils library into openedx/XBlock #675

@kdmccormick

Description

@kdmccormick

Background

Pros of having this as a separate package

  • Code separation: XBlock's core cannot depend on these utilities
    • However: importlinter could be used instead.
  • XBlock doesn't depend on Django
    • However: I can't find the ADR, but somewhere we decided that Django should be assumed for XBlocks, since enforcing Django-agnosticness wasn't yielding any value.

Cons of having this as a separate package

  • More maintenance overhead. We can't assume XBlock authors use xblock-utils, so we must maintain XBlock as a proper interface on its own. For example, moving off pkg_resources would be simpler if every block just used the ResourcesLoader interface that xblock-utils provides.
  • Harder to document: Two sets of documentation & common patterns need to be maintained -- docs for using XBlock without xblockutils, and docs for xblockutils itself.
  • More choices for XBlock developers. "Should I use xblockutils or not??"
  • More setup steps for XBlock developers.
  • Indirection: the system is harder for developers to understand when there's extra layers.
  • Maintenance difficulty:

Acceptance Criteria

- [x] understand why the two libraries were separate in the first place (done: see Braden's comment below)
- [x] make a choice about whether they should be merged (decision: **yes**)
- [x] Merge this repo's functionality into XBlock, including doc updates. Consider including an ADR. Cut a major XBlock release.
- [x] Update this repo to just be thin compatibility layer which imports from XBlock. Cut a final release of it.
- [x] Mark this repo as deprecated (no DEPR ticket necessary) and archive it
- [x] Announce the change

Metadata

Metadata

Assignees

Labels

code healthProactive technical investment via refactorings, removals, etc.documentationRelates to documentation improvementsenhancementRelates to new features or improvements to existing features

Type

No type

Projects

Status

Done

Status

✅ Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions