GitLab Classrooms
Description
Hello! We have started using a private gitlab deployment for a university programming class. Our requirements for the course were as follows
- Each coursework exercise will be hosted on a private git repository (in a group)
- All students enrolled in the course will have access to that repository
- The student will fork the private repository, clone it locally and start working
- The student will push his solution to his repository
- Staff members will pull the submissions of all students and grade them (hopefully with automated grading)
The main problem we found was that forks of the private repositories by the students would not be accessible to the staff members (for marking etc.). Another issue is that deploy keys of the forks are not enabled by default (therefore, the student has to manually enable the deploy keys in order to use them). We managed to get by using groups a deploy keys, asking students to enable the deploy keys for each forked repository to allow for marking .. but this is a bit of a hacky solution:
- Staff have no access to the repository via the web User Interface
- Students have to manually enable the deploy keys for each forked repository
So, I propose:
Proposal
The introduction of a "Gitlab Classroom" feature. Classrooms will function exactly as groups, but with the following differences:
- There are two roles in a classroom: Student, and Teacher
- Classroom Deploy keys are enabled on project forks by default (This is to enable the continuous integration marking of the student submissions)
- A Teacher role in a given classroom will have access to the Student forks of a private repository in the classroom (both via the web UI and SSH cloning).
If this is out of scope of this current project maybe we could create a fork of gitlab-CE (say, "gitlab academic") and introduce this feature, as well as other 'adademia specific' features that may pop up .. But I would like to get feedback regarding this feature request.
PS. This feature might be the equivalent of Github Classrooms