guardian / guardian/coding-exercise-project
Use .tool-versions instead of brew
- 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