Lando v3.21 Extended Notes and Development Update

Alec ReynoldsAlec Reynolds|Tues, Jan 16, 2024

Lando v3.21open in new window is shaking like the Instapot you forgot, ready to explode onto the scene. In many ways, this release is the chrysalis that Lando v4 will burst forth from, spreading its wings. Among other things, v3.21...

  1. Finishes the GREAT DECOUPLING of 2023
  2. Prepares Lando v3 services for their grand journey into Lando v4
  3. Introduces the lando update and lando setup commands

1. Completing the Great Decoupling

For over a year, we've been transforming Lando from a single mono-repo into a series of independent repos. Lando was formerly a gigantic monorepo containing a bunch of internal logic, the CLI interface, and all associated recipes/services. Earlier in 2023 we split these repos apart, making it easier to test plugins and contribute. However, Lando as a whole still relied on all these components being installed together. For example, if you had a way of installing the Drupal recipe without the LAMP recipe, it would lead to a big fat ERROR.

As of Lando v3.21, we have severed these implicit ties, making each Lando plugin fully independent. Huzzah!

Great, What Does Decoupling Do For Me?

What does liberating these plugins do? For one, it further clarifies plugin maintenance and development by making dependencies explicit. For example, a recipe plugin like @lando/lamp now declares @lando/php, @lando/mysql, and other plugins as requirements. These dependencies are versioned, so plugin maintainers can guarantee behavior.

However, the biggest advantage of isolating the plugins is preparing Lando v3 plugins to be compatible with Lando v4.

2. Backwards Compatibility: Prepping the Stage for Lando v4

Isolating the Lando v3 plugins will allow us to run these plugins alongside Lando v4 plugins. This will dramatically ease both the Lando project's transition into v4, as well as your team's transition.

Instead of having to create Lando v4 versions of ALL 30+ Lando plugins, we can concentrate on the most-used services first, knowing that existing Lando v3 plugins will interoperate.

Likewise, if your team doesn't want to update your Landofiles to use Lando v4 services or rebuild your apps for the new API, you likely won't NEED to. Rather, you can start building new apps on Lando v4 or slowly integrate Lando v4 plugins as they become available.

3. New Commands!

lando update

lando update will generate a list of all your installed Lando plugins and check whether there are available updates for them. You can then choose to update one or all of your plugins. When a plugin is updated, instead of having to wait weeks for a general Lando release that includes the updated plugin, now you can update it yourself instantly.

lando setup

lando setup is a one-time command that makes sure that Lando has all of its requirements. In the future, this will replace the need for the installers we've used on Mac and Windows, which made sure Docker Desktop was installed with the correct version of Docker Compose. For now, you may get a warning on first starting Lando that you need to run lando setup...which you should definitely do!

What's Next for Lando

So what's next for Lando heading towards a v4 release?

Installer Scripts

Now that we have lando setup, we'll be swapping out our installer packages for scripts that install Lando. This will allow you to copy a single line of bash commands into your terminal to install Lando and all its dependencies through an interactive prompt.

Lando v4 Service

Next, we'll be building upon the 1337 service introduced in Lando v3.20 to make an all-purpose lando service. This service will be the foundation for the v4 versions of all our other services. Ideally it'll allow any Docker image to be used to create a Lando service, making it easier for others to create their own custom Lando plugins.

...and Lots of Baby v4 Services

Once the lando service is stable we'll be able to start building out v4 versions of all Lando services, starting with our most popular services. Expect to see database services along with popular runtimes (primarily PHP and Node) first. These plugins will run on the v3 engine, but will be forward compatible with the Lando v4 engine.

We're excited to share more pieces of Lando v4 and keep moving the project towards a more powerful architecture that will allow easier contribution and greater flexibility as a universal development solution.