Deprecation/Removal Evaluation
See Deprecation Working Group for a high-level description of the Deprecation and Removal process and information.
Although we may use this page internally as an early scratch area for proposing and evaluating items to remove, eventually it should follow the process defined in OEP-21.
DEPR tickets
OEP-21 recommends filing a DEPR ticket for each technology to be deprecated. We keep a dynamic table of those tickets here:
DEPR tickets coming up on removal
The rest of this document below provides a scratch area for early discovery and evaluation of an item for deprecation and removal.
Evaluation Rubric
Ideally, all "deprecated" code should be on a progressing path to "removal". OEP-21 defines a clear process for this. However, given the already large amount of deprecated code that we have now accumulated (prior to defining the OEP process), we can use Tech Debt metrics to prioritize this list. The Contagion and Impact columns are used for this.
Contagion
- How likely is it to spread (via interfaces, copy-pasting, discovery)?
- If well-contained, the cost to fix it later compared to now is basically identical. Its impact becomes a higher criterion for when to fix.
- If highly contagious, it becomes harder to fix and its impact tends to increase.
Impact
- User-facing issues (bugs, missing features, unexpected behavior)
- Developer-facing issues (slower implementation, workflow issues, higher cognitive load, more things to upgrade)
Fix Cost
- Estimated effort on making the fix.
- Include the cost of actually deploying the fix.
Priorities based on Rubric
This spreadsheet prioritizes the below items based on the above rubric.
Items proposed for Deprecation/Removal
Category | Deprecated Code | Still in use? | Places where it's in use (if known) | Viable non-deprecated alternative? | Contagion | Impact | Fix Cost (1-5) | Removal Status |
---|---|---|---|---|---|---|---|---|
Authentication |
|
| ||||||
|
|
| ||||||
django-oauth2-provider (DOP) / OpenID Connect | Yes | OAuth clients, which should be removed if inactive and shifted to DOT if active most of our IDAs are using DOP | django-oauth2-toolkit (DOT) | 2 | 3 | 5 | See /wiki/spaces/PLAT/pages/160912480. | |
EdxRestApiClient | Yes | All over | OAuthAPIClient (from same package) | 3 | 3 | 2 | Uses Slumber, which isn't supported any longer. | |
APIs |
|
- LEARNER-2764Getting issue details... STATUS - LEARNER-5244Getting issue details... STATUS | ||||||
Old Discussions API | Yes | Desktop view of Discussions | Newer Discussions API (used by Mobile) | 2 | 2 | 4 | ||
Frontend | RequireJS | Yes | edx-platform, edx-mktg | webpack, JS | 1 | 5 | 3 | Can be done incrementally - on a page-by-page basis. |
Backbone | Yes | edx-platform, edx-mktg | React | 2 | 5 | 5 | ||
UI Pattern Library / edx-pattern-library | Yes | edx-platform, insights, ecomerce, other repos | Bootstrap | 2 | 3 | 3 | Hard to (1) know which HTML elements are used by pattern library versus not - since there's no namespacing, (2) colors/fonts/etc are different. | |
edX-ui-toolkit | Yes | edx-platform, insights | Paragon | 2 | 3 | 4 | Re-platforming work by Arch Squad means that we will be rewriting front-end code | |
FontAwesome webfonts | Yes | FontAwesome SVG | 3 | 1 | 2 | SVG is smaller size and other benefits. This involves porting from FA 4 to 5, plus using new react bindings. (in paragon or manually) | ||
Notifications | Notifier | Yes | By Discussions | edx-ACE | 2 | 1 | 2 | ON HOLD. Open Source community has been building on it. Has to run inefficient queries on a badly optimized DB. Product has said that we can't remove this until its functionality is duplicated elsewhere. |
edx-Notifications | Yes | By Yonkers | edx-ACE | 2 | 1 | 1 | ON HOLD. edX has agreed to own this and it can't be removed until either (1) our forked Open edX hosted instance goes away or (2) ACE reaches complete feature parity with it. (Notifications tray and in-browser notifications channel). | |
Courseware | Old Mongo | Yes (a little) | Old production courses, | Yes (SplitMongo) | 3 | 3 | 3 | - DEPR-58Getting issue details... STATUS We have a doc on a potential /wiki/spaces/~dormsbee/pages/525861934 for when the time comes. # of course runs using old mongo: 615 We will want a backwards compatible release that enables migration for Open Source installations to Split (and then probably BlockStore). |
XModule | Yes | some edX learning components: video, HTML, CAPA problem, etc. | XBlock | 1 | 4 | 5 | Discovery Doc: https://docs.google.com/document/d/1t2P9i2BZKYf_pW61m Unification of descriptors and classes, conversion of handlers, serialization is different. Can shave off some of the more painful side of things in smaller chunks. | |
lti_module.py | ? | on edx.org in a lot of older courses | xblock-lti-consumer | 1 | 2 | 2 | It's marked as deprecated in module/class doc strings. | |
|
|
| ||||||
Course Experience waffle flags | ? | 1 | ? | ? | Feature Toggle reports would help. Could be used for certain courses in Prod or Edge. | |||
Features | ||||||||
Shopping cart | Yes. Used by (a) donations from dashboard and (b) Edge. | Ecommerce service | ? | ? | ? | - DEPR-43Getting issue details... STATUS NR stats on Prod: shoppingcart.views:donate - 345x | ||
VerifiedTrackCohort | Yes | by 229 courses | Enrollment Track Partition | 1 | 1 | 1 | It's deprecated. Need to migrate the 229 courses. Removal work was investigated by the Masters squad with tasks captured at VerifiedTrackCohortRemoval. | |
| ||||||||
Infrastructure |
| |||||||
track.backends.django.TrackingLog | Maybe Open edX consumers (Stanford?) | Not in edx.org | 1 | 2 | 1 | Can be pulled out and put into a separate installable repo/app, probably. | ||
| ||||||||
Dark Lang | Yes | edx-platform + IDAs | N/A | Currently there isn't a replacement that exists that duplicates this functionality planned or existing. | ||||
Haystack | Yes | Notes and Discovery ...? | Pure elasticsearch | 2 | 5 | 3 | Haystack is forcing us to stay on an ancient version of elasticsearch. And haystack itself is no longer maintained. We should just use direct elasticsearch instead of the haystack abstraction layer. | |
display_name_with_default_escaped | Yes | edx-platform, edx-microsite, edx-themes | display_name_with_default See instructions here. | 1 (linter stops spread) | 1 | 2 |
| |
edx-ops/baked-config-secure | Yes | analytics jenkins jobs | analytics-secure | 1 | 2 | 2 | Stu and Joe have thought about what it would take to delete the repo. |