openedx / openedx/openedx-events

[Abstraction] Determine a dependency versioning strategy for event-bus implementations

Open
#88 20 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

event-bus
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:

  1. Add a new KafkaProducer class in event-bus-kafka and delegate the existing send_to_event_bus to use it
  2. Switch the producer code in Studio to use the new class
  3. Delete the send_to_event_bus function 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.