2023-06-15 - Learning Journey Working Group - Meeting Notes #13

Notes

  • @zmitchell: Created Add learning journey contribution guidelines by zmitchell · Pull Request #596 · NixOS/nix.dev · GitHub to write down what we discussed last time
    • Some overlap with contributing guidelines, but good to have everything in one place
  • Will share @maj’s document, PDF or something
  • Regarding creating skeletons as discussed last time, this week, decide which tutorials to work on
    • Let’s look at the knowledge graph thing to see what should come next
    • @zmitchell: Tutorial idea: Could cover having a default.nix and shell.nix share their dependencies
      • @brianmcgee: default.nix is the entrypoint for building and co., shell.nix to get the build environment, maybe extra dev-only things
    • @infinisil: What about the other tutorials we discussed previously?
      • @zmitchell: Limbo, waiting for some feedback from @roberth, could consider in feedback phase
    • Tutorial: Development shell with developer tooling, motivation for not just default.nix for nix-build, but also extra dev-only tooling
      • @brianmcgee: Making something concrete like building something like ping would be good
    • @infinisil: Maybe look at what tutorial is needed? But we are the learning journey so we should start at the beginning
      • @zmitchell: What’s needed is a week 2 discussion
    • @zmitchell: Tutorial idea: Packaging existing software without a Nix build
      • @brianmgcee: Modifying the repo or pulling source from github?
        • @infinisil: Almost the same, can cover both
        • @brianmgcee: Want to avoid overlap of tutorials
        • Not too much overlap at least
      • @zmitchell: Reason is we haven’t covered what to do when it gets harder
      • E.g. if we start with a simple Rust build, but then we need to depend on a system library
      • @zmitchell: Not exactly what I meant. Example: Rust has a dependency on libcurl, adding to Cargo.toml, tries to compile it, need libcurl dev version, need openssl too but only errors during the build, etc.
        • Generally, what problems occur when you try to package something for Nix compared to other distros
        • How to track down the correct Nix packages, correct outputs
      • @infinisil: Sounds good, need to teach reusable skills
      • @brianmcgee: nix-locate is useful, looking at existing examples in Nixpkgs too
        • @infinisil: nix-locate not official, might want to make it so
        • @j-k: Should really be official
        • @zmitchell: Maybe we could just document them anyways, pointing out that there’s no official guarantees
        • @brianmcgee: Under nix-community too
    • @brianmcgee: Tutorial idea: Introducing to binary caches
      • @zmitchell: Needed for beginners?
      • @brianmcgee: Allows avoiding rebuilds
      • @infinisil: Maybe a bit further down the road, CI, deployments, though not far from shell.nix
      • @zmitchell: Avoiding rebuilds in general, put it in backlog though
    • @brianmcgee: Idea: Trivial builders, runCommand, writeScript, etc.
      • @infinisil: Maybe just link to reference?
      • @brianmcgee: Could interleave into existing tutorials
      • @j-k: Useful, needed when having flakes and creating wrappers for apps and co.
      • @infinisil: Maybe more guide-like, how to combine multiple derivations → symlinkJoin or buildEnv
      • @zmitchell: Could make a lesson out of this
      • @j-k: Could use multiple of these builders in a flake
      • @infinisil: Maybe not flakes, but can still have something for that
    • @zmitchell: Idea: mkDerivation phases, writing own phases, etc.
      • @infinisil: +1, very misunderstood topic
      • @j-k: Talk about phases generally or focus on mkDerivation?
        • @infinisil: mkDerivation implements the phases, so that
      • @j-k: Should also show how builders specify phases and interact with them
      • @zmitchell: Teaching how to tweak phases to fix problems
      • @j-k: How to get to tutorial when having a problem
  • How to get feedback to these proposed tutorials?
    • @zmitchell: I’ll make a discourse post soon. How to frame?
      • “as part of the new workflow, looking for feedback for these tutorials ideas, what should be covered in tutorials for these?”
      • @infinisil: Sounds good, give some examples, people can come up with related things that should be covered too
    • @zmitchell: Asynchronous work?
      • @infinisil: We can also think about the things to cover in these tutorials
      • @zmitchell: We also have a big PR backlog, ping people, review stuff, etc.

Action items

2 Likes