-
-
Notifications
You must be signed in to change notification settings - Fork 15.8k
haskell infrastructure: moving forward without peti #121140
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
IIRC, the recordings are deleted after a few weeks automatically.
@peti has agreed to keep this up for a few more weeks, maybe we can migrate this to a github action in the mean time to make it more maintainable for us?
I'd be happy to be more involved with this if it's fine with @peti.
I think it's manageable, but I'd be great if the current active haskell maintainers (@cdepillabout @maralorn, me) could be given access to the jobset plus some basic hydra privileges (restart-jobs, cancel-build could also be useful).
I don't think I have the time regularly enough to take over, but I'm happy to contribute to this. If we want to make the final fixup phase a more joint effort we maybe need to think about rescheduling what was the livestreams as 20:00 UTC+2 may line up for @maralorn and me well, it probably doesn't for you.
I agree to this sentiment: We should focus on keeping the show running as is for now. However I think we should organize it in a way that it doesn't hinge on a single person (to avoid a situation like this in the future). |
A couple additional questions I have for @peti:
|
Here are my responses to @sternenseemann's message in #121140 (comment):
Oh, a GitHub Action is a really good idea. Here's some documentation about scheduled actions: https://jasonet.co/posts/scheduled-actions/. Implementing this should probably be split off to a separate issue.
Yes, I definitely agree with this. However, I brought it up before and it didn't really lead anywhere: https://discourse.nixos.org/t/how-to-get-privileges-on-hydra-to-restart-builds/9757 I imagine it might be difficult for us to continue working on the I'm not sure who to continue to ask about this though. Maybe @domenkozar or @zimbatm? I also wanted to post about how I feel moving forward. Up until now, I've mostly been helping people who send PRs to the
I completely agree with this. Ideally we'd like to find some workflow that doesn't completely hinge on a single person. But for now, it seems like it might be easiest to have a single person who is ultimately responsible to get |
I think since cabal2nix belongs to the nix org, we already have commit rights there. @cdepillabout I am sorry, but I feel that can‘t talk about the who without the how. I personally am in the end phase of my thesis and am not able to take on new obligations in the next year. I have a lot of ideas for the future of haskellPackages but I agree, that we should postpone getting crazy with that. (That being said I would love it if some kind of task force came together and would discuss this more). A suggestion I have, would be to break free of the weekly schedule. And make the cleanup more a joined effort. I think one way to lessen the churn would be to stop doing nightly hackage updates. I would do one stackage+hackage update, clean up the PR over a few days and merge it. nixpkgs master will be a few days more behind hackage. But that seems totally okay to me on a volunteer basis. Also I think we should push quickly in the direction that all packages someone cares about have a maintainer, so that the person doing the PR only needs to do a bit of bookkeeping and pinging everyone with broken packages. I think the most annoying thing about haskellPackages is that as the one doing the merge you have to arbitrarily judge which packages matter and which don‘t. I want this process to become easier. Having a joint jitsi call for merging together or at least once in a while seems nice. One idea for load balancing: What do you think about aiming for a merge about every 2 weeks and cycling through the merge-manager? I think I might commit to doing this every 6 weeks. One minor point not to forget: After pushing to master we need to update the Nixos version of packages on hackage. Someone needs access to do that. |
Hydra role stuff is documented here (a bit hidden tbh), I think the best person to talk to is @grahamc.
No, the commit access is broken up into several teams and nixpkgs and cabal2nix are separate teams (if at all).
I think we need to formalize this process: I think we need to a) compile a list of important™
I think rotating the responsibility is a great idea and I'd be up for that as well. Concerning the frequency: I think we need to consider if this works well with us tracking the nightly solver (I don't have any opinion on this tbh). If we reduce the frequency of the merge we need to consider merging fixups into master. Maybe we could add an additional configuration.nix file which allows usage of |
This sounds great. I am here if you want to bikeshed the details! Maybe we can make a hydra-job out of it?
Huh, that sounds bad. I think regenerating haskell-packages is not that hard, right? Also, merging fixups into master should be rare, right? |
Yeah that should be fairly easy, either a job with multiple constituents (like the channel jobs), or we just use the test to the list of jobs the hydra jobset builds. I'd have to check how the jobset is setup to figure out the best way.
It isn't, but extra hassle (you need to clone cabal2nix, clone two repositories into specific subdirectories, run the script, …) and currently not very well known or documented. My intention is mostly to make the story of X isn't working in |
I can't commit more time at the moment. I'll think about it though.
That can be solved by pinning the tools used in nixpkgs itself. I've created NixOS/cabal2nix#431 for this, some time ago. It didn't get much support at the time because it didn't match the cabal2nix-repo-based workflow. We should support both though. One because it's easy to use for casual contributors and the other because cabal2nix/hackage2nix need to be developed as well. |
👍 for the initiative. I created a Haskell team and put @peti as the maintainer so he can invite other people: https://github.com/orgs/NixOS/teams/haskell/members |
Sounds like a good idea having something for this in |
Yeah, until now peti had a certain opposition against it because it touched his workflows. But we are free to make our own workflows now. |
I'd be happy to help at times. But I think I'm already checking some haskell builds on |
Except for the fixing of breakages - which is the majority of work, we could automate the process with GitHub Actions. I have admin access to Hydra so I can help with restarts, etc. |
@grahamc, could you please give Hydra privileges to the Haskell maintainer folk? I think they need the ability to maintain the https://hydra.nixos.org/jobset/nixpkgs/haskell-updates jobset, i.e. start an evaluation, re-start failed/aborted builds, and change the configuration of the jobset itself. Is that possible? |
FYI:
The executable that generates the CSV file lives at https://github.com/peti/package-list. |
Okay, @sternenseemann @cdepillabout. What do you think about doing this in a rotation roughly every two weeks? I can volunteer for doing the first merge. I will start updating stuff on the weekend 8./9. of May and merge it until 15./16., maybe even earlier if everything is just easy to fix. Then someone of you could do the next round? All the while we can keep in close contact about how things are going and what we want to optimise. |
In the discussion we had in the stream today @sternenseemann and I had two ideas, that would be nice and probably not difficult to implement soon. I don‘t expect a discussion here, but I wanted to record them.
Other things off note from the stream today:
|
@NixOS/haskell What do you think about blessing on room on an arbitrary chat-medium where we can do low-level coordination? |
If you want I can also enable discussions on the teams page at https://github.com/orgs/NixOS/teams/haskell. If that's helpful to coordinate. |
Let me see if I can summarize the discussion up until now with respect to our suggested workflow moving forward. The members of the Haskell team (for now, me, @sternenseemann, and @maralorn) will take turns fixing up the
(In practice, we could probably have each maintainer be responsible for steps 4 to 8, and then steps 1 and 2 immediately after step 8.) @maralorn @sternenseemann Does my understanding mirror what you guys are thinking? One question I have is whether or not we should merge I think peti would sometimes rebase |
This sounds like a good idea! My only request is that we don't do IRC. A couple possibilities:
I don't really have a strong opinion. Although it might be nice not to have something that is completely private, so that other people interested in what we're doing can follow along. Oh, and I think there was a suggestion that we do a video chat or something in the next couple of weeks to make sure we're all on the same page with the above workflow. That definitely sounds like a good idea. What time zones are you guys in? I'm in JST (UTC+9). |
Excellent write-up @cdepillabout. This is very close to what I would envision. Couple of remarks:
Yeah, we should have scripts for that. Working on that right now based on #86699.
I am not one hundred percent sure about the github action anymore. It sounds convenient, but when we can tell people please run "maintainers/scripts/haskell/regenerate-haskell-packages.sh" as part of your commit. It has the big advantage that people can actually test their commit and it doesn‘t feel like a huge burden. Also we clutter the commit history with less commits. But we can of course add this github action at any point in time.
I am actually trying right now to automate this. It ought to be possible. But no promises.
Yes that is a good point. My thoughts are this:
|
My favorite would be a matrix channel. But anything that we can bridge to matrix would be fine. So discord would be okay for me.
100% on-board. Let’s be as transparent as possible. Let’s invite everyone to join! Let’s make good documentation! And let’s distribute the maintenance on as much shoulders as possible! (It‘s not even that I don‘t want to do the work, it’s that together the results will be better!) |
sterni and I are both CEST (UTC+2). I guess the question is: What is the latest that works for you? I guess something like 13:00 UTC on a weekend might work? (Side note: Sorry for everyone being spammed by this issue.) |
I'm looking into redoing that and moving it into
We need to merge
Note that this mass rebuild is unavoidable. If we push back merging
I'm a bit concerned about this to be honest. It does alleviate some annoyances with the update process, but we then need some way to update specific packages to a version newer than the snapshot we chose: For instance due to security updates or if a new release fixes some build issue we encountered. I'm not sure if merging a two week old hackage snapshot is always a good idea, but I'm happy to try it out at least. I only have a Discord account of the three, but I guess if we make this an official haskell nixpkgs coordination things something open seems more appropriate. |
This is true.
My suggestion would be, that if that’s needed, we will just bump it once more and see what happens. No reason to be dogmatic about only updating once. I just don‘t want to update automatically everyday so that we constantly get new problems. |
We had a meeting on the NixOS Discord today. Here is a rough list of what we discussed: Scripts for MaintananceIn #121391 @maralorn put together a few scripts for various maintainance tasks related to updating Haskell packages here in Nixpkgs. For example, bumping the Stackage packages, updating the Hackage pin, updating the Hackage packages. There was a question as to whether or not we want separate scripts that also make a Git commit after bumping/updating. I don't know if we came to a very strong consensus, but it did seem like it might be nice to make sure our commit messages are always the same. Although it also seemed like we might want to run each script without creating a new commit. One way to solve this would be to add an optional Hydra@sternenseemann put together a PR that updates the Hydra release file for the We need someone to change the configuration fo the It appears that if you sign into Hydra with your GitHub account, you are able to trigger a re-evaluation at any time. The Haskell maintainers will probably frequently use this feature when maintenance work. WorkflowWe had various discussions on what we want our workflow to look like moving forward. It seems like we all don't want to have a lot of hard-and-fast rules, but try to play things by ear. Here is what we did decide to:
The initial rotation will go:
At the end of your rotation, create a new PR for Documentation@maralorn created an issue about documentation: #121403. We also discussed that at the very least we'd like to get our workflow documented for the Future ImprovementsWe talked about various future improvements we'd like to make. This is mostly stuff that would help with our maintenance of Haskell stuff in Nixpkgs.
|
Great write up!! One thing we didn‘t discuss much, but is very important to me: We should try to be very open and transparent about our process. I would also very much like for more people to join the rotation. 3 people is probably fine. more than 5 or 6 is probably too much. But we should communicate a standing invitation for more people to join. Besides that there are of course a lot of other things people can do to help with haskellPackages. Documentation would probably be one of the most important areas. |
One thing I've wished for is for the different language ecosystems to converge and for that effort, I wonder if pkgs/development/haskell-modules/configuration-common.nix (which I find too abstract, I have no idea what it does) could be renamed to |
@teto That sounds like a good idea! Please feel free to open a separate issue for this and tag it |
We've basically figured out how we want to move forward with the Haskell infrastructure, so I am going to go ahead and close this issue. Our workflow is more-or-less described in the following places:
If anyone had any other suggestions about the Haskell infrastructure in Nixpkgs, please feel free to create separate issues for them. |
Uh oh!
There was an error while loading. Please reload this page.
@peti posted a thread on Discourse about stopping work on the Haskell infrastructure here in Nixpkgs.
peti wrote a large part of the Haskell infrastructure here in Nixpkgs, and has done a large part of the work in maintaining it over the years. I think a lot of Haskellers who use Nix have directly benefited from all the work peti has done. In my experience, Haskell is one of the nicest languages to use with Nix, and this is in no small part due to peti.
It is really going to hurt having peti step away from Nixpkgs. But we'll need to find a way to move forward with the Haskell infrastructure here in Nixpkgs.
In particular, we need people to step in and do the tasks peti has been doing for the past couple years.
As far as I know, here are the main tasks peti is doing that will need to be taken over:
haskell-updates
branch that targetsmaster
. Here is an example of one of these PRs.haskell-updates
. Here is an example of one of these commits.haskell-updates
branch that is not evaluating correctly, and merge the above PR. This is somewhat of a manual task, but I think peti relies on Hydra a lot during this. peti has a Twitch channel where he often does this live: https://www.twitch.tv/peti343. (As an aside, do past videos disappear from twitch at some point? @peti, I thought you had uploaded some videos to YouTube in order to make sure that they are always available, but I can't find them anymore with a quick search. edit: Yes, @sternenseemann confirmed that they are deleted.)haskell-updates
. I think peti relies on Hydra for this as well.haskell-updates
branch. Here is an example of a commit that was generated by this.haskell-updates
jobset is working on Hydra: https://hydra.nixos.org/jobset/nixpkgs/haskell-updates. (I'm not actually sure what goes into this or how much work it really is.)(If I've forgotten anything important, please feel free to edit this post and to this list.)
Aside from peti, the main committers that have been active with the
haskell-updates
branch have been me, @maralorn, and @sternenseemann . I'm imagining that one of us would take over these tasks. Or possibly split it up between us.Other people that I think might be interested in the Haskell infrastructure here in Nixpkgs: @domenkozar, @Ericson2314, @jonringer, @bgamari, @roberth, @angerman, @hamishmack, @nh2
As an aside, I'd like to suggest that in this thread, we focus on figuring out who personally will be responsible for the above tasks peti used to perform.
It is tempting to also discuss various ways the
haskell-updates
workflow could be changed, but we should probably keep that to a separate thread. If you'd like o discuss something that would be a significant change, please open up a separate thread (and post a link to it here).The text was updated successfully, but these errors were encountered: