Development Tools
If you’re developing for Open edX, you’ll need most of these eventually.
Tools to Install on Mac OS X
Tool | Setup Instructions | Notes |
---|---|---|
Homebrew | Homebrew is a 3rd party package manager for Mac that makes it easy to setup many developer friendly tools. | |
Pyenv | A tool that lets you manage multiple python versions. | |
Python Versions | Install the latest stable versions of python 3.8 and 3.9. You can find out what’s available that starts with 3.8 via:
or by looking at Download Python Then run pyenv install with the specific versions you want. Set your 3.8 version as the default:
| The language we use to develop our backends. Note: You can also just download and install the version of python you need directly from the python.org website. |
Virtualenvwrapper | You’ll want to source the wrapper script from the python environment you installed with pyenv. For example if you’re using `3.8.whichever` you would source the below path in your source ~/.pyenv/versions/3.8.whichever/bin/virtualenvwrapper.sh Restart your terminal and you will see some creation activity from that script. | The main purpose of Python virtual environments is to create an isolated environment for Python projects. |
Docker Desktop | https://docs.docker.com/docker-for-mac/install/ Alternately:
Note: do NOT use `brew install docker`, as this will only give you the CLI. After installing docker you will need to give it more space. Check the devstack readme for minimum sizing, currently 2 CPUs, 8G of memory, 96G of disk. | If you don’t know what docker is, check out their docs here first. We use docker heavily across development, testing and production environments so having a good understanding of docker concepts will make your life a lot easier. |
Node Version Manager | It is recommended that you install nvm (Node Version Manager) using the instructions provided in the repo’s README: GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions After running the commands from these instructions, restart your terminal and run: nvm install v16 This should install Node version 16 and set this as your default Node version.
If the installations instructions in the README linked above don’t happen to work, you can try using the old instructions: Run: Place the following in your shell .bash_profile or .zshenv): export NVM_DIR="$HOME/.nvm"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && . "/opt/homebrew/opt/nvm/nvm.sh" # This loads nvm
[ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && . "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion` | Used to allow multiple versions of node since different front ends use different nodejs versions. Most commonly used as of 12/1/2020 is node 12.20 LTS (https://nodejs.org/en/about/releases/) |
edX Devstack | The edX Devstack is a repository that contains commands for installing all of the other repositories and Docker images that make up the entirety of the edX platform. It is recommended that you begin by creating a folder on your computer, which you can name something like “edx”. Inside of the folder, you will want to clone the Devstack Repo. Once you have cloned the Devstack repo to your computer, follow the Getting Started instructions for installing the rest of the edX platform. Once you have completed the instructions, there should be several folders, including “edx-platform” and several folders starting with “frontend-app-” that are on the same level of your “devstack” folder. You should also be able to run your containers for these repos as well and access the LMS (i.e. the main page) at http://localhost:18000/.
NOTE: There have been issues that have been known to occur on computers that use an Apple Silicon CPU (i.e. an M1 or M2 chip), which usually say something like “fedx-scripts not found”. If these errors occur, let someone on your team know, or message the #tech-devstack-edx channel in Slack. | Get to the point where you can run LMS and Studio locally and open them in your browser. As an edX developer, please use the LATEST version of the devstack ( Once you’re done, please take a minute to fill out this survey to help us track how long it takes to set up devstack. |
[In Development] Tutor | Start here: [Archive] Using Tutor for local development | This process is in development. We encourage new developers to try it out! |
Tools to Install on Ubuntu
Tool | Setup Instructions | Notes |
---|---|---|
Deadsnakes PPA | A source for specific versions of python. | |
Python Versions | The language we use to develop our backends. | |
Virtualenvwrapper | The main purpose of Python virtual environments is to create an isolated environment for Python projects. | |
Docker | If you don’t know what docker is, check out their docs here first. We use docker heavily across development, testing and production environments so having a good understanding of docker concepts will make your life a lot easier. | |
Node | Used to build Micro-Frontends and client side javascript code. | |
edX Devstack | Start with the Readme in the Devstack Repo | Get to the point where you can run LMS and Studio locally and open them in your browser. As an edX developer, please use the LATEST version of the devstack ( |