ob2: An autograder and grade database for GitHub-based courses
Octobear 2 (ob2) is a framework for grading programming assignments, used at UC Berkeley. It comes with a dashboard for students, an administration interface for TA's, tools for running autograder scripts inside Docker, a transactional grade database with an audit log, a transactional email daemon, and a set of integrations with GitHub. It takes care of all the infrastructural details, so you can focus on writing great autograders.
Computer Science courses will always be TA'ed by talented computer programmers. Don't add any functionality that could be accomplished with a Google Form, SQL, or some Python scripting.
Here is the quickest way of getting started with ob2.
- Download Vagrant and VirtualBox
- Download a copy of ob2 and run
vagrant upinside the project root
vagrant sshto log in to the virtual machine
sudo apt-get install linux-image-extra-$(uname -r)and then reboot the VM with
vagrant reload. If apt-get reported that the kernel extras package is already installed, you don't need to reboot.
- Create a new Python virtual environment with
- Activate the new virtual environment with
- The ob2 code is mounted inside the virtual machine at
~/src, so enter the directory with
- Install the necessary Python packages with
pip install -r requirements.txt
- The APSW python package is not available via PyPI, so build it manually by running
- You can now start the ob2 server with
python -m ob2
- When ob2 starts, it will try to initialize the database, so press 'y' and hit Enter to continue
Vagrantfilebundled with ob2 should have forwarded port 5002 (the default web port) for you, so go to localhost:5002 to access the ob2 web interface.
At this point, you should have a working instance of ob2, but it will not be very useful. You won't be able to log in without GitHub OAuth tokens, and there won't be any jobs configured.
See the article on Configuring ob2 to get started on setting up your own ob2 configuration.
If you want to use VMware Fusion instead of VirtualBox, see VMware Fusion support.
For more details about setting up ob2 in production environments, see Setting up ob2 (the hard way).
For Python code, use PEP8 standards, but with 100-character line width.
For HTML, use 100-character line width and your own discretion.
For plaintext email templates, try to keep lines to 75 characters.
BSD 2-clause license (see LICENSE.txt)