In 2020, users from designers to developers to testers and open source contributors have a wide variety of local development environments to chose 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-Local, Docksal, or Lando.
But what’s so special about DDEV-Local? What makes it different from other Docker-based solutions like Lando or Docksal? I recently spent a little time exploring several similar platforms to research a presentation for DrupalCon Global, and was impressed with what I saw, but definitely came away wanting to highlight a number of DDEV-Local features.
Top technical features of DDEV-Local
- Full cross-platform support on Windows, Linux, and macOS: We support and test DDEV-Local on macOS, Windows 10 Home, Pro, and Linux. Windows is a first-class citizen, both on the traditional Windows side and the new and exciting WSL2 feature.
- Interoperability with many versions of Docker: While a number of tools require you to use one exact version of Docker (and may take the liberty of installing it themselves), DDEV-Local currently works fine with versions that are a couple of years old, and is always attempting to keep up with the bleeding edge as well.
- Performance: We think DDEV-Local on macOS and Windows has about the best performance you can get on a Docker-based platform, both in terms of starting ddev (around 20 seconds) and in terms of webserving. With a few seconds of setup the NFS mounting feature speeds up webserving by probably 3x.
- 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.
- Trusted HTTPS: DDEV uses mkcert to allow you to conduct all your work using locally trusted HTTPS, just 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-Local 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-Local 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, not DLLs to maintain, etc.
- 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-Local because it’s really, really easy. With PHPStorm, there’s no setup at all. With VSCode, it’s about 2 minutes of setup, and it “just works.” There’s no need for inserting print statements into code any more.
- Explicit support for a growing number of CMSs and platforms: TYPO3, Drupal, WordPress, Magento, Magento2, Laravel, and Backdrop. Explicit support means settings management and an NGINX configuration customized for the specific platform.
Plays well with others
- No vendor lock-in: There is absolutely no vendor lock-in in DDEV-Local. The idea behind the DDEV platform is that both DDEV-Local and DDEV-Live can be plugged into a dev-to-deploy workflow as pieces of a puzzle that work for you. Mix and match! The full DDEV platform offers extra benefits from the complete integration, but DDEV-Local is a community project that works great with any hosting service you can use, and DDEV-Live works with any local development environment.
- 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-Local 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-Local 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/exports file, 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-Local 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-Local community has been phenomenal through the years, contributing ideas, code, and shared support. There are open collections of DDEV-Local 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 number of slacks and Stack Overflow, etc. We are beyond grateful to all who have contributed to and shared DDEV, thank you!
- Amazing open source support: DDEV-Local is an open source tool developed at DDEV, where it is a privilege to focus on development and support of a free tool to help users advance and succeed. It’s an amazing and unwavering commitment from our company, and it gives DDEV-Local a significant advantage.
- 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 Docker Desktop for Mac and Docker Desktop for Windows issue queues, along with several others, and have recently become involved in a group that tests insider builds for Docker.
- mkcert: The mkcert tool allows DDEV-Local to provided trusted https in your local development environment. We’ve benefited enormously from it and have contributed back tests and bugfixes.
- Xdebug: DDEV-Local 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 7.4) that we use come from deb.sury.org, and because the DDEV-Local community is an early consumer of those packages, we’re often in that issue queue too.
We’d love to hear what makes DDEV-Local 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!