pwncollege / dojo

Infrastructure powering the pwn.college dojo
https://pwn.college
BSD 2-Clause "Simplified" License
279 stars 87 forks source link

How to maintain the year-version of one course? (e.g., CSE 365 2023, 2024, 2025, 2026, etc.) #417

Open mudongliang opened 3 months ago

mudongliang commented 3 months ago

Hi dojo maintainers,

there are some classes with several different year versions, e.g., CSE 365 2023 and 2024.

Our course dojo needs iteration, per year possibly. If you create a dojo per year, that's a terrible managment for dojo repositories.

How do you guys maintain inside pwn.college?

I suggest we can create dojo with repository and branch or tag, instead of only repository. So we can create different dojos in pwn.college or downstream with one repository, meanwhile we only need to maintain one repository for one course.

Please let me know if you have issues about this suggestion.

adamdoupe commented 3 months ago

We use a docker repo per course. I don't think it's unmanageable.

I quite like it, because the history and everything is there for one instance of a class.

Specifically for classes, you want to capture everything that was done there.

What's missing on the website (that we want to implement) is a feature to archive old versions of courses. That way they're still accessible (perhaps through navigation) but they don't clutter the course listing of all the dojos.

mudongliang commented 3 months ago

We use a docker repo per course. I don't think it's unmanageable.

I see. I think you use this different layer to solve my problem. The docker repo has the same role as the dojo git repo in my mind. It is also acceptable.

However, I like the old style to deploy a course by directly importing one git repository. It's simple and enough for our courses.

I quite like it, because the history and everything is there for one instance of a class.

Specifically for classes, you want to capture everything that was done there.

I think it is the same as the dojo git repo.

What's missing on the website (that we want to implement) is a feature to archive old versions of courses. That way they're still accessible (perhaps through navigation) but they don't clutter the course listing of all the dojos.

Yeah, this is a good feature. However, it seems few students would like to tackle challenges in the old courses. No much waste if they are accessible.

ConnorNelson commented 3 months ago

I've been thinking about this recently. I think the solution is going to be setting type: hidden for old courses, which is something I may do soon for our instance.

adamdoupe commented 3 months ago

We use a docker repo per course. I don't think it's unmanageable.

I see. I think you use this different layer to solve my problem. The docker repo has the same role as the dojo git repo in my mind. It is also acceptable.

Oops, I mistyped, my apologies. We use a git repo per dojo.

However, I like the old style to deploy a course by directly importing one git repository. It's simple and enough for our courses.

I quite like it, because the history and everything is there for one instance of a class. Specifically for classes, you want to capture everything that was done there.

I think it is the same as the dojo git repo.

What's missing on the website (that we want to implement) is a feature to archive old versions of courses. That way they're still accessible (perhaps through navigation) but they don't clutter the course listing of all the dojos.

Yeah, this is a good feature. However, it seems few students would like to tackle challenges in the old courses. No much waste if they are accessible.

Ah, most, if not all, of our content is eventually made available into a "Topics" dojo. Usually new modules will start out in a class, then move to a Topics dojo when they're ready.

This way we don't lose a ton of content by hiding old dojos.