| 27 Mar 2023 |
infinisil | @room: The next meeting will take place in ~10 minutes - meeting link - live stream - meeting notes | 14:25:26 |
infinisil | * @room: The next meeting will take place in ~5 minutes - meeting link - live stream - meeting notes | 14:25:32 |
infinisil | tomberek: growpotkin ( Alex Ameen ): Another ping, joining? | 14:32:48 |
| @federicodschonborn:matrix.org joined the room. | 15:03:30 |
tomberek | no, not today (traveling) | 15:15:32 |
| kha13d joined the room. | 15:20:10 |
infinisil | tomberek: Ah I see you declined the calendar event, I should check that next time :) | 15:54:54 |
infinisil | I'll reach out to #matrix-suggestions:nixos.org to have a channel for the Package Modules WG | 16:00:57 |
| asymmetric left the room. | 16:04:56 |
nbp | infinisil: I just read the WG search … I have multiple comments:
- Do not name it module system, unless you want to have module systems as an answer. Nixpkgs does not require modularity, it requires extensibility and configuration. We care about overriding, not mixing.
- This topic is the only reason why I am in this channel.
- I would be happy present why S.O.S. is the answer, and reply to all questions.
- I have no time to dedicate working on this project, I am focused on another pet project on my spare time, and Nix is not part of my day job.
| 16:20:51 |
infinisil | nbp: It's subtle, but yes we didn't name it "the module system", we called it "a module system" and "something like the module system" :) | 16:22:27 |
infinisil | nbp: Regarding S.O.S., I think this is also something the working group needs to take into account and check whether it might be a better alternative. | 16:23:57 |
infinisil | nbp: How sure are you that S.O.S. solves all of the problems described here? | 16:25:27 |
Wanja Hentze | what's SOS short for? | 16:26:06 |
infinisil | Oh and even if you don't have time to actually work with the WG, you can still contribute by just reviewing what the WG does | 16:26:27 |
infinisil | Wanja Hentze: https://github.com/NixOS/rfcs/pull/3 | 16:26:35 |
nbp | In reply to @infinisil:matrix.org nbp: How sure are you that S.O.S. solves all of the problems described here?
- Overlays are outside the scope of S.O.S., overlays are how layers are applied one after the other.
- S.O.S. should help unify
override, .overrideAttrs, overrideDerivation, extendDerivation, .overrideScope', .extend, makeScope, .overridePythonAttrs, pkgs.haskell.lib.overrideCabal and probably more under a single update operator syntax.
- S.O.S. does not solve discoverability, as this is a problem which is orthogonal.
mkDerivation can be updated to have a fix set of inputs, which would make it nicer with or without S.O.S.
- S.O.S. does not solve the merging responsibility, but it provides update operator (or 2 functions in the mean time) to resolve this problem to be use as the base for any automated logic that we might want to add on top.
- S.O.S. does not require the evaluation on previous overriden packages in case of extension, as
mkDerivation would be called after the fix-point.
| 16:37:43 |
infinisil | nbp: Then honestly S.O.S. doesn't sound like it would work as well as something like the module system | 16:45:35 |
nbp | because this is not a module system, this is just a different way of ordering computation, which let you parametrize before computing, thus remove the need for unpeeling functions before adding them back (all our override functions today …) | 16:47:03 |
nbp | * because this is not a module system, this is just a different way of ordering computation, which let you parametrize before computing, thus remove the need for unpeeling functions before adding them back (i.e: all our override functions today …) | 16:47:09 |
nbp | And I honestly recommend adopting something like S.O.S. before trying to solve a larger problem of how the merging responsibility is handled. | 16:47:57 |
nbp | Nickel provide a nice approach to having type-like per attribute, and merge definition per attribute, but this is something which can be added later on, after having a clean syntax which no longer requires override functions. | 16:49:19 |
nbp | To summarize. Yes S.O.S. does not answer all the problems, it focuses on the override one, and does not prevent fixing the other problems later / sooner. | 16:51:13 |
infinisil | If we want to consider doing SOS instead of a module system to solve these problem, then SOS needs to be at least better than the module system at solving these problems. | 16:51:45 |
infinisil | Yeah I guess we don't need to solve all problems at once, but it would be nice, and it's what the module system seems to be able to do | 16:52:53 |
infinisil | nbp: Wait in your proposal, can SOS be used outside of Nixpkgs by third-parties? Iirc it can't | 16:53:21 |
toonn | The current "module" system? | 16:53:41 |
infinisil | Oh I guess via overlays | 16:53:42 |
infinisil | In reply to @toonn:matrix.org The current "module" system? Not entirely sure what your question is :) | 16:54:19 |
toonn | "and it's what the module system seems to be able to do" Are you referring to what is currently called "the module system," even though it has very little to do with what is generally considered a module system in other languages? Or did you mean "a module system" like before? | 16:56:44 |