Giter Club home page Giter Club logo

Comments (37)

7c6f434c avatar 7c6f434c commented on August 19, 2024 2

I think it is OK to add more comments for the situations that should be rare and special.

At the same times something about comment coalescing for the common case would be nice, yes…

from ofborg.

grahamc avatar grahamc commented on August 19, 2024 2

What if instead of a comment it failed the PR's status?

if master & 501+ => fail: please move to staging

cc @vcunat

from ofborg.

shlevy avatar shlevy commented on August 19, 2024 2

@grahamc For what it's worth, I'd love to get to the point where we can ditch staging altogether and have the -unstable channels be actually reliable ways to stay up-to-date without rebuilding too much.Maybe eventually we can have ofborg block a PR if the number of packages is too high, but have a command to do a build and populate the cache and then it can be merged.

from ofborg.

7c6f434c avatar 7c6f434c commented on August 19, 2024 2

I support failure on stdenv change in master. A hand-picked set of extra critical libraries is also reasonable.

I think 501+ label is very useful to compare expectations and reality. I.e. «of course 500 packages changed, it's a change in Python» vs. «wait what why, what did I miss?»

I agree that going the TravisCI-for-Nixpkgs way where «you won't believe me, but the Travis failure is actually relevant» happens, is not attractive.

from ofborg.

7c6f434c avatar 7c6f434c commented on August 19, 2024 2

Re: PRs vs. direct push — maybe I should make it explicit that I argue from the assumption that we do not want to do a borg policy hard turn between now and the beginning of «maybe no direct push to master» talk.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024 1

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

