Skip to content

docs(blog): add DDEV v1.25.3 release post and update related articles#658

Merged
stasadev merged 15 commits into
mainfrom
20260703_stasadev_v1.25.3
Jul 6, 2026
Merged

docs(blog): add DDEV v1.25.3 release post and update related articles#658
stasadev merged 15 commits into
mainfrom
20260703_stasadev_v1.25.3

Conversation

@stasadev

@stasadev stasadev commented Jul 3, 2026

Copy link
Copy Markdown
Member

The Issue

Website coverage for the DDEV v1.25.3 release. Companion to:

How This PR Solves The Issue

  • Add release-v1-25-3.md for v1.25.3: faster ddev start/ddev stop, Docker Compose SDK, stable Podman/Docker Rootless, Node.js fixes, DDEV_XDG_CONFIG_HOME.
  • Update podman-and-docker-rootless.md: Podman and Docker Rootless are stable; setup steps moved to the docs.
  • Update docker-buildx-requirement-v1-25-1.md for the Compose SDK switch and ddev config global --docker-buildx-version.
  • Bump the Windows quickstart WSL2 distro to Ubuntu 26.04.
  • Add release banner SVGs and ddev start/ddev stop comparison GIFs.
  • Point AGENTS.md at the ddev prettier/ddev textlint custom commands.

Manual Testing Instructions

## The Issue

Website coverage for the DDEV v1.25.3 release. Companion to ddev/ddev#8553, ddev/ddev#8544, ddev/ddev#8434.

## How This PR Solves The Issue

- Add `release-v1-25-3.md` for v1.25.3: faster `ddev start`/`ddev stop`, Docker Compose SDK, stable Podman/Docker Rootless, Node.js fixes, `DDEV_XDG_CONFIG_HOME`.
- Update `podman-and-docker-rootless.md`: Podman and Docker Rootless are stable; setup steps moved to the docs.
- Update `docker-buildx-requirement-v1-25-1.md` for the Compose SDK switch and `ddev config global --docker-buildx-version`.
- Bump the Windows quickstart WSL2 distro to Ubuntu 26.04.
- Add release banner SVGs and `ddev start`/`ddev stop` comparison GIFs.
- Point AGENTS.md at the `ddev prettier`/`ddev textlint` custom commands.

## Manual Testing Instructions

`ddev npm run build`, then check the three articles render with working images and links. `ddev prettier` and `ddev textlint` pass.

## Automated Testing Overview

None. Content and docs only.

## Release/Deployment Notes

Deploys via Cloudflare Pages on merge. Links to the `v1.25.3` tag and `scripts/compare-start-perf.sh` resolve once that tag is pushed to ddev/ddev.

