2023-04-27 - Learning Journey Working Group - Meeting Notes #6
- Previous meeting notes
- Attendees: @zmitchell @fricklerhandwerk @infinisil @asymmetric (@henrik-ch, later)
- Notes taken by: @infinisil @fricklerhandwerk
Agenda
- Previous action items
- New meeting time
- Pick up where we left off last time
- Identified most of what we want the end goal to look like
Action items from last time
-
@zmitchell: no progress on Tracking issue - re-shape current content into a structure based on Diataxis · Issue #499 · NixOS/nix.dev · GitHub
- Did not have time yet
- Actual work will be to figure out what it should look like
- Needs some discussion
-
@khaled:
nixos-tests
on macOS- @fricklerhandwerk: pretty sure it should work, @gabriel439 and @yorikSar put a lot of effort into that
New meeting time
-
@zmitchell: Learning Journey Working Group Weekly Meeting - Crab Fit
- Dates listed are specific days, but treat this as weekly availability
Learning Journey Design
-
last time: NixOS tests with multiple machines and multiple processes interacting
- database (Postgres), proxy or webserver (Nginx), web application (Python)
- while hard to pull off, chosen intentionally to force going through all the preliminaries
- @khaled is investigating if this will work cross-platform
-
next steps:
- divide into pieces, with learning goals for each piece
-
find touch points with Nix:
- NixOS VM tests
- NixOS configuration
- NixOS module system
- Nix language
- NixOS module system
- NixOS options search
- test scripting interface (Python)
- interactively running tests
- packaging an application
- declaring a derivation
- specifying Python dependencies in Nix
- NixOS configuration
- NixOS VM tests
-
@infinisil: should not go too deeply into incremental developer environments, that’s not something Nix can do itself
- @fricklerhandwerk: agree, at the worst all of the results will be completely invisible, and that’s okay since we want to teach Nix-specific concepts and techniques
-
@zmitchell: Disagree, it’s important to be able to test things manually without having to create VM tests.
- Should have a script that we can just call and have it run the server
- @fricklerhandwerk: Both are important, incremental development and CI
-
@fricklerhandwerk: Let’s try to cover one component skill, e.g. Python packaging. Not sure if there’s even a recommended way
-
@zmitchell: Working with Nix from the ground up → just use
pythonPackages
- @infinisil: Has some problems, needs manual updates, but it’s official so I’d say we should go for that
-
@fricklerhandwerk: Wouldn’t recommend the Nixpkgs way, gets you stuck very quickly.
- Minimum for a Python package is a
requirements.txt
file, not supported by Nixpkgs AFAIK
- Minimum for a Python package is a
-
@asymmetric: How about
poetry2nix
- @infinisil: It’s even in Nixpkgs!
- @zmitchell: Python has various package managers and dependency resolvers, just using Nix doesn’t require a specific package manager.
-
@infinisil:
poetry2nix
seems pretty good- @asymmetric: have to provide some information, since it does a few things that may seem unusual to Python natives
- @fricklerhandwerk: We only need to pick one way to demonstrate the principle
-
@infinisil: How about leading from
pythonPackages
topoetry2nix
to show the diversity of tooling - @fricklerhandwerk: Wouldn’t recommend, alternatives add mental overhead, less variants is better, should be our goal
- @infinisil: But there’s no unique best solution, there’s tradeoffs
- @asymmetric: Similar to flakes problems: There’s no bridge from non-flakes to flakes, confusing people. Similar to this, showing a path from one tool to another would be helpful for people
-
@fricklerhandwerk: Two aspects:
- A different tool can solve different problems, the tool itself should demonstrate that
- People should be able to use it immediately, nobody uses
pythonPackages
to build applications- @infinisil: They do, it’s not that problematic!
-
@zmitchell:
pythonPackages
is important to show. If people run into problems, other tools can be used.-
@infinisil: Upstreaming also requires knowing about
pythonPackages
-
@infinisil: Upstreaming also requires knowing about
-
@fricklerhandwerk:
pythonPackages
just happens to be an integral part of Nixpkgs, it’s not a great solution. While working withpythonPackages
could teach some things people need, it’s just not scalable for practical work.- Most importantly it’s not backwards compatible with the rest of the world using
requirements.nix
orpyproject.toml
- Most importantly it’s not backwards compatible with the rest of the world using
- @infinisil: Scalable to Nixpkgs, also how all Nixpkgs packages are done
- @asymmetric: Decision to stick to stable interfaces should be upheld. Could allow people to select different ways of doing things.
- @zmitchell: Agreed, show the official way but link to other ways of doing it.
-
@henrik-ch: Important to keep the tutorials straightforward. We could support the official version on nix.dev and assist or contribute to external projects in order to improve their documentation
- That is of course a resource problem
-
@zmitchell: We should be the ones who maintain the material we write, this probably won’t work for third-party projects
- More general question: where should the best practices be documented?
-
@fricklerhandwerk: That’s exactly one thing nix.dev is supposed to be for. We just don’t have processes to determine best practices. Needs much more coordination.
- We may want something like the Thoughtworks technology radar
-
@fricklerhandwerk: That’s exactly one thing nix.dev is supposed to be for. We just don’t have processes to determine best practices. Needs much more coordination.
- More general question: where should the best practices be documented?
-
@infinisil: How about looking at third-party projects, seeing which aren’t superseded by others, look at tradeoffs/advantages/disadvantages and list these on nix.dev
- @fricklerhandwerk: This woudl be another rabbit hole that we’d have to go into. Should rather focus on teaching skills that can be reused in different contexts
-
@infinisil: Why not use show both
poetry2nix
andpythonPackages
, they have different use cases, both valid
-
@zmitchell: Working with Nix from the ground up → just use
-
Ran out of time before reaching a consensus on
poetry2nix
vspythonPackages
.
Action items
- @zmitchell: post the calendar for determining a new meeting time
- @zmitchell: post a new PR to continue discussion on Tracking issue - re-shape current content into a structure based on Diataxis · Issue #499 · NixOS/nix.dev · GitHub
- @khaled: Verify that NixOS VM tests do in fact work on macOS