Travo: a classroom open source Python toolkit

Chiara Marmo - LISN - Université Paris Saclay
21/06/2024

Whoami:
Chiara Marmo - Research Software Engineer:

  • Jupyter & Co for education in collaboration with SaclAI School
  • Community and Operation Officer scikit-learn Consortium - Fondation Inria
  • Tool interoperability, archiving metadata, data processing in Planetary Science, Astronomy, Geosciences
  • Extragalactic wide-field imaging data processing

What is Travo?

Travo is a python tool to upscale your computational courses and bring them to a production stage.*

* This is not a ChatGPT-generated tagline.

Travo is an open source Python toolkit leveraging a forge infrastructure and a versioning system to teach computational courses.

Some history:

It started in Spring 2020 at "Université du Québec à Montréal" as a shell script.
It was then reimplemented in Python in Winter 2021 and continuously expanded since.

Authors:

Pierre Thomas Froidevaux, Alexandre Blondin-Massé, Chiara Marmo, Jérémy Neveu, Jean Privat, Nicolas M. Thiéry, with contributions from Nicolas Grenier, Corentin Morice, Marco Pasi, Viviane Pons, and Brian Ravenet.

Issues Travo want to tackle

Teacher's side
  • Shareable infrastructure
  • Course reproducibility
  • Course reusability
  • Automatic correction
  • Score homogenization
Student's side:
  • Collaborative work
  • Gradual learning of best practices
  • Real-time feedback

How?

Versioning
  • Monitor changes
  • Track contributions


Travo is built on top of git.
Technicalities can be hidden.
Student's actions are limited.

Using forges
  • Authoritative repository
  • Backups


Travo makes extensive use of gitlab.
Gitlab community instances are commonly installed in the ESR perimeter (see the report Forges de l'Enseignement supérieur et de la Recherche ...).
Gitlab provides advanced DevOps options (see next slide).

Continuous Integration / Continuous Deployment
  • Check reproducibility
  • Automatic grading

Assignments modifications are integrated and deployed to student's copies.
Assignments are automatically tested and scored.

How does it work?

Student's side:


				$ travo fetch https://///exstudents01.git
				$ cd exstudents01/
				$ travo submit
				

Playing with Java exercises!

Teacher's side:
Formation Travo au LPS 24 juin 2024

What I'm doing here?
Packaging and releasing
Documentation
Testing infrastructure
  • Test coverage increased from 47% to 52%
  • Tests run against a containerized instance of the forge, in the CI...
  • and locally (via tox and tox-docker)
Future activities
Improve test coverage
Increase user and contributor base:
sprints and
tutorials
See you on monday?
Increase interoperability:
with other forges and
with tools for automatic correction.
🙏Thanks!
Questions?🤔