Dependency cooldowns turn you into a free-rider
by pabs3 on 4/15/2026, 2:03:12 AM
https://calpaterson.com/deps.html
Comments
by: bnjemian
Okay sure, but what happens when a high CVE is discovered that requires immediate patching – does that get around the Upload Queue? If so, it's possible one could opportunistically co-author the patch and shuttle in a vulnerability, circumventing the Upload Queue.<p>If you instead decide that the Upload Queue can't be circumvented, now you're increasing the duration a patch for a CVE is visible. Even if the CVE disclosure is not made public, the patch sitting in the Upload Queue makes it far more discoverable.<p>Best as I can tell, neither one of these fairly obvious issues are covered in this blog post, but they clearly need to be addressed for Upload Queues to be a good alternative.<p>--<p>Separately, at least with NPM, you can define a cooldown in your global .npmrc, so the argument that cooldowns need to be implemented per project is, for at least one (very) common package manger, patently untrue.<p># Wait 7 days before installing > npm config set min-release-age 7
4/15/2026, 4:39:18 AM
by: dominicq
> Fundamental in the dependency cooldown plan is the hope that other people - those who weren't smart enough to configure a cooldown - serve as unpaid, inadvertent beta testers for newly released packages.<p>This is wrong to an extent.<p>This plan works by letting software supply chain companies find security issues in new releases. Many security companies have automated scanners for popular and less popular libraries, with manual triggers for those libraries which are not in the top N.<p>Their incentive is to be the first to publish a blog post about a cool new attack that they discovered and that their solution can prevent.
4/15/2026, 5:07:37 AM
by: ryanjshaw
This doesn’t solve the problem either, which is that of the Confused Deputy [1]. An arbitrary piece of code I’m downloading shouldn’t be able to run as Ryan by default with access to everything Ryan has.<p>We need to revitalize research into capabilities-based security on consumer OSs, which AFAIK is the only thing that solves this problem. (Web browsers - literally user “agents” - solve this problem with capabilities too: webapps get explicit access to resources, no ambient authority to files, etc.)<p>Solving this problem will only become more pressing as we have more agents acting on our behalf.<p>[1] <a href="https://en.wikipedia.org/wiki/Confused_deputy_problem" rel="nofollow">https://en.wikipedia.org/wiki/Confused_deputy_problem</a>
4/15/2026, 4:46:01 AM
by: onionisafruit
The people who will benefit from a cooldown weren’t reviewing updates anyway. Without the cooldown they would just be one more malware victim. If you don’t review code before you update, it just makes sense to wait until others have. Despite what the article says, the only people who benefit from a rush to update are the malware spreaders.
4/15/2026, 4:39:59 AM
by: ArcHound
The core point is of course solid. By not updating on day 0, maybe somebody else spend the effort to discover this and you didn't. But there are plenty of other benefits for not rolling with the newest and greatest versions enabled.<p>I'd argue for intentional dependency updates. It just so happens that it's identified in one sprint and planned for the next one, giving the team a delay.<p>First of all, sometimes you can reject the dependency update. Maybe there is no benefit in updating. Maybe there are no important security fixes brought by an update. Maybe it breaks the app in one way or another (and yes, even minor versions do that).<p>After you know why you want to update the dependency, you can start testing. In an ideal world, somebody would look at the diff before applying this to production. I know how this works in the real world, don't worry. But you have the option of catching this. If you automatically update to newest you don't have this option.<p>And again, all these rituals give you time - maybe someone will identify attacks faster. If you perform these rituals, maybe that someone will be you. Of course, it is better for the business to skip this effort because it saves time and money.
4/15/2026, 4:38:56 AM
by: 8cvor6j844qw_d6
Not everyone has the same update cycle. That's not free-riding. The framing around not being on the latest version as irresponsible doesn't hold up.
4/15/2026, 5:05:22 AM
by: skybrian
It's open source. Free riding is expected and normal. We all benefit from the work of others.<p>If you're not doing the work yourself, it makes sense to give the people who review and test their dependencies some time to do their work.
4/15/2026, 4:45:20 AM
by: _kulang
I just feel like this problem is something where unfettered capitalism does not work. What we are discussing here is a public utility, and should be managed as such
4/15/2026, 5:12:16 AM
by: 8note
itd be better for the title to be about upload queues and distribution, rather than free-loading.<p>idk if one of the touted benefits is really real - you need to be able to jump changes to the front of the queue and get them out asap sometimes.<p>hacked credentials will definitely be using that path. it gives you another risk signal sure, but the power sticks around
4/15/2026, 4:36:28 AM
by: twotwotwo
The topic of cooldowns just shifting the problem around got some discussion on an earlier post about them -- what I said there is at <a href="https://lobste.rs/s/rygog1/we_should_all_be_using_dependency#c_crmfmf" rel="nofollow">https://lobste.rs/s/rygog1/we_should_all_be_using_dependency...</a> and here's something similar:<p>- One idea is for projects not to update each dep just X hours after release, but on their own cycles, every N weeks or such. Someone still gets bit first, of course, but not everyone at once, and for those doing it, any upgrade-related testing or other work also ends up conveniently batched.<p>- Developers legitimately vary in how much they value getting the newest and greatest vs. minimizing risk. Similar logic to some people taking beta versions of software. A brand new or hobby project might take the latest version of something; a big project might upgrade occasionally and apply a strict cooldown. For users' sake, there is value in any projects that get bit not being the widely-used ones!<p>- Time (independent of usage) does catch <i>some</i> problems. A developer realizes they were phished and reports, for example, or the issue is caught by someone looking at a repo or commit stream.<p>As I lamented in the other post, it's unfortunate that merely using an upgraded package for a test run often exposes a bunch of a project's keys and so on. There are more angles to attack this from than solely when to upgrade packages.
4/15/2026, 4:38:35 AM
by: 2001zhaozhao
> Dependency cooldowns turn you into a free-rider<p>Avg tech company: "that's perfect, we love to be free riders."
4/15/2026, 4:51:23 AM
by: whoamii
Cooldown is merely a type of flighting. Specifically, picking a flight beyond canary.
4/15/2026, 4:44:05 AM
by: antonvs
Mature professionals and organizations have <i>always</i> waited to install updated dependencies in production, with exceptions for severe security issues such as zero day attacks.<p>"Free riding" is not the right term here. It's more a case of being the angels in the saying "fools rush in where angels fear to tread".<p>If the industry as a whole were mature (in the sense of responsibility, not age), upgrades would be tested in offline environments and rolled out once they pass that process.<p>Of course, not everyone has the resources for that, so there's always going to be some "free riding" in that sense.<p>That dilutes the term, though. Different organizations have different tolerance for risk, different requirements for running the latest stuff, different resources. There's always going to be asymmetry there. This isn't free riding.
4/15/2026, 4:28:45 AM
by: chanux
I would argue the blind copy pasting, cargo cult orgs are less likely to be helpful anyway.<p>But I get the point, it's a numbers game so any and all usage can help catching issues.
4/15/2026, 4:06:08 AM
by:
4/15/2026, 4:28:57 AM