🤖 Developed with assistance from [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@stasadev

stasadev commented Jul 3, 2026

Copy link
Copy Markdown
Member Author

DDEV start/stop GIF recording process

Tools

  • vhs — record terminal to GIF
  • ffprobe — measure GIF duration
  • gifsicle — pad shorter GIF's last frame to match the other
  • ffmpeg — stack the matched pair into one GIF (top/bottom)

1. Tape files

Four tapes, one per command per version:

Output ddev-start-v1-25-2.gif

Set FontSize 26
Set Width 1200
Set Height 600

Type "ddev start"
Sleep 500ms
Enter
Wait@60s
Sleep 3s

Same for ddev-start-v1-25-3.tape, ddev-stop-v1-25-2.tape, ddev-stop-v1-25-3.tape (swap Type command and Output filename).

Wait@60s replaces a fixed Sleep — it blocks until the shell prompt reappears (command actually done), instead of guessing a duration.

2. Measure durations

ffprobe -v error -select_streams v:0 -show_entries format=duration \
  -of default=noprint_wrappers=1:nokey=1 <file>.gif

Results:

pair v1.25.2 v1.25.3
start 24.44s 22.04s
stop 16.24s 6.40s

3. Pad shorter GIF to match

# frame count of the file being padded
gifsicle --info ddev-start-v1-25-3.gif | grep -c '^\s*+ image'   # 551 -> last index 550
gifsicle --info ddev-stop-v1-25-3.gif  | grep -c '^\s*+ image'   # 160 -> last index 159

# new last-frame delay (cs) = original 4cs + pad needed
# start: 4 + 240 (2.40s) = 244
# stop:  4 + 984 (9.84s) = 988

gifsicle ddev-start-v1-25-3.gif '#0-549' -d244 '#550' -o ddev-start-v1-25-3.gif
gifsicle ddev-stop-v1-25-3.gif  '#0-158' -d988 '#159' -o ddev-stop-v1-25-3.gif

-d must come before the frame selector it applies to, and only frames explicitly selected are written out.

Result: both pairs match exactly (24.44s / 16.24s).

4. Merge each pair into one GIF (top/bottom)

Two separate <img> tags can drift out of sync depending on browser load timing. Stack each matched pair into a single GIF instead, so both halves share one timeline:

ffmpeg -y -i ddev-start-v1-25-2.gif -i ddev-start-v1-25-3.gif -filter_complex \
"[0:v][1:v]vstack=inputs=2[stacked];[stacked]split[s0][s1];[s0]palettegen=stats_mode=diff[p];[s1][p]paletteuse=dither=bayer" \
ddev-start-v1-25-2-vs-v1-25-3.gif

ffmpeg -y -i ddev-stop-v1-25-2.gif -i ddev-stop-v1-25-3.gif -filter_complex \
"[0:v][1:v]vstack=inputs=2[stacked];[stacked]split[s0][s1];[s0]palettegen=stats_mode=diff[p];[s1][p]paletteuse=dither=bayer" \
ddev-stop-v1-25-2-vs-v1-25-3.gif

Requires matching width and framerate between inputs (both were 1200px wide, 25fps). Output: ddev-start-v1-25-2-vs-v1-25-3.gif (1.72MB), ddev-stop-v1-25-2-vs-v1-25-3.gif (182KB) — replaces the four separate GIFs in the blog post.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 3, 2026

Copy link
Copy Markdown

Deploying ddev-com-front-end with  Cloudflare Pages  Cloudflare Pages

Latest commit: 2c81c86
Status: ✅  Deploy successful!
Preview URL: https://f4235213.ddev-com-front-end.pages.dev
Branch Preview URL: https://20260703-stasadev-v1-25-3.ddev-com-front-end.pages.dev

View logs

@stasadev stasadev requested review from rfay and rpkoller July 3, 2026 15:05
Comment on lines +45 to +49
Summary (ddev start from stopped state)
-------------------------------------------------------------------
A (v1.25.2): median=11.03s trimmed-mean=10.49s
B (v1.25.3): median=7.91s trimmed-mean=7.84s
B is FASTER than A by 3.12s (-28.3%) on median

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rfay, this is a copy of the result you sent me in Discord. I didn't run any comparison myself.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added benchmark on Linux.

@rfay rfay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really fantastic, thanks. I love the animations, and people will also.

  • Consider mentioning that it's 125 PRs (this might fit in the fantastic opening section, which I loved).
  • It might be too much to talk about, but the difference of ddev restart of a running project is amazing. An animation of that might be interesting, but maybe there are too many anyway. Maybe do ddev restart instead of ddev stop ?

The tone here is absolutely perfect, and you've focused on the key things. Thank you!

@stasadev stasadev force-pushed the 20260703_stasadev_v1.25.3 branch from 53f1320 to 8534675 Compare July 6, 2026 09:28
@stasadev stasadev force-pushed the 20260703_stasadev_v1.25.3 branch from 8534675 to 63d6c3e Compare July 6, 2026 09:30

@rfay rfay left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor suggestions.

Comment thread src/content/blog/docker-buildx-requirement-v1-25-1.md Outdated
Comment thread src/content/blog/podman-and-docker-rootless.md Outdated
**Bottom line**: Stick with traditional Docker unless organizational policy or security requirements force you to use an alternative. The alternatives work, but have significant trade-offs. Follow the setup for [Docker Rootless](https://docs.ddev.com/en/stable/users/install/docker-installation/#linux-docker-rootless) or [Podman Rootless](https://docs.ddev.com/en/stable/users/install/docker-installation/#linux-podman-rootless) in the Docker installation docs.

### Podman Rootless Performance Optimization
#### Configuring Podman Rootful on Linux (not recommended)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider just removing this section in the future. I guess maybe it's already essentially removed.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to keep it for historical reasons. I struggled with Podman rootful, and I don't want to throw away this setup (which is heavily simplified) after putting so much effort into it.

Comment thread src/content/blog/release-v1-25-3.md Outdated
Comment thread src/content/blog/release-v1-25-3.md Outdated
@stasadev stasadev requested a review from rfay July 6, 2026 19:39
@stasadev stasadev force-pushed the 20260703_stasadev_v1.25.3 branch from f55a79b to 054902b Compare July 6, 2026 20:18
@stasadev stasadev merged commit 4b46aa9 into main Jul 6, 2026
3 checks passed
@stasadev stasadev deleted the 20260703_stasadev_v1.25.3 branch July 6, 2026 20:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants