guardian / guardian/coding-exercise-project

Use .tool-versions instead of brew

Open
#142 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
Shell
Stars
18
Forks
25
PR merge metrics
No merged PRs in 30d

Description

The examples in this repository use brew to install the dev toolchains, but installing tools globally onto the applicant's machine feels pretty intrusive. It also means we're assuming the use of a mac, which makes things more difficult for people that can't afford an expensive laptop.

Some examples of problems (non-exhaustive!):
- lots of things in brew use Java so mucking around with that by installing specific versions might break other things for people.
- brew-installing Python 3 is hopefully a no-op, but like Java, this might cause problems if it is not.
- the Scala example uses the guardian's gu-scala cask. This hasn't been touched in 7 years, and unnecessarily installs both Scala and sbt.
- the JavaScript and typescript examples assume yarn is installed globally, and the JavaScript one is likely using a pretty old version of yarn.
- most of the other examples assume the language toolchain is already available on the path (gem,

Might we use .tool-versions instead, so they can use their tool of choice for installing the dev toolchain? If all the examples here specify a `.tool-versions` file that we maintain, we can document the use of [mise](https://mise.jdx.dev/getting-started.html) in the main README (our recommended tool) or people are free to use other compatible tools like `asdf`.

Looking ahead, this would make it simpler for us to quickly verify these examples still build, manually in our own dev environments, or automatically (e.g. from a GHA workflow). Lots of the examples still lack setup scripts, I think migrating to a standard approach for installing toolchains and including a build that verifies all of them would help make the experience more pleasant and reliable for pairing tests.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by inventorying the language examples and their current brew, yarn, and toolchain setup instructions, then read the main README guidance. Define the .tool-versions files and mise documentation needed for each example; done means the examples no longer require global brew-installed toolchains and their builds can be verified consistently, including through a future GHA workflow.

Written by the indexing model from the issue text.

Assessment

Tech stack
shell
Domain
developer-experience, tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.