-
Notifications
You must be signed in to change notification settings - Fork 3
Move lib
into a separate repository
#7
base: main
Are you sure you want to change the base?
Conversation
I think at this point it would also be helpful to run |
I noticed that now https://github.com/auxolotl/lib has nixpkgs as an input, and as such nixpkgs is present within core's |
I think we could also have the Either way, will need to hold off on this until we have another way of getting |
As I mentioned here #2 (comment), that is the plan. But lets save that for a later PR. |
Hopefully you can remove the upstream decency when #8 is merged. Then we can do |
I'm not entirely convinced this is a good idea. What's the use case for taking lib out of core? The two are going to be very closely intertwined with each other (especially if lib is going to do anything relating to stringing together derivations a la |
I generally find the same amount of issues across multiple repos easier to handle than all in one repo. Synchronising changes is obviously harder, but this would be an issue even if
The set of functions in there right now is currently just the same as My understanding is that
Right now this is basically a limitation of flakes, since |
this is pending figuring out the system we want to use for maintainers/teams, and keeps everything evaluating in the meantime.
What about storing the tests in a separate branch with its own flake that depends on |
Sure, or |
Keeping repo count down isn't just for maintainers - having an additional repo to track issues in adds additional confusion to users when they go to eg. report an issue ("is this a bug in Core or lib?"). There's also the extra overhead of being another repo to checkout, with the possibility of grabbing multiple different copies of it depending on the state of lockfiles. I'm not sure I'm seeing much benefit to outweigh the downsides here.
I'm weary of doing this - I'm not a fan of branches in one repo having completely divergent histories, it doesn't lend well to code discovery (since users have to be aware the branch exists to know that code is even there). Plus, it becomes impossible to update the tests and the actual code at the same time in one PR. It's also an issue that just wouldn't exist if lib was a part of the Core repo, which IMO furthers the case for not splitting. |
To me they seem pretty easily separated, but I guess I would think that lol.
Agreed. I think right now we don't have consensus on what exactly core is meant to be, so I think we should come back to this during/after the upcoming meeting. |
I think it will be helpful on the maintaince side.
Even outside of maintaince though:
|
I have tried this a number of times for myself thinking it was a good idea. I've had a pretty bad time every time. The only time it was a mediocre experience was when it was an "inherited" model, with one base branch and the others just always auto-merging that base branch into themselves. But even then it was a difficult mental model needing to not make a change on a branch, go to base, make the change, then back to the feature branch, and merge base. I very frequently forgot and had to redo commits on base. Very much not an experience I would want to try with a team of people. |
For issues, I agree @Sorixelle one place is nice. I had problems reporting "nix" issues and them telling me "no that's a nixpkgs issue" and I didnt understand the difference at the time. I think we should consider disabling issues on both lib and core, or locking them to contributors only. Then all issues can be reported through either an aux or auxpkgs repo. For lib and core, if its only contributors making issues, I think the separation of lib and core would be helpful. For PR's I think having it as an additional place for PR's is very much a good thing. A core PR and a lib PR should have different standards and CI tests. |
I'll throw my 2 cents on this here since I probably can't meet. I think core is a useful separation for keeping messy bootstrapping isolated, for keeping a small mental model for onboarding new contributors trying to understand aux, for staying small to prevent security issues, and for ensuring we don't accidentally bloat the dependencies of the nix/aux cli (e.g. we shouldn't rope in nodejs just to get semver parsing). To keep it as small as possible, and to have an objective definition to avoid hurt feelings, I'm in favor of it being defined as the minimum packages necessary to build nix CLI. With the one additional job of making those packages (for building nix CLI) look as similar as possible across platforms (distinguishing platform-specific core from platform-agnostic core). I say this specifically in contrast to the subjective idea that core is "commonly used build tools for all packages". Which I think, in the long run, will be the cause of many debates and hurt feelings if someone's favorite library isn't considered "core". It also isn't necessarily a helpful "soft" defintion for keeping the messy bootstrapping code isolated, since some commonly used stuff doesn't have messy bootstrapping (e.g. it would be just as easy to maintain a commonly-used package outside of core). If you guys end up wanting this kind of "broad" core definition despite this, I would at least advocate for an objective definition, like "is a dependency of at least 40% of packages", to avoid hurt-feelings and subjective debates later. |
This PR moves lib out of this repository, and into a separate one here. This is meant to make maintenance easier by allowing us to develop the two separately.
It also removes the dependency on
nixpkgs
, and some usages of maintainers/teams that were stopping evaluation. Probably these should come from thecommunity
repo instead.