Skip to content

Commit 1cc9cee

Browse files
committed
add a dedicated cooldown docs page
1 parent 6a052fe commit 1cc9cee

File tree

3 files changed

+52
-11
lines changed

3 files changed

+52
-11
lines changed

content/cooldowns.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
title: "gem cooldowns (beta)"
3+
---
4+
5+
### Get started
6+
7+
To use gem cooldowns, change your gem source URL:
8+
9+
```diff
10+
- source "https://gem.coop"
11+
+ source "https://beta.gem.coop/cooldown"
12+
```
13+
14+
### Cooldown period
15+
16+
The gem.coop public cooldown server hides gems until they have been published for 48 hours. If you need a different amount of time, [let's talk](mailto:hello@gem.coop).
17+
18+
### Why use cooldowns?
19+
20+
[We should all be using dependency cooldowns](https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns).
21+
22+
### Why did you make this?
23+
24+
Cooldowns are a useful tool to increase security. We wrote more about our reasons in the [cooldowns release announcement](/updates/4#whats-a-cooldown).
25+
26+
### Give us feedback
27+
28+
Join us in [discussions on GitHub](https://github.com/gem-coop/gem.coop/discussions/), or [join the Bundler Slack](https://join.slack.com/t/bundler/shared_invite/zt-3gzoadr40-Uk0Q4jfNWw6938TZpV9Okw) and chat with us in the [#gem-coop](https://slack.com/archives/C09JU5AP8J2) channel.
29+
30+
### I found a bug!
31+
32+
Please report bugs to us by [opening an issue](https://github.com/gem-coop/gem.coop/issues) on GitHub.

content/updates/4.md

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
+++
22
date = '2026-01-28T11:20:00+08:00'
33
title = 'gem.coop update #4: cooldowns beta'
4-
draft = false
54
+++
65

7-
Hi again, everyone. We've got a big update for you, and we could use your help testing things out. If you just want to test the cooldowns beta, jump straight to the end of this post. Before that, we have some other updates and background on cooldowns that we think you'll want to hear.
6+
Hi again, everyone. We've got a big update for you, and we could use your help testing things out. If you just want to test the cooldowns beta, you can jump straight to [the cooldown docs](/cooldowns/). The rest of this post has updates from the team, as well as more background on why we built cooldowns in the first place.
87

98
## Recent work
109

11-
Since our last update, we've been quite busy. Ellen has been working on [`jwl`](https://github.com/duckinator/jwl), demonstrating several ways that gems could be simpler. Olle did maintenance work on more repos than you can shake a stick at, including [a big testing PR](https://github.com/brunofacca/active-record-query-trace/pull/79) to [ActiveRecordQueryTrace](https://github.com/brunofacca/active-record-query-trace/). Martin built the [Skillet](https://github.com/martinemde/skillet) CLI tool to run Claude Skills as shell scripts. David fixed countless bugs in [`rv`](https://rv.dev), and worked with André on the new [`rv clean-install` command](https://spinel.coop/blog/rv-clean-install/), which works like `bundle install --frozen`. Samuel built and shipped the [arctic](github.com/persona-id/arctic) gem, providing frozen strings from ENV to save on allocations. Josef has been [investigating the new RubyBox feature in Ruby 4.0](https://rubyelders.com/writings/2026-01-ruby-box-reload.html). Our newest member Kasper released 1.0 versions for his Rails extensions[Oaken](https://github.com/kaspth/oaken), [Associated Object](https://github.com/kaspth/active_record-associated_object "active_record-associated_object"), [Stashed Redirects](https://github.com/kaspth/action_controller-stashed_redirects "action_controller-stashed_redirects"), and [Performs](https://github.com/kaspth/active_job-performs "active_job-performs").
10+
Since our last update, we've been quite busy.
11+
12+
- Ellen has been working on [`jwl`](https://github.com/duckinator/jwl), demonstrating several ways that gems could be simpler.
13+
- Olle did maintenance work on more repos than you can shake a stick at, including [a big testing PR](https://github.com/brunofacca/active-record-query-trace/pull/79) to [ActiveRecordQueryTrace](https://github.com/brunofacca/active-record-query-trace/).
14+
- Martin built the [Skillet](https://github.com/martinemde/skillet) CLI tool to run Claude Skills as shell scripts.
15+
- André (with lots of help from David) worked on the new [`rv clean-install` command](https://spinel.coop/blog/rv-clean-install/), which works like `bundle install --frozen`.
16+
- David also fixed countless bugs in [`rv`](https://rv.dev), ensuring that installing ruby, installing gems, and compiling native extensions all work as expected.
17+
- Samuel built and shipped the [arctic](github.com/persona-id/arctic) gem, providing frozen strings from ENV to save on allocations.
18+
- Josef has been [investigating the new RubyBox feature in Ruby 4.0](https://rubyelders.com/writings/2026-01-ruby-box-reload.html).
19+
- Kasper, our newest member, released 1.0 versions for his Rails extensions [Oaken](https://github.com/kaspth/oaken), [Associated Object](https://github.com/kaspth/active_record-associated_object "active_record-associated_object"), [Stashed Redirects](https://github.com/kaspth/action_controller-stashed_redirects "action_controller-stashed_redirects"), and [Performs](https://github.com/kaspth/active_job-performs "active_job-performs").
1220

1321
In addition to all of that work, we've also been experimenting with different ways of serving gems. Some of our experiments aren't fully baked yet, and we'll be back with more announcements soon. Today, we'd like to talk about our first fully baked experiment: cooldowns.
1422

15-
## What are cooldowns
23+
## What's a cooldown
1624

1725
The concept of cooldowns is probably best explained in William Woodruff's blog post [We should all be using dependency cooldowns](https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns). The short version is that waiting a couple of days before upgrading your dependencies is a very effective security measure. Most compromised or malware-loaded packages are discovered and removed within a day or two. The very most sophisticated attacks (like [the attack on xz](https://research.swtch.com/xz-timeline)) managed to avoid discovery for about 5 weeks, but attacks of that sophistication are extremely rare. As William points out in his post, just waiting 48 hours would have avoided almost all of the significant supply chain attacks from the last 18 months.
1826

@@ -24,15 +32,15 @@ We're launching cooldowns as a beta feature, meaning it's only available from `b
2432

2533
## Using cooldowns
2634

27-
To use the cooldowns feature, change the `source` in your Gemfile like this:
35+
The cooldown source has a 48 hour delay, and updates at least once every hour.
36+
37+
To use the cooldowns feature, ensuring that you aren't able to see or install any gems that are less than 48 hours old, change the `source` in your Gemfile like this:
2838

2939
```diff
3040
-source "https://gem.coop"
3141
+source "https://beta.gem.coop/cooldown"
3242
```
3343

34-
The cooldown source has a 48 hour delay, and updates at least once every hour.
35-
3644
If you need to install any gems that have just been released with critical security fixes, you can do that too:
3745

3846
```ruby

layouts/baseof.html

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@
2020
<nav>
2121
<img width="100" src="/logo.png" alt="gem.coop logo" style="margin-right: 1em;">
2222
<ul>
23-
<li><a href="/">Home</a></li><!--
24-
--><li><a href="/updates/">Updates</a></li><!--
25-
--><li><a href="/fellowship/">Fellowship</a></li><!--
26-
--><li><a href="https://github.com/gem-coop/">GitHub</a></li>
23+
<li><a href="/">Home</a></li>
24+
<li><a href="/updates/">Updates</a></li>
25+
<li><a href="/cooldowns/">Cooldowns</a></li>
26+
<li><a href="/fellowship/">Fellowship</a></li>
27+
<li><a href="https://github.com/gem-coop/">GitHub</a></li>
2728
</ul>
2829
</nav>
2930

0 commit comments

Comments
 (0)