What’s so different about DDEV?
October 30, 2022 7 min read
In 2022, users from designers to developers to testers and open source contributors have a wide variety of local development environments to choose from. Because most of the tools and platforms we use will run in many different operating systems and environments, we have the option of rolling our own, using a commercial project like MAMP or Local (for WordPress), or using one of the many Docker-based solutions like DDEV, Docksal, or Lando.
But what’s so special about DDEV? What makes it different from other Docker-based solutions like Lando or Docksal? I recently spent a little time exploring several similar platforms and was impressed with what I saw, but definitely came away wanting to highlight a number of DDEV features.
Top technical features of DDEV
- Full cross-platform support on Windows, WSL2, Linux, and macOS (Apple Silicon and Intel): We support and test and have a full automated test suite for DDEV on macOS, Windows 10 Home, Pro, WSL2, and Linux. Windows is a first-class citizen, both on the traditional Windows side and the WSL2 feature. DDEV’s binaries are signed and notarized on macOS and Windows, so you never have to sneak around scary operating system warnings.
- Interoperability with many Docker providers: While a number of tools require you to use one exact version of Docker (and may take the liberty of installing it themselves), DDEV currently works fine with versions that are a couple of years old, and keeps up with the bleeding edge as well. In addition, alternate Docker providers like Colima (for macOS) and Docker installed inside WSL2 provide options for those who do not choose to use Docker Desktop.
- Performance: We think DDEV on macOS and traditional Windows has about the best performance you can get on any local development, both in terms of starting DDEV (around 10-20 seconds) and in terms of webserving. With no setup required at all, the Mutagen feature speeds up webserving by at least 10x. And of course on Linux including WSL2 it’s truly superb.
- Settings file management: DDEV is happy to get you started quickly and easily and even manage your settings files. You can use your own repository or follow one of the quickstart guides to create something new and you’ll have a project going in no time. You can also turn off settings file management to fine tune your team’s approach when you need more customization.
- Database support: DDEV supports many versions of MariaDB, MySQL and PostgreSQL. You don’t have to do anything but say what type and version you want.
- Trusted HTTPS: DDEV uses mkcert to allow you to conduct all your work using locally trusted HTTPS, like it will work in the real world. You don’t have to click around scary browser warnings to view your project in development.
- Database snapshots: DDEV has the
ddev snapshotfeature, which allows you to quickly capture the state of your database and then quickly restore to a different point. You can name snapshots for different branches of your project. It’s far faster than traditional export and import.
- Golang deployment environment: DDEV is written in Go, a newer language. This is a bit of a disadvantage in terms of community involvement but it’s a huge advantage for cross-platform support. Golang does cross-platform builds with ease, and the resulting fat binary has no dependencies at all (except Docker of course). There are no libraries to install, no DLLs to maintain, etc. And the startup time for commands is excellent.
- Xdebug step-debugging out of the box: Lots of people have their first experience with a real step-debugging environment for the first time with DDEV because it’s really, really easy. With PhpStorm, there’s no setup at all. With VS Code, it’s about 2 minutes of setup. There’s no need for inserting print statements into code any more.
- Explicit support for many of CMSs and platforms: TYPO3, Drupal/Backdrop, WordPress, Craft CMS, Magento, Laravel, and Shopware. Explicit support means settings management and an NGINX configuration customized for the specific platform.
- Easy use of other PHP and NodeJS platforms, including Symfony, etc. While DDEV provides explicit support with optional settings management for many CMSs, many, many developers use other platforms and CMSs, including Symfony, Moodle, Mautic, etc. Explicit support of NodeJS versions for processing and as daemons.
- Library of supported, maintained, tested add-ons, including Redis, Solr, Memcached, Elasticsearch, Mongo, Varnish.
- Full Gitpod support: Your local development environment doesn’t even need to be local any more. DDEV has full support for use in Gitpod.
- Keeping up: DDEV is always keeping up with the dependencies you need. For example, at this writing, neither PHP 8.2.0 nor Drupal 10 have yet been released, but both have been supported in DDEV for months. This is typical. DDEV had Linux ARM64 support before the mac M1 even came out, and had Apple Silicon support as soon as Docker Desktop supported it.
- Open-Source options for everything: While most similar tools were once wedded to Docker Desktop, DDEV now provides alternate and fully-open-source Docker providers for every environment except traditional Windows. Those who do not want to pay for the Docker Desktop license do not have to do so.
Plays well with others
- No vendor lock-in: There is absolutely no vendor lock-in in DDEV. The idea behind the DDEV platform is that DDEV can be plugged into a dev-to-deploy workflow as pieces of a puzzle that work for you. Mix and match! DDEV is an open-source community project that works great with any hosting service you can use.
- Respect for other tools and production environments: DDEV’s settings files aren’t used when they’re not being used in a DDEV context, so your project won’t accidentally have DDEV settings if you deploy them accidentally to production, and if you have the same project set up for Lando and DDEV the DDEV settings won’t break Lando.
- Respect for your host computer: DDEV does not assume that you use your computer (or Docker) only for its sake. A number of local dev tools will happily reconfigure your host computer without your full involvement. More than one of them will edit your
/etc/exportsfile, and there’s no way to turn it off. A couple of them will actually overwrite your Docker installation with a different version at install time. DDEV tries to make sure that in the unlikely situation when anything needs to be changed on your computer, you’re the one doing it and you have options. For example, HTTPS support requires running
mkcert -installone time. NFS support requires a bit of additional setup. Because nearly everything is delegated to Docker, there is very little that needs to be done on the host computer in the first place.
Most importantly: the DDEV community
- Amazing community involvement and support: The DDEV community has been phenomenal through the years, contributing ideas, code, and shared support. There are open collections of DDEV services, tools, snippets, approaches as well as blogs and presentations and more from users around the world. You’ll find very deep community support in a Discord and Stack Overflow, etc. We are beyond grateful to all who have contributed to and shared DDEV, thank you!
- The DDEV Advisory Group provides oversight, direction and feedback for the project. Anyone is welcome to join.
- DDEV in the Open Source ecosystem: Upstream and downstream, we’re pleased to contribute and collaborate to a variety of open source projects, including:
- Docker project: We’re very involved with the Docker project, because DDEV users are always pushing the limits. We participate heavily in the Compose, Docker Desktop for Mac and Docker Desktop for Windows issue queues, along with several others.
- mkcert: The mkcert tool allows DDEV to provided trusted HTTPS in your local development environment. We’ve benefited enormously from it and have contributed back tests and bugfixes.
- Xdebug: DDEV is great with Xdebug, and of course we hear right away when there are problems and have been right in there in the issue queue.
- deb.sury.org PHP Packages: The Debian PHP packages (5.6 all the way through 8.2 at this point) that we use come from deb.sury.org, and because the DDEV community is an early consumer of those packages, we’re often in that issue queue too.
We’d love to hear what makes DDEV your favorite, and we’re always listening to hear what you want in the future… and of course we want to hear when things don’t work the way you want or expect. Hop in to the open source repository on GitHub to contribute!