Lando 2023 - The Year That Will Be

Mike PirogMike Pirog|Mon, Jan 23, 2023

In the early days of the pandemic our team got together to discuss Lando. Specifically, we wanted to figure out:

  • What are Lando's biggest strengths?
  • What are Lando's biggest weaknesses?
  • Knowing what we know now, how would we redesign Lando if we could start from scratch?

In a rare and perhaps surprising moment of collective Zen and Oneness for opinionated engineers, there wasn't a lot of debate, at least on a high level, about the answers to these questions.

  1. Lando's biggest strength is its amazing community.
  1. Lando's biggest weakness has been making it hard for that community to contribute.
  1. Lando should be an ecosystem, not a monorepo.

Armed with this guiding trio of answers we started work on moving Lando into its bright new future. However, as is often the case, those ideals immediately clashed with the Desert of the Realopen in new window as we realized getting to Lando-as-an-ecosystem would be a huge challenge.

Also, dishearteningly, we knew it would be a while before we could start telling people our plans because honestly we weren't even sure we could pull the whole thing off.

Fast-forward to now and WE CAN DO ITopen in new window, so let's dive into where we are now and where we want to end up by the end of 2023.

Where are we now?

Alec's 2022 Year in Review gives a more detailed answer to the where are we now? question so I will just bullet point the key findings here:

LANDO IS NOW FULLY DECOUPLED

If you check out the Lando organizationopen in new window on GitHub or the main lando/landoopen in new window repo you'll see that Lando itself is now made up of 70 separate and self-contained smaller repos for it's installer, CLI, core libraries, plugins, docs and other utilities.

It's hard to describe how difficult it was to take Lando apart and then, while people were simultaneously using it, put it back together without them noticing. But, if you've been using Lando 3.8.0 or above then 🎉 you've been running on a progressively decoupled version of Lando!

There is an old Klingon Proverbopen in new window:

If you want to go fast, go alone. If you want to go far, go together.

While the proverb sounds better in the original Klingonopen in new window, it's apropos of our move from Lando 3 to Lando 4. With the completion of this GREAT DECOUPLING we've laid a foundation so that we can go far together, far into the future.

LANDO 4 DEVELOPMENT HAS BEGUN

Since Lando now has a more modular architecture it's been possible to start work on what we've collectively called "Lando 4".

While we still don't have everything 100% figured out for Lando 4 we do know that it is actually three separate "Version 4" implementations:

The V4 Runtime: This is the part we've already started work on over at lando/core-nextopen in new window. It contains the core libraries that power Lando and its plugins. We've already updated the current Lando V3 CLI to be able to use the Lando V4 runtime so that users can get new V4 features without having to wait for either the V4 CLI or V4 Landofile format.

The V4 CLI: Once the V4 Runtime hits beta we will also introduce a new V4 CLI. This will be based on the OCLIFopen in new window framework and should allow us to solve some lingering CLI usability problems. In addition we will be able to sunset a bunch of current Lando CLI code in favor of a well-used standard.

The V4 Landofile: The final piece of "Lando 4" will be the introduction of a new Landofile format. This will allow us to keep the current format stable as we introduce a new syntax that can take advantage of new and powerful V4 runtime features.

Where are we going? THE HIGH LEVEL

So now that you have a decent sense of where we are and how we got here you might be wondering: what is the roadmap for 2023? ON A HIGH LEVEL the roadmap can be broken into three buckets:

1. Contribution

Once we release the first "usable" version of the V4 runtime we will be looking to bring more contributors into the Lando fold. Specifically, we'd love for people to:

  • Help us upgrade the current set of plugins to be V4 compatible.
  • Help write new plugins for the V4 ecosystem.
  • Take ownership over existing "official" plugins like the Drupal recipe or PHP service.

Ideally we'd love to end 2023 with our current Lando team maintaining "core" Lando, a group of 10-20 people maintaining "official" Lando plugins, and as many people as possible contributing new plugins to the Lando ecosystem.

If any of those things sound interesting to you then please join the Lando Slackopen in new window and make sure you're in the #contributorsopen in new window channel to keep track of the conversation.

2. Lando 4

At this point you're probably curious about what kinds of features and improvements are coming with Lando 4. Here are the BIG TICKET ITEMS.

1. Components

Lando 4 moves to a swappable component-based architecture. This means that almost every part of Lando 4, even core pieces, will now be well-defined, customizable, and configurable.

Want to write support for podman instead of Docker? Kubernetes instead of Docker Compose? Customize the CLI message output? Store Lando caches in redis?

Anything is possible!open in new window

2. Ecosystem

Lando 4 will utilize a distributed plugin based ecosystem powered by hyperdrive, which will be sort-of-like the npm of Lando. Each app can now define its own plugins, dependencies and "core components".

