Deprecation/Removal Evaluation

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?

Impact
(1-5)

Fix Cost (1-5)

Removal Status

Category

Deprecated Code

Still in use?

Places where it's in use (if known)

Viable non-deprecated alternative?

Impact
(1-5)

Fix Cost (1-5)

Removal Status

Authentication

External Auth

Yes (only by MIT)

MITx uses CAS, which is only in external-auth. 

third_party_auth

2

3

(preventing removal of old login/reg)

2

We have DEPR-6 for this. Have MIT's blessing.

Studio redirects to LMS instead of maintaining a separate login and registration flow.

Old login & registration

Yes

Open edX and external auth paths.

Still default.

Logistration API

4

(default, fixes are accidentally made to old one)

5

3

by @Diana Huang as part of Hackathon XIX - Freaky Friday!

PR: https://github.com/edx/edx-platform/pull/18321

 

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 Open edX Authentication.

EdxRestApiClient

Yes

All over

OAuthAPIClient (from same package)

3

3

2

Uses Slumber, which isn't supported any longer.

APIs

Mobile's old video locker APIs 

Yes

latent code in mobile apps - need to be removed (Jira ticket(s) exist somewhere)

Course Blocks API

3

(since REST API)

2

2

Mobile apps updated to use the new Course Blocks API 3 years ago.  They just need to remove references and latent code to the old API.

Discovery needed to make sure that there isn't data that the apps are relying on.

https://openedx.atlassian.net/browse/LEARNER-2764https://openedx.atlassian.net/browse/LEARNER-5244

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.

 

https://openedx.atlassian.net/browse/INCR-43

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,
check with community, units tests still use the old modulestore

Yes (SplitMongo)

3

3

3

https://openedx.atlassian.net/browse/DEPR-58

We have a doc on a potential migration strategy 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.

OfficeMix

Low use, errors in existing blocks

OfficeMix is retired/no longer supported by Microsoft

 

1

2

2

Removed in instructor docs (DOC-3973).

This code is installed remotely.

The endpoint that it contacts no longer exists, so we can be heavy-handed about removing it.

Course Experience waffle flags

?

 

 

1

?

?

Feature Toggle reports would help.  Could be used for certain courses in Prod or Edge.

Features

Microsites

Yes

used in Open edX

Sites/SiteConfiguration

1

2

1

What does the migration look like?

Shopping cart

Yes. Used by (a) donations from dashboard and (b) Edge.

 

Ecommerce service

?

?

?

https://openedx.atlassian.net/browse/DEPR-43

NR stats on Prod:

shoppingcart.views:donate - 345x
shoppingcart.views:show_receipt - 111x
shoppingcart.views:postpay_callback - 88x

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.

Learner Analytics Dashboard

No, for a diff paid experiment that is over

Unknown

The existing progress page

1

1

1

Implemented for a diff paid experiment that is now over. Most of this is a giant hack that should go away.

https://github.com/edx/edx-platform/tree/master/openedx/features/learner_analytics

Infrastructure

Datadog

No. edX devs don't use this anymore

 

 

2

2

1

Dependency that does not work with Python 3, so we need to get rid of this.

In progress https://openedx.atlassian.net/browse/DEPR-9

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.

Lettuce Tests

Yes

edx-platform testing

bok-choy

1

3

3

ON HOLD. Replace both with consumer contract tests on the roadmap.

Can probably remove tests that are not useful any longer entirely.

Dark Lang

Yes

edx-platform + IDAs

N/A

 

 

 

Currently there isn't a replacement that exists that duplicates this functionality planned or existing.

Opaque Key's deprecated methods

Yes

 

 

 

 

 

This is only the methods from_deprecated_string and to_deprecated_string. We are not removing the old "org/course/num" slash format.

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

  • Github search finds 32 usages.

  • Not sure if this is used by the community.

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.

Removed Prior to DEPR process

Deprecated Code

Still in use?

Places where it's in use (if known)

Viable non-deprecated alternative?

Impact
(1-5)

Fix Cost (1-5)

Removal Status

Deprecated Code

Still in use?

Places where it's in use (if known)

Viable non-deprecated alternative?

Impact
(1-5)

Fix Cost (1-5)

Removal Status

Course Structures

Yes

Studio's unsupported blocks,
CCX

Yes (modulestore, Course Blocks)

3