Skip to main content

Management tools for gitlab-based assignment workflows

Project description

Travo: Distributed GitLab ClassRoom

PyPI version SWH

In a nutshell

Are you teaching computer or computational sciences, with hands-on assignments in the computer lab? Inspired by e.g. GitHub ClassRoom, Travo is a lightweight Python toolkit that helps you turn your favorite GitLab instance into a flexible assignment management solution. It does so by automating steps in the assignment workflow through Git and GitLab's REST API.

Motto

Teaching computer science or computational courses is all about collaboration on code. It is thus unsurprising that, with a pinch of salt, forges like GitLab can provide helpful infrastructure to support and enhance that collaboration.

Principles

  • Do not impose workflows. Each course and instructor is different.
  • Be a small layer. Travo is optional and compatible with standard Git & GitLab workflows.
  • Do not store data or require an autonomous server. The information is already in the Git & Gitlab; just use it.

Features

  • Trivial to use for students: simple workflow with only three completely automated operations: fetch, submit, fetch_feedback (see the Tutorial). No prior experience is required other than opening a terminal and copy-pasting a command.
    For Jupyter users, a widget based student dashboard provides a Graphical User Interface; no terminal needed (see the screenshots below).
    Meanwhile students get progressively exposed to using version control and forges, with the incentive to explore more to unleash the full power these tools deliver for more advanced collaboration on code.
  • Battle field tested with large courses (200+ students at lower undergraduate level) with multiple assignments, groups, instructors, and sessions.
  • Distributed and personal-data friendly: - you can use any instance of GitLab, e.g. that self-hosted on premises by your institution. - students and teachers can use their favorite work environment (personal laptop, physical computer labs, virtual environments on the cloud such as JupyterHub, ...) provided the required software for the course is installed, together with Travo.
  • Command line interface for most common usages.
  • Reusable Python library to develop custom extensions, workflows, dashboards, e.g. within Jupyter.
  • Instructor side: utilities to help with the preparation, distribution, monitoring, automatic grading by continuous integration. Some familiarity with version control and GitLab is required since Travo mainly automatizes tedious manual operations.
  • Collect GitLab pipeline reports for feedback or grading
  • Dedicated utilities for Jupyter-based assignments: nbgrader integration for automatic and manual grading, ...
  • Lightweight and sustainable: Travo is meant to reuse as much of your favorite infrastructures and tools as possible, focusing on just a bit of glue (~3k lines of code) to hold them together for that particular application.
  • Modular and extensible: you use whichever part of Travo is convenient for you and ignore or extend or replace the rest. For example, instructors can setup tailored CLI Python scripts for their courses.
  • Internationalization: French, English (in progress); more languages can be added.
  • Designed to be generalizable for other forges.
  • Travo is based on a general purpose Python module to interact with GitLab through its API which could serve other purposes.

Screenshots

Fetching and submitting assignments from the terminal:

./course.py fetch Assignment1
./course.py submit Assignment1

The student dashboard for Jupyter users :

Student dashboard

Overview of student submissions on GitLab :

student submissions

Tutorial

Requirements and installation

Requirements: Python >= 3.6

Installation:

pip install travo

Tips:

  • you may need to use pip3 instead of pip to force the use of Python 3.
  • If using pip as provided by your operating system, you may need to use sudo to install travo system wide (sometimes, the user installation is unusable due to ~/.local/bin not being in the users' path)

Authors

Pierre Thomas Froidevaux, Alexandre Blondin-Massé, Jean Privat, and Nicolas M. Thiéry, with contributions from Jérémy Neveu and Viviane Pons.

Feedback and contributions are most welcome!

Tiny history and status

Travo started in Spring 2020 at UQAM as a Python shell script. See the Legacy User Interface. The user interface was completely refactored in Summer and Fall 2020. Travo was then reimplemented in Python in Winter 2021 and continuously expanded since.

Status and future evolutions

Travo is used in production in a dozen large classes at Université Paris-Saclay and UQAM, and many other smaller classes. Nevertheless, it is still a work in progress!

Documentation: The tutorials could use some more love. On the other hand we would be very happy to help you get started as this is the most efficient approach to explore new use cases and improve the documentation. Get in touch!

Better messages: less verbosity by default; provide tips on what to do next.

Internationalization: Basic support for internationalization has been set up, and many, but not all, messages are available both in French and English. The next steps are to scan the Travo library to use internationalization in all messages, and to translate the messages. Contributions welcome!

Support for collaborative work: in progress, with experimental support for modeling teams of students working collaboratively on an assignment, with basic tooling for students. Tooling for instructors remains to be implemented.

Graphical User Interface within Jupyter: in progress, with a student dashboard and an experimental instructor dashboard.

Forge agnosticism: Currently, only GitLab is supported, but the code was designed to be modular to make it easy to support other forges (e.g. GitHub).

Automatic grading: support for a wider range of use cases beyond Jupyter assignments; tighter integration with nbgrader for Jupyter assignments.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

travo-0.2.7.tar.gz (91.4 kB view details)

Uploaded Source

Built Distribution

travo-0.2.7-py3-none-any.whl (78.7 kB view details)

Uploaded Python 3

File details

Details for the file travo-0.2.7.tar.gz.

File metadata

  • Download URL: travo-0.2.7.tar.gz
  • Upload date:
  • Size: 91.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for travo-0.2.7.tar.gz
Algorithm Hash digest
SHA256 f7e6cb34787890e412a8fe87abe3c30e4a5164e62f212e14a2176175dbb890d3
MD5 647bc217e5daf51fb2c302f294163807
BLAKE2b-256 bde01a3d9ce520b4f218e2fda5a43d72e5700382b1cfb4bc542a6edc8dc90bae

See more details on using hashes here.

File details

Details for the file travo-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: travo-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 78.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for travo-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 1a5a256539573859cd5e44d4a350bcd928027d8fff94d77c8bd2810799e72eed
MD5 e4b15c4bc97fd36bbbfb4cf46075faf9
BLAKE2b-256 a94f5bb17e2070de839b369fcda887bb1c01b180f60fcb7ae270fb4eb9294b65

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page