openedx / edx-proctoring

GNU Affero General Public License v3.0
57 stars 84 forks source link

[DEPR]: edx-proctoring frontend #1226

Open MichaelRoytman opened 3 weeks ago

MichaelRoytman commented 3 weeks ago

Proposal Date

2024-08-21

Target Ticket Acceptance Date

2024-11-21

Earliest Open edX Named Release Without This Functionality

Teak - 2025-04

Rationale

As part of Open edX community's re-platforming effort, Django-server-side rendered frontend implementations are being deprecated in favor of React-based micro-frontend implementations. This ticket covers the code related to the frontend for taking exams (i.e. timed exams, practice exams, proctored exams, and onboarding exams).

For the "happy path" of proctoring, the frontend implementation in edx-proctoring has been replaced by the frontend-lib-special-exams library, which is installed and integrated into the frontend-app-learning MFE.

Removal

The code and assets associated with the frontend implementation for taking exams will be removed.

Below is a non-exhaustive list of code and assets that can be either removed or refactored to remove the frontend.

Replacement

For the "happy path" of proctoring, the frontend implementation in edx-proctoring has been replaced by the frontend-lib-special-exams library, which is installed and integrated into the frontend-app-learning MFE.

There are some exceptions to this coverage. Details will be added shortly.

Deprecation

TBD

Migration

TBD

Additional Info

TBD

Task List

No response

Zacharis278 commented 2 weeks ago

There's an additional backend requirement here for authorization (this is the non-happy path). While the learning MFE shouldn't request an exam unit unless that exam is running we still need to prevent users from accessing this content outside of their allotted time by requesting content from LMS directly. This is currently handled by the rendering logic for these templates within edx-proctoring. If this function returns no template the user is assumed to be authorized.

https://github.com/openedx/edx-proctoring/blob/152aa3c955fef0d0f9035acf114d55541844f52e/edx_proctoring/api.py#L2896

I don't think this should be too difficult to separate out, we don't really need the templates themselves to prevent rendering. I just want to call out if we don't replace this logic with something else we'd lose an important but not very obvious auth mechanism.

kdmccormick commented 2 weeks ago

@MichaelRoytman Are there any flags that one needs activate in order to switch from the legacy edx-proctoring frontend to frontend-lib-special-exams? Or is it the case that if a site operator sets up proctoring today, it will automatically use frontend-lib-special-exams?

MichaelRoytman commented 1 week ago

@kdmccormick Sorry for the delay! The frontend-lib-special-exams library is integrated directly into the frontend-app-learning MFE, so if a site operator is using the frontend-app-learning MFE, then timed and proctored exams will use the UI defined in that library. The legacy learning experience will use edx-proctoring. There is no other configuration necessary.

kdmccormick commented 1 week ago

Great, thanks @MichaelRoytman !

When we go to remove the legacy edx-proctoring frontend, we should check that Studio Course Preview (the only remaining feature which uses legacy courseware) doesn't blow up when it gets to a special exam. Ideally, it should just say something along the lines of "special exams cannot be previewed" or "this feature is not available in preview mode".