Friends, 2022 has been a pivotal year in the Landoverse. Lando officially hit five years old and has a huge dedicated user base, thanks to you!
The Peace Dividend
The past five years have seen the solidification of container technology in our day-to-day lives as developers. In comparison to the pre-2017 era (see our old blog post on the journey from Kalabox to Lando for a good blast-from-the-past contrast), all the dependencies that Lando relies upon have remained fairly stable.
Lando has benefited from this stability, growing from a community of a few hundred users in 2017 to more than 14,000 today. That growth has created a robust community dedicated to helping other Lando users solve problems. Daily we're amazed at the knowledge and kindness we see in the Lando community Slack; you should join if you haven't!
The Ending of the Pax Lando?
However, rumbles of change are always on the horizon. We have increasing concerns around using Docker Desktop as a dependency considering its licensing changes over the past year. Remote development is growing in viability and popularity, forcing development teams to rethink how they build and manage development environments. Increasingly companies are looking to capture developer tools as acquisition funnels, another feature to help trap developers within their software ecosystems. How can Lando meet these challenges and continue to champion free and open web development?
To meet these challenges, Lando needs to move from a monolithic tool maintained by a handful of developers to a distributed toolset powered by a larger community of contributors. Put another way, Lando needs to not only be for the people, but also by the people. We know our community has the desire and skills to make this happen, but 2022 has laid bare some of the problems that discourage Lando users from becoming Lando contributors.
Problem 1: The Monorepo
Traditionally, Lando was encapsulated within a single repository that contained all the core services, plugins, recipes, and other code that comprised Lando. The monorepo made it hard for potential contributors to find the code they wanted to modify. It also made it nerve wracking to propose a change...what if a little change in one corner of Lando created an issue somewhere else?
Problem 2: The Custom Lando CLI
The Lando CLI is largely custom NodeJS code based around the yargs
NPM package. This has worked surprisingly well, but it means that contributors needed to learn about Lando's unique (undocumented) implementation.
Problem 3: Reliance on Bitnami Images
Initially Bitnami provided a large library of Docker images that were convenient to Lando's use case. However, Bitnami images are generally less-used than the official Docker images for most Lando-relevant services, and they have less (no?) ARM processor support. Bitnami-based images make it difficult for contributors to create new Lando plugins and maintain existing ones.
Problem 4: The architecture
The Lando 3.x architecture was sort of an emergent property, the result of becoming popular quickly and then iteratively adding new features to meet developer needs. While this was great for end users it also resulted in a sort of confusing, inconsistent and evolving API.
Progress in 2022
Fortunately we didn't spend 2022 sitting on our laurels. Over the last year we've made some changes to how Lando is organized as a project and started the (somewhat daunting) task of re-architecting some of Lando's vital components. These include...
DEATH TO THE MONOREPO: All of Lando's plugins are now in separate repos within the Lando GitHub org.
PER-PLUGIN TESTING: All plugin repos have testing that runs on pull requests/releases to help ensure changes to the plugin don't impact functionality.
NEW DOCS ARCHITECTURE: Using some clever Netlify tricks, we've built architecture which allows documentation source code to remain in each individual plugin repository, while building as the consolidated docs.lando.dev that you know and love. Sounds trivial...actually a huge PITA.
RELEASE AUTOMATION: Similar to the docs, making sure that we had an easy way to pull together all of Lando's disparate repositories to create an easily downloadable Lando binary was vital to the new architecture.
KESSEL-READY HYPERDRIVE: Those deep in the Landoverse may have used Hyperdrive in the past as an easy way to install Lando on Mac and Debian-flavored Linux systems. In 2022 we started rebuilding Hyperdrive as a package manager for Lando. Although very much a "work-in-progress", the new Hyperdrive promises to help development teams who want to customize their Lando distributions or easily deploy custom Lando plugins.
LANDO 3.9.1: At the time of this writing, it's just a "pre-release", but we recommend checking out Lando 3.9.0. Not only does it update Lando's packaged installation of Docker Desktop, it also switches Windows users to use the superior WSL2 backend instead of the old Hyper-V.
V4 RUNTIME: We've started work on a new runtime that will address Problems 2-4 above (and more). Look for a blog post in the coming weeks for more details in what to expect this year.
If you want to go fast, go alone...
Lando was created largely by Mike Pirog (@pirog). In the prime of his childless youth, fueled by a steady supply of Miller High Life and using what RAM in his brain that wasn't occupied by presidential trivia, Mike very quickly developed a powerful solution for helping developers create and distribute local development environments.
...but if you want to go far, go together.
2022 proved to us that we wanted to take Lando further to meet the challenges of the 2020s, but that we couldn't rely upon a codebase that has been largely written and maintained by one person.Lando needs to become friendlier to contributors.
In the short term, this can help core maintainers like Mike focus more on Lando's core while other contributors maintain and expand Lando's system of plugins. In the future, it will ensure Lando's longevity and expand the ways it helps developers of all stripes.
The Road to Lando 4
We're currently in active development on Lando 4 and aiming to release an "alpha" for early adopters sometime before March. Eager to help? There'll be a bunch of opportunities to help upgrade plugins and get more involved with project maintenance over the next few months; join the Lando Slack and make sure you're in the #contributors channel to keep track of the conversation.