Plan multi-language score emission and decide where it lives
Maintainer thường phản hồi trong vòng 3 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
Hướng nghiên cứu
Start by comparing the existing Go emitter in kit/score with the Java file at kit/src/main/java/autograder/Score.java, then review the three packaging options and the linked #419 proposal. This issue asks for a repository-structure decision before implementation, so done means agreeing on where per-language emitters live and documenting the resulting contract and follow-up work; implementation is explicitly deferred.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
Courses today use C# and Python in addition to Go; a Java course ran previously but no longer does. Support for these in kit and the course templates is incomplete or missing:
- Go: fully supported —
kit/scoreprovides a registry, unconditionalPrintTestInfo()output, andtests.jsongeneration viaquickfeed/cm'sgen-tests-json. - C#/.NET:
doc/templates/dotnet-course/scripts/run.shrunsdotnet test --logger:consoleand emits no score lines at all; there is no Dockerfile in the template;cm gen-tests-json -runner c#maps todotnet -v, which only prints a version. None of this produces atests.jsonor a scored submission today. - Python: no template, no score emitter, no generator support.
- Java:
kit/src/main/java/autograder/Score.javaemits scores but has no registry, noPrintTestInfoequivalent, and no build tooling (nopom.xml/build.gradle) — it is a leftover from a course that is no longer active.
Where should per-language score emitters live?
kit/ is currently a Go module inside quickfeed/quickfeed, with the Java file awkwardly embedded inside it. Adding real Python and C# emitters raises a packaging question: a Python emitter should be pip-installable, a C# emitter should be a proper NuGet-packable project, and neither fits naturally as a subdirectory of a Go module.
This overlaps directly with #419, which already proposes moving kit out of this repo into its own (quickfeed/score) and renaming the module. If per-language emitters are going to live outside quickfeed/quickfeed regardless, that move and this decision should happen together rather than twice.
Options:
- Keep one
kit/insidequickfeed/quickfeed, with each language's emitter in its own subdirectory, each with its own language-native packaging manifest (pyproject.toml, a.csproj, etc.) alongside the existing Go module. - Move to a new, separate repository (per #419's
quickfeed/scoreproposal), language-agnostic, decoupled from the server's release cycle, with one subdirectory per language. - One repository per language (e.g.
quickfeed/score-python,quickfeed/score-csharp), each independently versioned and released through its own ecosystem's tooling (PyPI, NuGet).
This needs a decision before implementation work starts; it affects how course templates reference the emitter and how cm gen-tests-json would invoke and parse each language's output.
Once a structure is decided
For each language to be supported:
- a documented JSON-line score contract (secret, TestName, Score, MaxScore, Weight — the wire format
kit/scorealready uses), - a score-emitter library or example implementing it,
- a
PrintTestInfo-equivalent listing that a generator can harvest to producetests.json, - a complete course template (
run.shthat emits scores, and a working Dockerfile), - corresponding support in
quickfeed/cm'sgen-tests-json(quickfeed/cm#20).
Related
- #419 — proposes moving
kitto its own repo (asscore); should be decided together with this - #1605 — qcm's own multi-language support depends on this
- quickfeed/cm#20 — companion issue for wiring
gen-tests-jsononce the contract above is defined
- Ngôn ngữ chính
- Go
- Star
- 27
- Fork
- 21
- Merge trung bình
- 5 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 21
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của quickfeed/quickfeed
-
bug frontend
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 3 ngày
-
enhancement frontend
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 3 ngày
-
backend enhancement frontend
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
Maintainer thường phản hồi trong vòng 3 ngày
-
cleanup frontend
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
Maintainer thường phản hồi trong vòng 3 ngày
-
backend bug enhancement frontend
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
quickfeed/quickfeed#1672 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
Tất cả issue của quickfeed/quickfeed
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 81/100
apache/rocketmq-dashboard#6895 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
agent-butler-finding chore
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
jordansmall/spindrift#5466 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 87/100
777genius/agent-notifications#490 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
devantler-tech/ksail#7836 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
keyxmakerx/Chronicle#1469 ·
Maintainer thường phản hồi trong vòng 1 ngày