Skip to content

[DEPR]: Remove Video Bumper (pre-roll video) feature #284

Description

@farhan

Proposal Date

2026-07-31

Target Ticket Acceptance Date

2026-08-28

Earliest Open edX Named Release Without This Functionality

Willow (December 2026)

Rationale

The Video Bumper feature, gated behind FEATURES['ENABLE_VIDEO_BUMPER'], allows a short clip (5–35 seconds) to play before each video in a course once per user per 7 days. A thorough investigation was conducted in #275. Key findings:

  • edx.org-only by design. Built in 2015 for edX partner support — there has never been a self-service path for Open edX operators. No authoring UI exists; setup requires hand-editing a hidden JSON advanced setting and manually creating edx-val rows via a Django shell.
  • Zero usage signal in 11 years. Off by default, no forum threads ever, and a GitHub-wide search for ENABLE_VIDEO_BUMPER: true returns only test fixtures — zero deployment configs, Tutor plugins, or site configurations.
  • End-to-end coverage dropped in 2020. The bok-choy acceptance tests were removed; no automated full-flow coverage has existed since.
  • Bumper transcripts were intentionally excluded from the edx-val migration in 2017 and still depend on contentstore /static/ files.
  • Fails silently. An unreachable bumper video quietly falls back to the main video, so a site that believes it has bumpers enabled may not be showing them — and would likely be in that state today given VEDA (the edx.org encoding pipeline) was deprecated in 2020.
  • Ongoing maintenance cost. The feature flag gates only the entry point; the XBlock fields, handler branches, JS modules, and tests ship to every instance regardless. All of this must be carried through the ongoing Video XBlock extraction and any future video player work.

Removal Plan

The following will be removed from xblocks-core (VideoBlock class):

  • xblocks_contrib/video/bumper_utils.py — entire module dedicated to bumper logic
  • xblocks_contrib/video/video_xfields.pyvideo_bumper course-level XBlock field
  • xblocks_contrib/video/video_handlers.pyis_bumper handler branches and ?is_bumper=1 transcript endpoints
  • xblocks_contrib/video/video_transcripts_utils.py — bumper transcript handling
  • xblocks_contrib/video/video_utils.py — bumper-related utility functions
  • xblocks_contrib/video/video.py — bumper entry point and is_author_mode guard
  • xblocks_contrib/video/assets/js/src/09_bumper.js — bumper playback JS module
  • xblocks_contrib/video/assets/js/src/09_events_bumper_plugin.js — bumper analytics events JS module
  • xblocks_contrib/video/assets/js/src/10_main.js — bumper references in main JS entry point
  • xblocks_contrib/video/tests/js/video_bumper_spec.js — bumper JS tests
  • xblocks_contrib/video/tests/js/video_events_bumper_plugin_spec.js — bumper events JS tests
  • xblocks_contrib/video/tests/js/video_play_skip_control_spec.js — bumper skip control tests
  • xblocks_contrib/video/tests/js/video_skip_control_spec.js — bumper skip control tests

The following will be removed from edx-platform:

  • lms/envs/common.py and openedx/envs/common.pyENABLE_VIDEO_BUMPER and SHOW_BUMPER_PERIODICITY feature flags
  • cms/djangoapps/models/settings/course_metadata.pyvideo_bumper advanced course setting
  • openedx/core/djangoapps/video_config/services.py — bumper-related video config service code
  • openedx/core/djangoapps/video_config/transcripts_utils.py — bumper transcript utilities
  • lms/djangoapps/courseware/tests/test_video_mongo.py — bumper test cases

Replacement

No replacement is needed. A course team wanting a pre-roll clip can place a standalone Video component at the beginning of the course sequence.

Deprecation

Given the feature is off by default and has zero known real-world deployments, no in-code deprecation warning is planned. The forum announcement period serves as the community notice before removal.

Migration

No migration is needed for the vast majority of operators — the feature is off by default.

For any operator that has ENABLE_VIDEO_BUMPER = True and an active bumper configured: place a standalone Video component at the beginning of the course sequence as a direct replacement.

Additional Info

Feel free to adjust the ticket description, Or we can do it once the ADR is approved.
-- @feanil

Metadata

Metadata

Assignees

Labels

deprProposal for deprecation & removal per OEP-21

Type

Projects

Status
Draft

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions