I recently looked at the new SolarPosition.jl package and was impressed by the GH Actions that helped improve its quality. This got me wondering if there’s a maintained, opinionated, and complete list of quality-improvement tools and practices for Julia packages.
By “tools and practices” I mean things like:
Documentation (e.g. Documenter.jl)
Testing (e.g. Supposition.jl)
Coverage reporting
ExplicitImports.jl, Aqua.jl, JET.jl, Runic.jl, etc.
Linting and formatting
AI agent checks
Julia Security Working Group certification
Thread safety verification
Memory leak detection
Benchmarking (e.g. BenchmarkTools.jl)
Auto-merge eligibility for General registry
Style guide conformance
These quality standards are a moving target with new tools and practices emerging regularly.
It would be valuable to consolidate these into PkgTemplates.jl and/or Aqua.jl (with opt-in/opt-out configuration), but I’m curious: Do people have opinions on this? What other quality-improvement steps should be included?
dependabot.yml and CompatHelper.yml overlap? What is the way forward?
dependabot is newer and integrated into GitHub; I don’t think it can be used from gitlab for example. However if you’re on github it seems more configurable & ergonomic than CompatHelper. It is also quite new so there may be bugs to shake out.
Nothing that exists yet, but I’m referring to Launching the Julia Security Working Group and maybe some future tooling that could help us quantify how secure a certain package is.
Most of the actions used in SolarPosition.jl come from BestieTemplate.jl, which I used to generate the project. If you find / create other useful actions, perhaps they can be added to BestieTemplate. The advantage of that is that the actions are part of a real project so they are tested and kept up to date.
The fact that we can reapply the template to “update” to the latest best practices is amazing!
How is BestieTemplate different from PkgTemplates?
it can be applied to existing packages
it invites to follow some (opinionated) best practices
it can be reapplied to acquire updates made to the template
it is automatically reapplied through Pull Requests made by the Copier.yml workflow (Work in progress)
It is really hard to keep up with these GitHub Actions updates, and a tool that facilitates these updates is super welcome
They would definitely need some updating given the evolutions of the ecosystem and the rise of BestieTemplate.jl. @langestefan and others are more than welcome to pitch in!