At Sat, 11 Jul 2020 09:26:47 -0700 (PDT), Shriram Krishnamurthi wrote:
> I'm running headless Racket from a Docker container for auto-grading
> assignments in Gradescope.
>
> The students are writing BSL programs with 2htdp/image. This does not cause
> any problems for most of them.
>
> Two students, however, get an error in file loading with the error message
> in the subject line («Gtk initialization failed for display ":0"»).
>
> I finally localized the problem: it's because they are using the universe
> Teachpack.
>
> I don't know what in universe is causing this, but it seems rather weird
> that *image*, which is fundamentally graphical, does not cause this problem
> but *universe*, which is it fundamentally not, does.
It's helpful help to distinguish between "images" and "GUIs". The
`2htdp/image` library is only about drawing images, so it doesn't need
a GUI context. The `2htdp/universe` library deals with windows and
mouse clicks, so it needs a GUI context.
> Furthermore, this dependency means that any program that depends on
> universe would likely not be able to be auto-graded (at least in a
> Gradescope-like headless context), which seems a rather severe restriction.
> (And ironic, given that the design of universe is to enable testing, and
> hence also auto-grading.) I don't know how Northeastern does auto-grading
> of universe that gets around this, but it's clearly in a different setting.
Following up on Sam's suggestion, I recommend `xfvb-run` as something
like
xfvb-run racket -l handin-server
Matthew