Look at the FreeBSD ports tree over the past two years of commits. Look for time periods where there is a least a 15 minute gap without commits. Count them, and let me know the times of day they occur. Use UTC.Later, I asked for a 10 year period. Both results appear below. Why? I was looking for periods best suited to FreshPorts maintenance. The reply was:
How often does the FreeBSD ports tree go quiet? I looked at every commit to the main branch of the ports tree over the past two years and counted the periods of at least 15 minutes with no commits at all. All times are UTC.
The short answer
Between 2024-09-26 12:07 UTC and 2026-09-26 12:07 UTC there were 18,294 gaps of 15 minutes or more between commits. They occur at every hour of the day, but they are longest and most frequent between roughly 22:00 and 06:00 UTC. The quietest hours are 02:00–04:00 UTC.
- 62,352 distinct commit timestamps in the two-year window
- About 90% of all clock time fell inside one of these 15-minute-plus gaps
- Median gap length: about 37 minutes
- About 4,800 gaps lasted an hour or more; about 400 lasted three hours or more
Method
- Source: the
mainbranch of the ports repository (quarterly branches are not included). - Timestamps: committer date, converted to UTC and sorted. Git does not record push time, so committer date is the closest available measure of when a change landed.
- A gap is the time between two consecutive commits, counted when it is 15 minutes or longer.
- Cross-check: using author date instead gives 19,664 gaps, with the same overall pattern.
Time of day
For each UTC hour, the table shows the share of that hour spent inside a gap of 15 minutes or more, how many gaps started in that hour, and how many gaps of one hour or more started in that hour.
| Hour (UTC) | Time spent in a gap | Gaps starting | 1h+ gaps starting |
|---|---|---|---|
| 00:00–00:59 | 93.2% | 653 | 264 |
| 01:00–01:59 | 95.2% | 588 | 247 |
| 02:00–02:59 | 95.8% | 525 | 233 |
| 03:00–03:59 | 95.8% | 527 | 247 |
| 04:00–04:59 | 96.0% | 526 | 215 |
| 05:00–05:59 | 94.6% | 605 | 218 |
| 06:00–06:59 | 92.5% | 697 | 181 |
| 07:00–07:59 | 88.3% | 800 | 158 |
| 08:00–08:59 | 85.6% | 897 | 173 |
| 09:00–09:59 | 86.8% | 869 | 199 |
| 10:00–10:59 | 89.1% | 808 | 205 |
| 11:00–11:59 | 89.0% | 818 | 172 |
| 12:00–12:59 | 87.7% | 826 | 174 |
| 13:00–13:59 | 86.1% | 861 | 183 |
| 14:00–14:59 | 85.9% | 877 | 174 |
| 15:00–15:59 | 85.9% | 885 | 170 |
| 16:00–16:59 | 86.3% | 882 | 155 |
| 17:00–17:59 | 85.6% | 856 | 182 |
| 18:00–18:59 | 86.2% | 858 | 174 |
| 19:00–19:59 | 85.1% | 872 | 169 |
| 20:00–20:59 | 84.9% | 873 | 187 |
| 21:00–21:59 | 88.7% | 828 | 240 |
| 22:00–22:59 | 92.4% | 747 | 277 |
| 23:00–23:59 | 93.8% | 616 | 237 |
The “gaps starting” column can look backwards at first: more gaps start during the busy daytime hours (08:00–20:00 UTC). That is because overnight quiet stretches run long and count as one big gap, while daytime activity keeps breaking the quiet into many short ones. The better signals of where the quiet is are the percentage and the 1h+ columns. Long gaps usually start between 21:00 and 01:00 UTC.
Even at the busiest hours, commits arrive in bursts, so there is usually a 15-minute lull somewhere in the hour.
How long the gaps are
| Gap length | Number of gaps |
|---|---|
| 15–59 minutes | 13,460 |
| 1–2 hours | 3,556 |
| 2–3 hours | 885 |
| 3–4 hours | 243 |
| 4–5 hours | 83 |
| 5–6 hours | 46 |
| 6–7 hours | 13 |
| 7–8 hours | 4 |
| 9–10 hours | 3 |
| 12 hours or more | 1 |
The longest gaps
The longest gap by far was about 67 hours, from 2026-07-21 23:28 to 2026-07-24 18:38 UTC. The commit history does not say why. Every other gap in the top ten is an overnight UTC stretch of 7–9 hours, several of them around the end-of-year holidays.
EDIT: See https://people.freebsd.org/~kevans/core/ports-freeze-20260722.txt which explains the ports tree freeze.
| Last commit before (UTC) | Next commit (UTC) | Hours |
|---|---|---|
| 2026-07-21 23:28 | 2026-07-24 18:38 | 67.2 |
| 2025-12-30 20:39 | 2025-12-31 06:01 | 9.4 |
| 2024-12-29 22:50 | 2024-12-30 07:55 | 9.1 |
| 2026-01-20 22:23 | 2026-01-21 07:25 | 9.0 |
| 2024-10-06 21:11 | 2024-10-07 05:04 | 7.9 |
| 2024-11-16 20:20 | 2024-11-17 03:27 | 7.1 |
| 2025-08-18 21:02 | 2025-08-19 04:07 | 7.1 |
| 2024-10-20 00:21 | 2024-10-20 07:22 | 7.0 |
| 2024-12-07 21:42 | 2024-12-08 04:37 | 6.9 |
| 2025-07-20 21:51 | 2025-07-21 04:45 | 6.9 |
The 10 year period
How often does the FreeBSD ports tree go quiet? I looked at every commit to the ports tree over the past ten years and counted the periods of at least 15 minutes with no commits at all. All times are UTC.
The short answer
Between 2016-09-26 12:07 UTC and 2026-09-26 12:07 UTC there were 90,929 gaps of 15 minutes or more between commits, about 25 a day. They occur at every hour of the day, but they are longest and most frequent between roughly 22:00 and 06:00 UTC. The quietest hours are 02:00–04:00 UTC.
- 299,327 distinct commit timestamps in the ten-year window
- About 88% of all clock time fell inside one of these 15-minute-plus gaps
- Median gap length: about 36 minutes
- 23,458 gaps lasted an hour or more; 2,167 lasted three hours or more
- The pattern is remarkably steady: every full year has between about 8,500 and 9,600 gaps
Method
- Source: the
mainbranch of the ports repository (quarterly branches are not included). The ports tree moved from Subversion to Git in April 2021; the earlier history comes from the Subversion-to-Git conversion. - Timestamps: committer date, converted to UTC and sorted. For the Subversion era this is the time the commit reached the server. Git does not record push time, so for the Git era committer date is the closest available measure of when a change landed.
- A gap is the time between two consecutive commits, counted when it is 15 minutes or longer.
- Cross-check: using author date instead gives 94,659 gaps, with the same overall pattern.
Time of day
For each UTC hour, the table shows the share of that hour spent inside a gap of 15 minutes or more, how many gaps started in that hour, and how many gaps of one hour or more started in that hour.
| Hour (UTC) | Time spent in a gap | Gaps starting | 1h+ gaps starting |
|---|---|---|---|
| 00:00–00:59 | 92.1% | 3,424 | 1,399 |
| 01:00–01:59 | 94.7% | 2,688 | 1,192 |
| 02:00–02:59 | 95.1% | 2,516 | 1,176 |
| 03:00–03:59 | 95.6% | 2,450 | 1,218 |
| 04:00–04:59 | 95.7% | 2,455 | 1,078 |
| 05:00–05:59 | 94.3% | 2,808 | 1,013 |
| 06:00–06:59 | 91.5% | 3,328 | 937 |
| 07:00–07:59 | 88.8% | 3,794 | 873 |
| 08:00–08:59 | 85.6% | 4,000 | 614 |
| 09:00–09:59 | 84.6% | 4,919 | 1,099 |
| 10:00–10:59 | 88.2% | 4,125 | 963 |
| 11:00–11:59 | 87.6% | 4,059 | 914 |
| 12:00–12:59 | 86.2% | 4,107 | 837 |
| 13:00–13:59 | 84.9% | 4,292 | 813 |
| 14:00–14:59 | 83.9% | 4,361 | 812 |
| 15:00–15:59 | 84.2% | 4,462 | 796 |
| 16:00–16:59 | 83.0% | 4,399 | 763 |
| 17:00–17:59 | 82.8% | 4,438 | 785 |
| 18:00–18:59 | 83.4% | 4,424 | 767 |
| 19:00–19:59 | 83.1% | 4,389 | 831 |
| 20:00–20:59 | 83.5% | 4,417 | 877 |
| 21:00–21:59 | 87.0% | 4,287 | 1,207 |
| 22:00–22:59 | 90.6% | 3,656 | 1,354 |
| 23:00–23:59 | 93.0% | 3,131 | 1,140 |
The “gaps starting” column can look backwards at first: more gaps start during the busy daytime hours (08:00–20:00 UTC). That is because overnight quiet stretches run long and count as one big gap, while daytime activity keeps breaking the quiet into many short ones. The better signals of where the quiet is are the percentage and the 1h+ columns. Long gaps usually start between 21:00 and 03:00 UTC.
Even at the busiest hours, commits arrive in bursts, so there is usually a 15-minute lull somewhere in the hour.
Year by year
Gaps are counted in the year they started. 2016 and 2026 are partial years.
| Year | Commits | Gaps (15 min+) | Gaps (1h+) | Time spent in a gap |
|---|---|---|---|---|
| 2016 (from Sep 26) | 7,088 | 2,413 | 580 | 86% |
| 2017 | 26,161 | 8,544 | 2,328 | 89% |
| 2018 | 29,358 | 9,455 | 2,134 | 86% |
| 2019 | 31,205 | 9,115 | 2,296 | 86% |
| 2020 | 36,327 | 9,614 | 2,171 | 85% |
| 2021 | 31,079 | 9,270 | 2,217 | 88% |
| 2022 | 24,681 | 9,005 | 2,479 | 90% |
| 2023 | 26,716 | 8,675 | 2,557 | 91% |
| 2024 | 31,957 | 8,723 | 2,557 | 91% |
| 2025 | 29,336 | 9,035 | 2,508 | 90% |
| 2026 (to Sep 26) | 25,419 | 7,080 | 1,631 | 88% |
Commit volume has moved around from year to year, but the number of quiet periods has barely changed.
How long the gaps are
| Gap length | Number of gaps |
|---|---|
| 15–59 minutes | 67,471 |
| 1–2 hours | 17,114 |
| 2–3 hours | 4,177 |
| 3–4 hours | 1,308 |
| 4–5 hours | 508 |
| 5–6 hours | 218 |
| 6–7 hours | 75 |
| 7–8 hours | 32 |
| 8–9 hours | 17 |
| 9–10 hours | 6 |
| 10–11 hours | 1 |
| 24 hours or more | 2 |
The longest gaps
Two gaps stand out. The longest, about 147 hours (just over six days), from 2021-03-31 03:12 to 2021-04-06 06:33 UTC, was the freeze for the move from Subversion to Git; the first commit afterwards is “Mark the repository has been converted to Git”. The second, about 67 hours, from 2026-07-21 23:28 to 2026-07-24 18:38 UTC, has no explanation in the commit history. Every other gap in the top ten is an overnight UTC stretch of 8–11 hours.
| Last commit before (UTC) | Next commit (UTC) | Hours |
|---|---|---|
| 2021-03-31 03:12 | 2021-04-06 06:33 | 147.4 |
| 2026-07-21 23:28 | 2026-07-24 18:38 | 67.2 |
| 2017-09-01 22:03 | 2017-09-02 08:37 | 10.6 |
| 2023-09-16 19:03 | 2023-09-17 04:34 | 9.5 |
| 2023-04-18 22:03 | 2023-04-19 07:32 | 9.5 |
| 2025-12-30 20:39 | 2025-12-31 06:01 | 9.4 |
| 2024-12-29 22:50 | 2024-12-30 07:55 | 9.1 |
| 2026-01-20 22:23 | 2026-01-21 07:25 | 9.0 |
| 2023-04-20 22:02 | 2023-04-21 07:03 | 9.0 |
| 2018-04-08 21:35 | 2018-04-09 06:26 | 8.8 |