For example, one app may use Docker Desktop and an older version of the php plugin while another uses Docker Colima and the most recent version of the php plugin. An app you use with an enterprise client may have "corporate" language enabled while a personal project may use our typical "irreverent pop-culture reference" dictionary.

3. Build Engine

Under the hood the current V3 version of Lando builds Docker Compose files to do most of its magic. This got us pretty far, but had it own set of limitations.

V4 will take this a step further and generate Dockerfiles for each of your services as well. This may not sound like a big deal, but it will allow us to:

  • Cache build steps and make lando rebuild EXTREMELY fast
  • Support more-or-less any "base" image: no more waiting for "Lando to add support" for VERSION X of THING Y
  • Support your custom image/allow you to extend the images you use in production so they work in development as well
  • Sync local user ownership better: containers and their services will always run "as you" instead of "pretending to"
  • Build more powerful Landofile configurations: think "list of php extensions I want to install" vs custom build steps

4. Official Docker images/Apple Silicon support

Right now Lando uses a bunch of Bitnami images which are great but do not support arm64 eg Apple Silicon.

Lando 4 will rebase all its services on the official Docker images meaning Lando 4 will provide native support for arm64 based computers like those running on Apple Silicon.

5. Run it anywhere

Development has changed a lot since our first version of Lando and its going to change even more in the next five years.

Lando 4 will be designed to easily run in CI environments like GitHub Actions and for remote development on your VDI or server you're forced to use at work.

6. Speed and usability

Finally, the above improvements will make Lando significantly faster and more powerful than it is today.

Lando 4 Timeline

The goal is to make Lando at least an order or magnitude better.

Our current, we hope mostly realistic, release schedule for Lando 4 is roughly:

SPRING - Release 4.0.0-alpha.1 of the V4 runtime. The goal here will be that you can run your existing apps using the new runtime and they more-or-less behave the same way as they do now.

SUMMER - Release 4.0.0-beta.1 of the V4 runtime. The goal here will be that you can run your existing apps using the new runtime and they take advantage of all the new V4 features.

FALL - Release 4.0.0-beta.1 of the V4 CLI. The goal here is to introduce a new CLI to address usability issues with our current one.

WINTER - Release 4.0.0-beta.1 of the V4 Landofile format. The goal here is to introduce a new Landofile format that taps into the full power of the new runtime by exposing some of its best features easily and through config.

2024 - All three pieces of Lando 4, the runtime, CLI and Landofile format have release candidates.

3. Teams, Enterprise and Strategic Partnerships

One of the most illuminating things we've done over the last few years is work directly with large agency teams, Fortune 500 companies and hosting/WebOps companies. It's given us a real sense of the kinds of things larger institutions need from Lando.

This is why Lando 4 will include various security, compliance and whitelabeling improvements to better accomodate our friends operating at scale. It's also why we will be launching our "Lando for Enterprise" and "Lando Partnerships" programs later this year.

If you'd like to get a sneak peak of those programs or sign up for early access please just message us here or join the Lando Slackopen in new window and DM @reynoldsalec or email us at enterprise@lando.dev.

Where are we going? THE NITTY-GRITTY

Ok, so the high level sounds totally cool but what does that mean in real and specific terms? What kinds of things should users expect this year?

Here is a non-exhaustive list of very specific things that users can expect this year ordered in decreasing probability of likelihood.

  1. Weekly contributor meetings
  2. A lando rebuild that caches build steps for FAST FAST FAST rebuilds
  3. Native support for arm64 images
  4. A lando update command that will update your plugins to their latest versions
  5. A Dockerfile build system that allows for more powerful build steps
  6. Better usabilty when Lando is "waiting for services to be ready": think a CLI table with real time status updates of all your services
  7. A weekly Friday webinar/office hours to showcase new features and answer questions
  8. Improved developer documentation, guides and YouTube videos
  9. A "Lando for Enterprise" program for users with complex infrastructure needs and high security/compliance requirements
  10. An update of all our current plugins to support their most recent versions
  11. A new OCLIF based CLI
  12. A new Landofile V4 format
  13. SSH key agent forwarding support
  14. Better support for alternate SSL certs especially in remote environments
  15. A weekly(?) "Lando After Dark" Twitch stream where @pirogopen in new window drinks Miller High Life and works on the most pressing Lando issues LIVE!
  16. Support for Docker Compose V2 and Docker Colima
  17. Additional "Language Modes" like "Corporate" or "Pirate"
  18. Support for "lando tooling" composition and chaining eg be able to reference one lando tooling command in another
  19. A framework for lando quickstart to easily get running with a new project
  20. lando init being broken up into separate lando auth, lando clone, lando create and lando init commands
  21. Landofiles that can include other Landofiles
  22. Support for podman as a Docker replacement
  23. Support for environment variable usage in Landofiles
  24. Support for multiple "databases" in a single service
  25. Support for upgrading databases or changing their database creds without a lando destroy