I think this is a really good idea, but am afraid of adding more comments to pull requests :(

from ofborg.

matthewbauer avatar matthewbauer commented on August 19, 2024

I hope it doesn't happen too much! I guess there might be other ways to warn with GitHub APIs? Some other options:

  • regular comment (original)
  • PR review comment
  • additional status

from ofborg.

7c6f434c avatar 7c6f434c commented on August 19, 2024

Not sure this is a good idea… Does this mean that a rust-unstable update must go to staging once there are enough cargo packages?

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

I suppose yes,

Does this mean that a ≪compiler≫ update must go to staging once there are enough dependent packages?

if the goal is to avoid serious inconvenience for contributors, and there are hundreds of packages depending upon ≪compiler≫ then yes... right?

from ofborg.

shlevy avatar shlevy commented on August 19, 2024

I think the usage percentage might matter... But as a starting point let's try it as pure numbers.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

Indeed -- 501+ -> staging has always sort of been loose policy. Failing the PR would make it less soft policy and more hard policy.

from ofborg.

7c6f434c avatar 7c6f434c commented on August 19, 2024

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

Yeah, I don't know what to say other than rules are imperfect.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

It would be very inconvenient to be the person who depends on those 501+ rust packages and someone pushes a 501+ rust rebuild to master. At the end of the day is what is the 501+ rule for and why do we have staging, and how do those intentions translate in to the goals of the check.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

I mean, a separate conversation is 501+ even the line we want to draw? It was just sort of picked out of a hat when I started tagging.

from ofborg.

7c6f434c avatar 7c6f434c commented on August 19, 2024

I think 501 Python packages are less annoying to rebuild than a single Chromium.

Also, I would expect that unstable rustPackages or lispPackages or pythonPackages have a different typical usage — do we have a person who depends on 500 rust packages?

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

I don't think that level of detail in the rules is a feasible thing right now.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

If knowing 500 things rebuilds is not useful, why have the tag at all?

Also, for example the fail could be done only if stdenv is changed.

from ofborg.

shlevy avatar shlevy commented on August 19, 2024

I think it's a useful hint, but it's not definite. IMO we should just give it a shot to have 500+ cause a failure and just let trusted people bypass it for now. If it turns out to be obnoxious we can iterate.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

My only hesitation is I'm afraid of making PR checks fail for reasons that can be ignored. As it stands, there is no valid reason to merge a PR when its status is red.

from ofborg.

LnL7 avatar LnL7 commented on August 19, 2024

I agree with @grahamc, that we should avoid introducing failures that are "ok" to be ignored.

I think 500 is probably a bit of a low threshold to disallow a merge. Given that master progresses pretty quickly it's probably impossible for a normal staging merge not to cross that for example. Not sure what a reasonable number is but failing on a stdenv rebuild definitively sounds reasonable to me.

from ofborg.

Profpatsch avatar Profpatsch commented on August 19, 2024

As another input, updating a big npm-based project’s dependencies is probably also hit that 500 derivation policy. 200+ fixed input derivations (the sources) plus 200+ package derivations plus one node_modules derivation for every non-leaf dependency.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

ofborg counts based on changed named attributes, not based on total changed derivations,h so it should count an npm-based project as one.

from ofborg.

vcunat avatar vcunat commented on August 19, 2024

Version bumps of the default kernel are hitting 501+ IIRC.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

Maybe you can offer some insight in to what you would find useful, and possibly better package-rebuild buckets?

from ofborg.

vcunat avatar vcunat commented on August 19, 2024

Maybe one more level for Linux, say 500–2000? (The <10 level might get ditched, too.) EDIT: it might be a gray area where some cases are more suitable for master and some for staging.

I'm wary of shifts, as I don't know what we would do with already labeled PRs, though it might not be too difficult to just run eval on all of them again.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

Sounds good.

  • Would it be proper to fail a rebuild-2000+ PR to master, saying it should be redirected to staging?
  • Would it be proper to fail a rebuild-stdenv PR to master, saying it should be redirected to staging?

I can do the shift in such a way that the old 500+ tag will get removed upon re-eval. Thus, on PRs we're not sure on, we can just trigger a re-eval.

from ofborg.

vcunat avatar vcunat commented on August 19, 2024

It seems difficult to make these hard rules, as sometimes changes have a separate jobset so binaries are ready at that moment. I think they usually aren't merged via PRs, though.

I'm still not really sure how to do such workflows, as such branches still often interfere with effectivity of staging (in terms of minimizing total rebuilds), but it seemed typically only a minor issue so far.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

Makes sense, in this case I think the proper solution is probably not to fail the build at all, and fall back to a soft recommendation of using staging via a comment or something.

from ofborg.

7c6f434c avatar 7c6f434c commented on August 19, 2024

Another thing that can change the balance is a notable bugfix (a security issue, a data integrity risk)…

from ofborg.

FRidh avatar FRidh commented on August 19, 2024

I would like to see another tag for 500 - 5000 and the number of rebuilds posted somewhere. In my opinion we should forbid merging to master at 5000+. Having that big changes on master slows down staging-next (and all other jobs), and basically means an extra day of delay because staging-next will need to rebuild that set of changes again before it is merged into master.

At 500 - 5000 it should be discouraged. I think @r-ryantm already changes branch to staging at 500+.

Edit: @LnL7 pointed out that, when clicking on the eval check, you're presented with the whole list of items to rebuild.

from ofborg.

ryantm avatar ryantm commented on August 19, 2024

I think @r-ryantm already changes branch to staging at 500+.

I manually change @r-ryantm's PRs when I see the "500+" tag. I don't always get to it though.

from ofborg.

ryantm avatar ryantm commented on August 19, 2024

If OfBorg removed it after it switched branches, this would make it very easy to search for the PRs that need to switch to staging.

from ofborg.

grahamc avatar grahamc commented on August 19, 2024

from ofborg.

Ericson2314 avatar Ericson2314 commented on August 19, 2024

If we had separate statuses one could be like ofborg-optional vs ofborg-mandatory.

from ofborg.

FRidh avatar FRidh commented on August 19, 2024

Note that this last week there have been 2 mass-rebuilds on master.

from ofborg.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.