KO
|
EN
gitlite — search
Search
#php
#python
#docker
#javascript
#android
#nodejs
#aws
#ec2
#machine-learning
#minecraft
#apm
#rest-api
Tango
★ 49
Open GitHub ↗
Standalone RESTful autograding service
Download README (.md)
Explore Similar Repositories
autograder
:
Flexible, Consistent and Powerful Autograding Tool that grades and generates reports on your students submissions.
autograding
:
GitHub Education Auto-grading and Feedback for GitHub Classroom
ok-client
:
A Python client for the OK autograding system
prog-edu-assistant
:
An easy system to create autograding tests in Jupyter Python notebook and deploy to cloud.
autograding-github-action
:
GitHub Action to autograde projects based on a configurable set of metrics
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
Tango
?
Download (.md)
<a href="http://autolabproject.com"> <img src="images/autolab_banner.svg" width="380px" height="100px"> </a> Tango ====== Tango is a standalone RESTful Web service that runs and manages jobs. A job is a set of files that must satisfy the following constraints: 1. There must be exactly one `Makefile` that runs the job. 2. The output for the job should be printed to stdout. Example jobs are provided for the user to peruse in `clients/`. Tango has a [REST API](https://docs.autolabproject.com/tango-rest/) which is used for job submission. Upon receiving a job, Tango will copy all of the job's input files into a VM, run `make`, and copy the resulting output back to the host machine. Tango jobs are run in pre-configured VMs. Support for various Virtual Machine Management Systems (VMMSs) like KVM, Docker, or Amazon EC2 can be added by implementing a high level [VMMS API](https://docs.autolabproject.com/tango-vmms/) that Tango provides. A brief overview of the Tango respository: * `tango.py` - Main tango server * `jobQueue.py` - Manages the job queue * `jobManager.py` - Assigns jobs to free VMs * `worker.py` - Shepherds a job through its execution * `preallocator.py` - Manages pools of VMs * `vmms/` - VMMS library implementations * `restful_tango/` - HTTP server layer on the main Tango Tango was developed as a distributed grading system for [Autolab](https://github.com/autolab/Autolab) at Carnegie Mellon University and has been extensively used for autograding programming assignments in CMU courses. ## Using Tango Please feel free to use Tango at your school/organization. If you run into any problems with the steps below, you can reach the core developers at `autolab-dev@andrew.cmu.edu` and we would be happy to help. 1. [Follow the steps to set up Tango](https://docs.autolabproject.com/installation/tango/). 2. [Read the documentation for the REST API](https://docs.autolabproject.com/tango-rest/). 3. [Read the documentation for the VMMS API](https://docs.autolabproject.com/tango-vmms/). 4. [Test whether Tango is set up properly and can process jobs](https://docs.autolabproject.com/tango-cli/). ## Python 2 Support Tango now runs on Python 3. However, there is a legacy branch [master-python2](https://github.com/autolab/Tango/tree/master-python2) which is a snapshot of the last Python 2 Tango commit for legacy reasons. You are strongly encouraged to upgrade to the current Python 3 version of Tango if you are still on the Python 2 version, as future enhancements and bug fixes will be focused on the current master. We will not be backporting new features from `master` to `master-python2`. ## Contributing to Tango 1. [Fork the Tango repository](https://github.com/autolab/Tango). 2. Create a local clone of the forked repo. 3. Install [pre-commit](https://pre-commit.com/) from pip, and run `pre-commit install` to set up Git pre-commit linting scripts. 4. Make a branch for your feature and start committing changes. 5. Create a pull request (PR). 6. Address any comments by updating the PR and wait for it to be accepted. 7. Once your PR is accepted, a reviewer will ask you to squash the commits on your branch into one well-worded commit. 8. Squash your commits into one and push to your branch on your forked repo. 9. A reviewer will fetch from your repo, rebase your commit, and push to Tango. Please see [the git linear development guide](https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request) for a more in-depth explanation of the version control model that we use. ## License Tango is released under the [Apache License 2.0](http://opensource.org/licenses/Apache-2.0).