openedx / openedx/openedx-events
[Abstraction] Determine a dependency versioning strategy for event-bus implementations
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 13
- Forks
- 33
- Avg merge
- 14h 37m
- Merged PRs (30d)
- 4
Description
The edx_event_bus_kafka dependency will be specified and pinned in a file outside of each IDA that uses it, since openedx-events will load the implementation by looking up a module reference in the IDA's config. This means that dependency version changes on the library will not be versioned with the IDA (i.e. in the requirements/base.txt files) and we'll need some sort of expand-contract approach to API changes.
For example, we might need to do something like this:
- Add a new
KafkaProducerclass in event-bus-kafka and delegate the existingsend_to_event_busto use it - Switch the producer code in Studio to use the new class
- Delete the
send_to_event_busfunction from event-bus-kafka
Every master-branch deployer would need to do this in lockstep. (Maybe that's just 2U?) For Open edX releases we might be able to get away with just saying "use the release tag".
Acceptance Criteria
- Design a strategy that will work for deployers in general
- Document how-to for these upgrades in appropriate places.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Begin with the IDA requirements/base.txt files and the openedx-events module-reference loading path described in the issue. Define a dependency upgrade strategy that works for deployers and releases, then document the upgrade steps in the appropriate project locations. Done means both acceptance criteria are addressed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- kafka, python
- Domain
- distributed-systems, documentation
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100