Purpose of this Document

The purpose of this document is to explain and compare different plans for improving the development environment for 2u/OCM employees, and ultimately to choose which one(s) we should pursue.

Background

The Development Environment (DevEnv) working group was created in February 2022 with the initial purpose of facilitating the adoption of the Tutor development environment across OCM. Tutor is the current standard environment for Open edX deployment and is becoming widely used in the Open edX community for development as well. The latest releases were created without any devstack-compatible images, so anyone developing off the release branches (as opposed to master) cannot use devstack at all. See https://openedx.atlassian.net/wiki/spaces/COMM/pages/3324149773/Development+Environment+DevEnv+Working+Group#Why-Tutor%3F for more information on the initial choice to move to Tutor.

As the DevEnv working group worked on Tutor, it became clear that Tutor was not yet in a state where it would be a suitable development environment for most OCM employees. Meanwhile, as new employees joined and were onboarded, it likewise became clear that devstack was not fully compatible with new Mac hardware. Teams with new employees, along with members of the DevEnv working group, looked for quick ways to unblock the new hires. This resulted in two particular efforts: a cloud-hosted devstack, and an M1-compatible local devstack (with MySql 8.0).

Goals

Ultimately, we are working towards a development environment with the following properties:

On a user-level, we’d like the environment to facilitate developer experiences such as:

Possible Approaches

Optimizing Tutor for OCM development

Completed Work

Remaining Work

Pros

Cons

Creating a cloud-hosted devstack

Completed Work

Remaining Work

Pros:

Cons

Continuing incremental improvements to local devstack

Completed Work

Remaining Work

Pros

Cons

Improving sandboxes for development

Completed Work

Remaining Work

Pros

Cons

Related projects

Concerns

Proposal: