https://github.com/autolab/tango
Standalone RESTful autograding service
https://github.com/autolab/tango
autograding autolab python tango
Last synced: 6 months ago
JSON representation
Standalone RESTful autograding service
- Host: GitHub
- URL: https://github.com/autolab/tango
- Owner: autolab
- License: apache-2.0
- Created: 2014-10-26T20:29:15.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2025-03-17T19:51:59.000Z (7 months ago)
- Last Synced: 2025-03-29T12:07:57.015Z (7 months ago)
- Topics: autograding, autolab, python, tango
- Language: Python
- Homepage: http://www.autolabproject.com/
- Size: 3.22 MB
- Stars: 48
- Watchers: 21
- Forks: 61
- Open Issues: 41
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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 TangoTango 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).