July 8, 2021·4 min read·engineeringdockerdesktopdevelopmentcompose

Docker Desktop 3.5.2 repairs Dev Environment lifecycle feedback

Desktop 3.5.2 fixes blank screens and removal errors in the Dev Environments preview. The fixes concern the interface through which developers create and share containerized work in progress.

Sharing a development environment requires the interface to explain whether creation has completed and whether removal succeeded. Docker Desktop 3.5.2, released July 8, fixes blank screens in Dev Environment creation and removal scenarios. It also repairs removal error handling and disables the Start, Stop and Share buttons while creation is running. These changes concern the lifecycle of the environment a developer is being asked to trust.

The feature is still a preview. Docker introduced it with Desktop 3.5 in its June 23 announcement. The intended problem is collaboration on work in progress when a Git branch alone does not supply the dependencies and local setup needed to run the code. July's patch addresses failures in the interface used to perform that collaboration.

I like the attempt to make the development environment describable alongside the code. Docker's value has always included transferring an environment between machines. Extending that description to development tools is consistent with the same idea, provided the interface represents the resulting state clearly.

Git stores code while the environment runs it

The preview announcement describes keeping environment details in source control with the application. It uses Compose as the foundation, including a Compose file in a .docker folder for a configured environment. This lets the environment include related services that an application needs during development.

The editor works with code mounted into a container. Docker describes isolating the tools, files and running services so that several versions can exist side by side. The important unit is consequently broader than a checked-out branch. It includes the execution environment in which an editor and the application can work with that code.

Sharing goes through Docker Hub and includes work-in-progress code and dependencies. The announcement describes opening another environment to examine a colleague's work without leaving the current Git branch. That changes the mechanics of review because reading the change and running it can happen in a separate development environment.

This does not make Git unnecessary. Source control still records the application's history and the environment description. The preview supplies a way to instantiate and share a working context around that history. Understanding the distinction helps explain why Docker chose Compose, since a service configuration already describes relationships that a single source file cannot.

Creation is an operation with intermediate state

The July release notes specify that Start, Stop and Share are unavailable while an environment is being created. That communicates a constraint in the operation itself. Before creation completes, the environment is not in the same state as one ready to run or share. Allowing those actions without representing the distinction would make it harder to interpret what the interface promises.

A blank screen is especially unhelpful at that point because the user loses the explanation of progress. The notes establish that the screen failure occurs in some creation and removal scenarios. They do not give enough detail to attribute every case to a specific backend defect. The documented repair is in the observed interface behavior.

Removal error handling concerns another state transition. A failed removal and a successfully removed environment have different consequences for what the user should expect to remain. Reporting the failure preserves that distinction. It is a useful maintenance change even though the release does not introduce a new way to define an environment.

The same update adds support for VS Code Insiders and lets a user specify a branch when cloning a project. Branch selection makes the starting code explicit. Supporting another editor build affects how a developer enters the environment. Both sit around the same underlying goal of making code runnable in an appropriate context.

Compose beta changes affect interactive use

Desktop 3.5.2 bundles Compose V2 beta 6. The notes say compose run and compose exec now use separate standard output and standard error streams and support detach keys. These are observable terminal behaviors, relevant to a development workflow that repeatedly enters running service containers.

Keeping output streams separate lets a caller distinguish ordinary output from diagnostics. A combined display may look acceptable to a person while losing information that a surrounding command depends on. The release note describes the stream separation itself, without claiming that every use of terminal allocation has identical output semantics.

The update also fixes the --force and --volumes flags on compose rm and repairs IP address management configuration for services with fixed addresses. The README at the beta 6 tag distinguishes Compose V2's 2.x tags from the cloud Compose CLI's 1.x tags. A Desktop bundle can therefore include related tools whose version numbers describe different release streams.

I regard these details as part of making a development environment usable. A repeatable definition gets the services into place, but terminal streams and lifecycle feedback determine how clearly a developer can interact with them. July's changes improve those operations while Dev Environments remains a preview built on Compose and shared through Docker Hub.