Listen:
direct LinkTopics
- About Aaron
- What is Lando
- Best type of development for Lando
- Listener Q: Stephen - I Recently switched to ddev for Mutagen, will Lando support that in the future
- Release schedule
- Development process
- Favorite features
- When is 4.0 and what is in it
- Best reasons to choose Lando
- Adoption rate of Lando
- Listener Q: Stephen - Nic switched from Lando to DDEV, why and what features would he like to see in Lando to go back
- Listener Q: Matthieu - I use Lando and I am trying to convince coworkers to use it as well, any advice
Resources
Module of the Week
- Brief description:
- Have you ever wanted to assign moderated content to specific users to edit or approve it before publishing? There’s a module for that!
- Brief history
- How old: created in Feb 2017
- Versions available: 8.x-2.6 (D8 & D9), 3.0.0-alpha1 (D9 & D10)
- Maintainership
- Seeking a new maintainer
- Number of open issues:
- 17 open, 3 of which are bugs
- Does have test coverage
- Usage stats:
- 9 sites
- Maintainer(s):
- Jheadstrom, who maintains his own stable of modules, including a number in the Message stack
- Module features and usage
- Creates a new tab on nodes, on which a content creator (or anyone with the necessary permission) can assign one or more editors or reviewers
- Can specifically designate which roles can be editors or reviewers
- Editors have the ability to make changes and transition content between states, while reviewers can only move between states
- For each transition in your workflow, can specify if editors and/or approvers are able to perform the transition
- Can optionally send a notification email to workflow participants as they are added to a piece of content
- I used to have a boss who liked to say “The surest way to starve a dog is to put two people in charge of feeding it”, so the idea of specifically assigning individuals to individual pieces of content is potentially very powerful
[MUSIC]
(...)
This is Talking Drupal, a weekly chat about web design and development from a group of people with one thing in common.
(...)
We love Drupal.(...) This is episode 412,(...) Lando episode two.
(...)
On today's show, we are talking about Lando, the release cycle, and Lando 4.0 with our guest, AaronFeledy We'll also cover workflow participants as our module of the week.
(...)
Welcome to Talking Drupal. Our guest today is AaronFeledy(...) Aaron is a tireless problem solver who takes a significant interest in a wide range of technical topics. He is a co-organizer for MidCamp, the Midwest's premier Drupal camp. And he has been founded a number of Drupal camps speaking about Lando.(...) Aaron, welcome to the show and thank you for joining us.
(...)
Thanks for having me. I'mNicLaflin founder at Enlightened Development. And today my co-host are JohnPicozzi Solution Architect at E-PAM.
(...)
Hello, internet friends.
(...)
And joining us as our guest host for the next four weeks is Andy Bloom, Senior Front End Developer at Lullabot.
(...)
Hello, hello.
(...)
And now to talk about our module of the week, let's turn it over toMartin Anderson-Clutz Senior Solutions Engineer at Acquia and a maintainer of a number of Drupal modules of his own.(...) Martin, what do you have for us this week?
(...)
Thanks, Nick. Have you ever wanted to assign moderated content to specific users to edit or approve it before publishing? There's a module for that. It's called Workflow Participants and it was originally created in February of 2017.(...) It has 8.x-2.6 versions available for D8 and D9, as well as a 3.0.0 alpha 1, which works with Drupal 9 and 10.(...) Now it officially says it's seeking a new maintainer. So if you feel inspired by what you hear today, maybe reach out and look into that. It currently has 17 open issues, only three of which are bugs, and it does have test coverage.
(...)
Now, according to drupal.org, it's currently in use by nine Drupal websites and it's maintained by Jay Headstrom, who maintains a stable of modules of his own, including a number in the message stack.(...) Now, the way Workflow Participants works is it creates a new tab on nodes,(...) which allow a content creator or anyone with the necessary permission to assign one or more editors or reviewers. Now, they can specifically designate which rules can be editors or reviewers. You don't necessarily have to search through all of your different users.
(...)
And editors have the ability to make changes and transition content between states while reviewers can only move the content between states.(...) Now, for each transition to your workflow, you can specify if editors and or approvers are able to perform that transition, and it can optionally send a notification email to Workflow Participants as they are added to a specific piece of content.(...) Now, I used to have a boss who liked to say the surest way to starve a dog is to put two people in charge of feeding it. So this idea of being able to specifically assign individuals two pieces of content, to me, seems very powerful. So let's talk about Workflow Participants.
(...)
Yeah, it sounds great.(...) I have a question, though. Once somebody's kind of piece is done, are they able to remove themselves from notifications or if they add themselves, are just permanently going to get notified about the content?
(...)
So my understanding is that the way the notifications work is it only sends them an email when they first get added to a piece of content. So as the content is transitioned between states, it wouldn't necessarily automatically send additional notifications, although I suspect if it's compatible with something like ECA, potentially you could add logic to trigger additional notifications if you want to do. One question I have, and I may have just missed this while you were describing it, but can a user, so if a user creates a piece of content, can they define who it gets sent to? Like out of a list of like, hey, these are the five approvers for this type of content, send it to one of them.
(...)
That's exactly the way it works. So it does that as a tab, although again, there's sort of a permission for being able to assign Workflow Participants. So it's kind of up to the site builders to decide whether that content creator can assign those Workflow Participants themselves or whether somebody else needs to do that. I think the other thing actually I neglected to mention is it does also have a sub module, which basically you can assign default participants. So you could say anytime somebody files an event, always make this person the editor or those kinds of things as well. That's what I was kind of getting at there, I think a little bit was like, hey, can you default it if need be? So one type of content always goes to somebody if you don't want your users to have that much control. But that sounds very cool.
(...)
I imagine you get some really flexible configurations with this, with the incoming policy based permissions that was pitched at Pittsburgh.
(...)
Yeah, that's another that's another one that's very, very interesting to me around around permissioning, because, you know,(...) listen, we can go down a rabbit hole on permissioning, but you will put a link in the show notes about policy based permissions. I think that's pretty cool.
(...)
Yeah, I would say in my experience, there's a lot of sort of business complexities often around sort of that whole idea of permissions and who can edit what content. So I feel like this is a great solution. But yeah, the policy based access is definitely, I think, also an exciting innovation happening in the Drupal space right now.
(...)
Yeah,(...) workflow is always one of the things that I kind of keep in the back of my mind as one of the strengths of Drupal. I find that not a lot of projects need it. And the projects that ask for it usually don't need it either.
(...)
But the projects that do actually need it need a lot of it usually.(...) And if you didn't have something like workflow and the workflow ecosystem with these types of tools, I don't even know how to begin building it. It's so complex to have that extra layer. But Drupal handle, since Drupal 7 is handled really well.(...) It's very interesting too. Like, permission granularity is something that is like,(...) I mean, I don't know. I don't know if it's evolving or if it's just always been there and I've never really had a need for it. But like, I feel like the more complex projects get, the more granularity you need over those permissions and those workflows and who can do what and when. And I think all of the stuff we've just been talking about kind of helps to make that system better.
(...)
One last question for you, Martin. Does this tie in, do you know if this ties in at all to that preview module that you use in your blog for sharing content?
(...)
I think that'd be an interesting use case. If you were able to say, like, I need this person to look at it, they don't have an account, they need to preview it, but I need them to approve it.(...) That'd be it. So I feel like those are probably different use cases. The preview unpublished, I think that's the one you're talking about. It's really about saying, I want to be able to give people who aren't users in the system the ability to come in and review something before it's published. Whereas workflow participants is really about assigning people who are users to have sort of additional permissions in terms of being able to push things through the workflow, potentially with the ability to make changes as well.
(...)
OK. Yeah, I was going to hack that for you, Nick, and say, like, you could create a user with the email for the person. They could get an email link to the unpublished thing that they need to review. But then there's really no way for them to approve it, to move it to the next step of the workflow. Right. So yeah, I mean, the use case I was thinking of is that bigger projects always have something like this, the upper level of stakeholder that doesn't have the time to log in but still wants to review a particular piece of content. So if you combine those two, like, they have the ability to approve it, but they don't have to have an account to log in.
(...)
I mean, I think it's kind of narrow, but those types of projects always have issues.
(...)
Yeah, I mean, I feel like maybe there's a way to use something like content moderation link along with access to unpublished to sort of give that senior stakeholder the ability to potentially move something between states. But I feel like you'd want to be pretty careful about permissions so that it doesn't become a way that anybody with the link suddenly is able to push content between states.(...) Wait a second. This might be a two for today. What does content moderation link do?
(...)
So content moderation link creates basically a token that you can use to push a piece of content between different workflow states. So you could say, as an example, as part of the email notification that goes out using something like Workbench email or even your ECA notifications, if you're using that,(...) include basically a link that would say as an editor, I can look at this,(...) maybe see that, oh, well, you know, John knows what he's talking about in this subject. So I don't need to review it. I can just tap this link and that'll go and directly move that content to publish as an example. Well, there you go. That solves your problem right there, Nick. Just send them two links in the email, one to the preview that they need to look at and the other one to say, once you agree with it, click here and send it on to the next phase.(...) There you go. No logins.(...) Life made easier with Drupal.
(...)
Well, I'll say the the potential complication of that scenario is that currently content moderation link does rely on user permissions. So it wouldn't by by nature of having the link, you would still need to sort of like log in and and have the permission to perform that transition. So it doesn't it doesn't override that. But maybe that's a feature that could be added.(...) Oh, boy.
(...)
This feels like we could go. We could just talk about this for the next 30 minutes.
(...)
I love these little discussions and you're finding really interesting modules to talk about. So I appreciate that. Well, thank you, Martin. As always,(...) another interesting module to talk about and onto a primary topic. So, Aaron, can you tell us a little bit about yourself and how you got involved with Lando?(...) Yeah, my name's Aaron Feli. I call myself a hands on architect.(...) I kind of get to invent my role over and over again because I'm a bit of an independent contractor. I can come in and work for just about anybody and wear whatever whatever hat you need. But the the primary thing I work on is Drupal and integrations with other systems, APIs, DevOps, that sort of thing.(...) And I've been doing that for oh, well, I've been doing the contract work for 15 years. And about 10 years ago, I decided to go all in on Drupal and kind of be like, I'm a Drupal person. If you if you want to hire me, I'm going to I'm going to work on Drupal in some fashion.
(...)
So through that process of contracting with various organizations and what have you, I've seen a lot of the ways that people do things and the way organizations do things. And there are lots of patterns in the approaches and whatnot. And at some point along the way, I contracted with Kalamuna. And at the time they were developing an internal tool called Kalabox, which was a wrapper around Docker.(...) And it eventually became Lando.(...) But back then, I, you know, I fell in love with it right away because I I've always been a Windows guy. I did everything I Windows. I went to school to be a Windows sysadmin.
(...)
And so, you know, this thing where everything is well, nothing works with Windows. Yeah, it's really how it came down to it. And now here's this tool where I don't have to set up a fresh VM every time I get on a new project.
(...)
I could just spin it up and find my details. It was a little limited back then. But, you know, I could get in there and mess around with the Docker files and make it do what I wanted. So it became the tool I use all the time. And from kind of hacking it to make it do what I wanted, I kind of learned the internals. And before I knew it, people were asking me questions about Lando. So I just kind of rolled with that, too. And now I go around, I talk about Lando at the Drupal camps and I contribute to Lando. And I'm sort of people come up to me, hey, it's the Lando guy. I'm a Drupal guy. But yeah, yeah, Lando.
(...)
You mentioned that you're a Windows guy,(...) which...
(...)
Whole line of questions there. Go for it. I used to be a Windows guy until about 11 years ago. I switched to Linux. I'm curious if you're still on Windows and why you continue on Windows when Linux is an option.
(...)
So the great part about Windows as of late is Linux is now included. The ability to run Linux with WSL2, the Windows Subsystem for Linux, which basically...
(...)
It makes Linux almost the first-class citizen in the Windows environment. They've done a lot of work to integrate things. So you can still have your Windows experience while also having all the Linux tools just right there. And they've kind of... They've made it so the networking just sort of works. The file sharing just sort of works. It mostly feels transparent on the Windows side. So that's pretty cool. But yeah, now I have the...
(...)
Face everything but the GUI for Linux on my Windows machine.(...) That took a lot of the headaches away as far as development because the Internet's built on Linux.(...) I want to shift focus here a little bit to Nick and ask him how that makes him feel.
(...)
I mean, if you're relying on a tool to make something like Linux, still have the question of why not just use Linux. But I mean, people have preferences for environment.
(...)
If you want to use Windows, you can use Windows. There's no... Because can you run Windows on your machine?
(...)
I could if I installed it.
(...)
The other problem is I run into just as much... Anytime I'm going to run a bunch on my laptop solely for a while. I find that about 10% of my working hours are spent fiddling with something that...(...) Windows I just didn't have to fiddle with. It just worked.
(...)
Interesting. Interesting. Yeah. I mean, once I've got stuff set up, I haven't had to fiddle in a long time, but occasionally updates break. I'm a fiddler to a fault. So if I'm fiddling with something to get it working, it's because I did something to break it.
(...)
I prefer the term fine tuner, but hey, whatever. Whatever works.
(...)
I would also like to put a programming note in here that this show might be difficult for Nick as a Linux user and an avid Ddev user and supporter, but he's going to stick it through with us and provide quality content, I'm sure.
(...)
So Aaron, I realize that we may have buried the lead a little bit here for some folks. We're very much assuming that everybody knows what Lando is.
(...)
For those folks who may not know what Lando is or does, can you just give a very, very high level overview of that?
(...)
Yeah. So Lando is a tool to sort of manage the dependencies that come along with the software development,(...) primarily web development.
(...)
By dependencies, I mean the,(...) you know, in the case of Drupal, you know, you need to be running PHP, you need to be running a server, like my, or a database server, like MySQL.
(...)
And you know, depending on what kind of development you're doing, maybe that means Node as well.
(...)
And as you go from project to project, these things require different versions. They have different stacks. It's not PHP. You know, it's something else, you know. And you're running Go, you know,(...) all sorts of different ways you can develop things. And what Lando does is it tries to make it so that it's very easy to jump from one thing to the next without having to manage those dependencies. They sort of are defined with the project that you're working on. And then you can just type Lando start into your command line and all of those things that I described get downloaded, get set to the right versions, and are just there for you to use.
(...)
And it just wraps all that up in a nice little package.(...) And that's sort of the goal of Lando is just to make managing all that very easy. And you know, as a developer, if someone else has already set it up for your project, you shouldn't have to think about these things anymore.
(...)
Right.(...) It makes like the use or need for virtual machines, right?
(...)
Almost non-existent, right? It's using kind of built-on Docker and kind of managing Docker containers for your development environment, which, you know, you're right. If you have, you know, you're coming into an existing project, you have Lando set up. You can pretty much say Lando start and, you know, everything will get built out for you.
(...)
You know, predefined by the Lando configuration file that's in your repo, right?
(...)
I think another aspect here is a lot of service providers offer recipes for Lando. So like, there are different providers out there that you can basically, when you set up Lando,(...) use their recipes to be able to kind of get all of the components of your environment in your local. You know, if you have like a caching layer or a Redis server or something like that,
(...)
you can kind of build those into your local environment. So definitely pretty powerful.
(...)
Long gone are the days of like, mamp, I feel, and not that there's anything wrong with using that.(...) It's out there still doing it. I'm just saying like, this is like next generation.
(...)
So something that John said, I have a question. What is the difference between a Docker container and a virtual machine? Because I assume the two were the same thing.
(...)
The way containers work is they were based on a concept that exists within Linux, where basically you get to the way processes interact. Basically the way the permissions work is you could isolate what you're doing in Linux in a way where other parts of Linux can't see it.
(...)
So the concept of a container is, okay, here's this, here's this, basically this setup of reserved space for permissions and whatnot, but can't see anything else. And what that could look like is a small version of Linux running a PHP server and MySQL and all of that. And it doesn't affect anything else but that little sort of environment. It's not a virtual machine. It's still running Linux as it is.
(...)
There is some overlap here. You do get some virtual machine things. So let me say what a virtual machine. Virtual machine is basically an emulation of another computer running on top of the computer you're already running. So with that, you get a lot of overhead. You're not running Linux directly. You're running a program that thinks it's Linux, basically,(...) or Windows or whatever else. Yeah, I would just break in and say one of the biggest differences, the way I think about it is a virtual machine has to have an operating system installed on it,(...) like Windows, Linux, or something else.
(...)
The container is, I mean, again, this is a gross oversimplification, but the container is just the program that you need.(...) So a container will use a lot of the resources of the host machine, like shared across all the containers in a way that they can, whereas the virtual machine is essentially its own encapsulated computer. So a Docker container that's running PHP or something might only need 50 megabytes of memory or something. You need to have all the memory requirements of whatever OS you're running as well in the virtual machine. So if Linux requires two gigabytes and you need 50 for PHP, then you need two gigabytes plus 50 megabytes for the virtual machine, but you only need 50 for Docker. So Docker is way more efficient.(...) So, yeah, so it's unless you get into a situation where you're not running Linux on your host machine. So you have an issue where, okay, these concepts I just talked about the way a container works, where it's taking advantage of the ability for Linux to sort of sandbox things.
(...)
But you can't do that on a Mac and you can't do that on Windows. So the workaround for that is to install Linux virtual machine, which comes with all of the overhead of the full operating system stack run within its own process on top of everything else you're running.
(...)
So at that point, you're running a container on a virtual machine. Right.(...) Okay.
(...)
Okay. So then you were talking about in your description of what Lando is talking about running different stacks, whether that's PHP and my sequel or whether that's a node stack or I imagine you could do like .NET or Java if you wanted to. Is there any specific kind of development or site Lando works best for?
(...)
I don't think so. I'd say it's most popular amongst PHP, CMS developers,(...) primarily because that's just sort of it was it came out of Kalamuna, which was a Drupal agency and just sort of it grew in popularity within the Drupal space and then kind of spread into the PHP space. And, you know, for the longest time, it's been able to work on all of these other frameworks as well. But it's just the adoption and the word of mouth kind of made it the big tool for PHP things.
(...)
But the.
(...)
I don't know that it's best suited for one versus the other, though. I think it works pretty well. I just was on a project that was primarily Go for the past year.(...) Running Go and MongoDB and all that. And it was a great environment for that.
(...)
So I mean, it's pretty it's pretty flexible. You can run a lot of different things on it. It's not like, oh, you have to you have to run, you know, just just a Linux box or just, you know, you can you can do a lot of different things. That actually leads me to a question.(...) And you might be able to answer this being a lover of of the windows. Do you have the ability to kind of like spin up like an IIS sort of environment in Lando? Yep.
(...)
Yeah, I believe that's the dot net recipe that basically is that interesting. It's painful, but.(...) Well, I'm not. We can get very meta there if you're running Windows desktop and then you install Lando to run IIS.
(...)
You know, that feels very like a box within a box within a box to me. But hey, what do I know? Don't let me talk about my whole stack here in Windows WSL2 to run Docker, to run to work with Lando, to run Apache.
(...)
Yeah, it can get deep. So so I shifting gears a little bit here, we have a listener question from Steven.
(...)
He he's going to ask a little bit of we're asking a little bit about some of the features of Lando now. So Steven had been kind of an advocate for Lando and user of Lando for many years, but found recently he had to switch to DDEV because DDEV just supports Colima and Musician a little bit better for Mac.
(...)
He's curious if you know Lando has plans to address those gaps or if kind of DDEV is the way to go for that for now.
(...)
So there are plans to address those gaps there. They're there in the works.
(...)
Lando has been undergoing a bit of a rewrite or refactor.
(...)
To make it easier for those things going forward to be the tools originally built to be a Docker tool. It was built for Docker. And so it's it's it's in the process of being reworked so that it can work with with anything. And it's also going to be plug in driven. So if the next thing that comes around, you know,(...) that it doesn't exist yet, but it's it's great. You know, it's it's plug in. You can tell Lando, okay, orchestrate this new environment instead.
(...)
Yeah, that's in the works. It's it's coming soon. I mean, it's been coming soon for a while. It's it's taking some time, but it's it's happening.(...) So that kind of leads me to my my next question around Lando's release schedule.(...) And I'm wondering as a as a longtime Lando user, I'm wondering why the release schedule seems so sporadic. I mean, the last release was in in May, which wasn't that long ago. But I'm wondering if you could talk a little bit about kind of the spontaneity of of the releases. And if there is like a release schedule that that they're trying to map to.
(...)
So for a while now, the the during this this rewrite that I mentioned in the refactor, the the new features portion of it(...) has been kind of we're going to put this in the new version. No sense in writing a new thing for the thing we're discarding.
(...)
You know, this there's a new way to write these plug ins and whatnot. And these interactions with the Lando.
(...)
We're going to put them there.(...) Probably that refactor is taking some time, like I said.
(...)
So we're not really seeing the new features come out because it's you know, we're not building them for the new features. Because it's you know, we're not building them for the way Lando is now. So what you're seeing is releases more for bug fixes that are affecting the users.
(...)
Because otherwise Lando is pretty stable.
(...)
You know,(...) I don't have the metrics in front of you, but 99% of the time.
(...)
It does what it's supposed to do for the people that are using it.(...) So right now the Lando Lando 3 is the one that everyone has been using Lando 3 is just basically maintenance fixes only for the most part. But actually that's not true because recently.
(...)
Some of these Lando 4 things that have been working on because it has been taking some time to refactor, they're getting backported in the Lando 3 and some sort of basically.
(...)
There's some adapters being built into the old code to allow them to work with some of the new things so that we can start easily more easily backporting some of the new features. And so the expectation is that you're going to start seeing more releases now with in Lando 3 with some of the new features, the ones that make sense to backport while Lando 4 continues to be developed and.
(...)
Yeah, Lando 4 then the idea is that the whole ecosystem is going to be. Much easier to work with as a contributor. It's pretty difficult right now. The nature of the way Lando kind of came up.
(...)
It didn't lend itself well to contribution, but that's the idea of Lando 4 is make it much easier. Get a lot of contriv in.
(...)
Start turning through releases.(...) Yeah, so let's dive into that a little bit actually. I'm curious about what the development process is like because. You know.
(...)
When you're using Lando, you're developing a site so to test Lando, presumably you have to have sites to test with and you need to figure things out. So what is the development? If you're looking to contribute to Lando, what does that process look like and how do you? How do you test features when you know it's a development environment itself?
(...)
Um.
(...)
So and I do this because I'm like I said a Windows person. I never it. Windows doesn't come with PHP like Linux. Linux distro might right so.
(...)
I kind of made it a habit. I never install anything on my computer.(...) I did do it all in Lando right? I don't have nodes installed PHP is not solid. I have no versions of any of these things on my machine. But I do have node installed because to develop developer Lando it is written in JavaScript. You have to be able to. You have to run node to run it. Debug it. Test it.
(...)
So.
(...)
Yeah, you basically it's written in JavaScript.
(...)
You can you can work on it and any ID that works with JavaScript.
(...)
And then it's like I said, it's node any any any ID or you run an NPM command to to run or build it.
(...)
Much like you would on some front end things for a website.(...) So do you have to like?
(...)
Because it kind of takes over some routing stuff too. Do you have to like power off Lando each time you make a change or the most changes kind of like one of the nice things about Lando and working in Drupal is you make a change you refresh the pages there, but I imagine with Lando it's a little bit more complex than that. Or is it kind of that same cycle you kind of
(...)
rebuild it and it's there and working and you can test your changes.
(...)
So I can kind of equate this to how it works in in web development where you You have your UI and then you have your back end.
(...)
And you know,
(...)
and if you're doing something that requires
(...)
like in Drupal if you're doing something that changes the the schema for the config you you may have to uninstall your module and reinstall it to get the effects to really to go through the process and make sure your changes are working. But if you're just tweaking the position of a box, you know, you just might be able to refresh the page and that sort of works the same in Lando to where if you're changing something more on the schema level in the background what Lando is doing it's actually it's leveraging Docker. So it's it's generating Docker compose files which define all the containers in the environment.
(...)
It's doing that behind the scenes. So if you're if you're doing back end things, maybe you need to kind of tear down and rebuild to kind of see how it builds back up in Docker.(...) But then there's also the front end which is your your CLI the the typing your Lando commands in your CLI.
(...)
You may be able to tweak those interactions that don't really have an effect on the environment.
(...)
So you just run is then you just run like you can click the play button in PHP storm in your node environment and it's like, okay, well, the prompt and mirror you just type a Lando command now, right?
(...)
And it actually will interface with that Docker environment that was already built could have been built by just the fully packaged version of Lando.
(...)
Okay, so yeah, it depends on what part you're working on and for here's CLI is command line interface. Just throwing that out there.
(...)
So if you're you're writing Lando code, if you're contributing to Lando, you're you're writing JavaScript. Does that mean if I want to run Lando on my machine, do I need to have node installed to do that or is it compiled to something else?(...) So if you really want to make it easy on yourself, you should have node insulting machine because then you're just using the node runtime. You don't have to deal with building and and such.
(...)
But when yeah, if you do want to package it up, it runs on drawing a blank. It's a vercel package that basically wraps your JavaScript. It's not really compiling. It's just wrapping it. Like you can actually if you want to dig in with a hex editor at the Lando binary, you'll see a whole bunch of JavaScript in plain text in there. So it's not really doing anything. It's just it's wrapping it up and something that can be run your actual node. Node is packaged into a binary along with all the Lando code and that's that's actually what you're running when you run Lando.
(...)
So this this may be getting a little into the weeds. Are you are you working with a specific node version? Because I believe node, I think it's 20 is supposed to come with the ability to create a binary just in node. Is that is that something that you or or anyone working on Lando has looked into?
(...)
I haven't. I don't know if anyone has.
(...)
And I can't remember off the top of my head which version of node we're currently running to Lando file for me.
(...)
Do you use Lando for your development environment? I have ended up being more complicated than it was worth. I tried. Like I was saying, it feels so clean to not have anything installed on my machine. It's just specific to each project. It just kind of comes in built in Lando and I tried and it works, but it's just too many layers of abstraction and application. Running Docker within Docker is complicated.(...) Yeah, at least. OK, so what are some of your favorite features of Lando? Well, my favorite is the ability to just set everything up. I'll see I'm my eternal tinkerer. I can't set everything up once and forget it, but I can I can have the idea in my head that I'm going to set this up once distributed to a team of people and all they have to do is type Lando start. And they're also all set up to go. That's that's that's great. There's no figure out what's different about your situation. What do we?(...) How do you get set up? You know the time you might spend going through the docks to get the environment set up just right. Oh, that's you just Lando start. Love that.
(...)
And even coming back to a project later, I haven't looked at the thing in a year and a half. You know Lando start. I'm I'm there. I'm there.(...) Yeah, I love that.(...) Otherwise,(...) tooling is great.
(...)
You know, it's it seems simple as what do you do and you're you're you're running a series of bash commands every time you type a Lando command custom Lando command, but you can set up your own custom Lando commands. So like right now you type Lando start it builds and sets up your environment, but you can define your own command. So you can say Lando build, for example, and then you can type in all of the maybe you got a composer command, composer install that runs and then you've got a yarn install that runs on a different container. And then you've got an MPM build for some reason, because I don't know why you have yarn also, but you got all these things and maybe you're copying and moving files around and you can just all those anything you might stick in a script or you can even run a script. You know, got a script in your project. You can say Lando build and it runs all of these different things. It's like a task runner for you, right?(...) Sounds like your favorite thing is the ability to be highly customizable, which is which is nice. Yes. True. True. At the end of the day, I think you can do that.
(...)
I think that's what it comes down to. You can you can sort of build this this thing that makes working on whatever project it is very easy. And as those kind of needs change from project to project, you can you can sort of define what is my tooling? What is my environment?(...) And now the end user just gets all that, you know, by end user. I mean, you know, the other developers on your team after you set this up. It is. Yeah, it's a word. Go ahead, Nick. Sorry, I was just going to say even on the individual project basis when things like upgrading PHP versions used to be never mind switching between projects. If you're going from eight point eight point one and you're using WAMP or MAMP or something like that's a much bigger task. Whereas in Lando or DDEV, you know, you just change a value in one of the YAML files and restart or rebuild the project. And now you can test that new version. And once that's tested, you know, other, you know, setting aside updating upstream environments and stuff. Just handing that off to other developers is as simple as just pushing that branch and on bigger projects, especially that's really valuable because you might not be maintaining all the different custom modules. You know, if other people need to run updates on their own custom module, that's an easy way to get them the updated environment to run their own tests and processes. Yeah, a lot of people don't realize that one of the benefits you get with Lando with maybe five ish lines of config and you can do that. So, you know, if you have a config in your Lando config file, you can actually be running two versions of PHP at the same time with two different URLs. You can kind of jump back and forth if you're working on upgrading something or whatnot.(...) Yeah, one other thing I've done is or seen done is use in a CI CD process, right? To run tests before you kind of like deploy a site or make a change, right? You can spin up Lando within your CI CD process to test that stuff. And to ensure that, you know, your code quality is good. So many different uses there, which is awesome.
(...)
I'm wondering if we can dig a little bit more into Lando's kind of big 4.0 release. We talked a little bit about it. It's kind of a, as I understand it, a complete rewrite going to kind of more of a plug-in based system. I'm wondering, like, what else can users expect from that 4.0 release?(...) It is going to get really, it's already pretty powerful and customizable.(...) It is going to get so much more so. Right now, it's sort of a, it's a wrapper around Docker Compose. It gives you some access into that. You can, if you really want to get down into the details, it does expose the Docker Compose, most of the Docker Compose API. So you can actually get in there and really define what your PHP container is doing in any level of granularity that you could with Docker Compose. But it's the Docker Compose API. You go in there and kind of line things up.(...) With Lando 4, one of the big things is the Lando API, the config API, the YAML that you're typing into your Lando config file. Is going to be updated with, it's going to, it's going basically,(...) Docker Compose is going to be part of the Lando API instead of users sort of sticking it in in this one spot is the way it currently works. It'll become now, as you're defining your config for a container service in Lando, you can go, okay, well, I want this one thing that I can do in Docker Compose. Well, that's just available there as a sort of first class citizen in your definition. But also, so is the Docker API for containers, like your end, your copy, the stuff you see when you're looking at a Docker file. Those are going to be options for any service as well. And if you include those in there, it will actually build the container right there or build the Docker file right there before it builds the container. So that's been a pain point for a lot of people. You need to have a container that exists. You're starting from there, then you're running commands on it every time you build. Now you can kind of define some things that go into the actual definition of the container. So you can pre-build everything in that you want. And maybe you would do in a build step now, sort of that becomes the base level. So now every time you do a Lando rebuild, all that stuff's already in there for you. And maybe you distribute that or whatnot, because it will actually build your Docker file. Yeah, just making it much easier to develop and contribute. Documentation is going to be huge. That's already in process documenting all these things. Right now, the documentation is like, well, how do I actually attribute? If you do find something, it may not be right. And that's sort of going to become a front and center. This is here. Here it is. This is how it works. Everything's plug-in driven. We're going, you know, make your own thing if it doesn't exist real easy. Is there a roadmap that kind of lays out all these things? If you go to the Lando website, there's a blog section and there's a post in there sort of laying out some of these things. A lot of the detail in that is just kind of buried in conversation rather than displayed out anywhere. But there is a blog post sort of laying out that roadmap.
(...)
When can we expect 4.0? Is it like,(...) I know it's when it's ready, right? But is it two months, six months, a year, five years? What kind of timeline do you think? Current chatter mixed with what I think I'd take probably by the end of the year.
(...)
Yeah,(...) one of the big features is going to be all of the Docker APIs are sort of, they become part of the Lando API, but it is in no way reliant on Docker anymore. You can swap things out. If you come up with some other solution that doesn't use any type of containers at all, but can still kind of make sense of all these configs you set up, you can build a plug-in and have it run on that engine.
(...)
Well, I mean, that raises another question, right? Will 4.0 support other back ends as opposed to Docker? Like from the go?(...) Yeah. From the go. I found the roadmap looking blog post and one of them I'm seeing right now is also support for Apple Silicon. So that'll help update people that are on Macs that have come out in the last two years or so.
(...)
Yeah, and then it's in there to some degree already. You do, it's, you know, if the container that Lando is using for a particular service supports it, then it does. Lando doesn't build its own containers.(...) So it's, it's.
(...)
If the container supports it, it does that Lando 4 is also going to change and use all of the official Docker containers.
(...)
And as far as I know, those all, you know, these recent versions all support.
(...)
Apple. I'll just be happy if I can keep, like, I can stop getting the Docker update box. Like, if I can just keep Docker up to date, so it stops prompting me to update, that would be that would be a huge win for my productivity.
(...)
Yeah. And there's, there's, there's going to be some changes around testing, automated testing and making it easier to manually test things as well to hopefully and also possibly make it so that Lando doesn't expect a certain version of Docker so much. And that way, yeah, it shouldn't matter what version you're running most of the time. Hopefully.(...) It's hard because that Docker, they change things. And if you update, it can break stuff.
(...)
So, so a question I would have then,(...) I know, at least for myself, when I pick a tool and I start using it, and if I don't have a reason to change, I don't go looking for a reason to change.(...) Why would someone move to Lando over some other local development environment, whether that's something that's also Docker based or something that's not like a, like a man.
(...)
It's always been, I think, the customizability.(...) You can, it does so much, you can do so much, and that's, that's just going to get so much more powerful, you know, coming soon, that, you know, if you need that, if you want that, that's, you know, that's definitely a big selling point. And the hope is that with the, the opening things up, making it easier for contribution, that the feature set is going to grow significantly through, through third party plugins and contributed plugins. And just go, the hope is that it is just, it's going to do anything you need.(...) So,
(...)
It's interesting. It's interesting to ask that question, Andy, because recently we,(...) Nick and I have been working on a, with some other folks have been working on the new New England Drupal Camp website, the new New England Drupal Camp website. And I started it with Lando, because that's where, you know, to that, to that point where I'm like, I know Lando, I'm just going to go Lando. It's like easy. I used a recipe and we were off and running.
(...)
Then some development teams came in using Lando and then Nick actually converted it, converted it or added Ddev to it.
(...)
And when I, when I went back in there, I was having a hard time getting Lando to do what it was, was supposed to be doing after, after other teams had kind of developed, developed in there. And I just kind of switched over to Ddev and I was like, Ddev start and it just kind of worked. And I was like, Oh, all right, this is pretty easy. Like I kind of see the similarities.
(...)
So it's, it's interesting to try to draw those parallels because, you know, people, people aren't necessarily always, you know, trying the latest and greatest thing just because they're, they're, you know, sticking with what they know. So I'm curious about Lando adoption. I think the last time we had a Lando show, we had Mike on and he talked about kind of some explosive growth.
(...)
It's been a couple of years now and I think it's been pretty much on three, three X for that amount of time. I'm curious about growth and adoption of Lando. Are you still seeing kind of exponential growth? Has it leveled off? You know, how many people are using Lando? What do you, what do you think about that? So I don't have as much insight into the metrics as Mike would have, but anecdotally, it seems to still be growing. I do see some of those other tools, like you mentioned, the D-Dev sort of just worked, right? I do see a lot of adoption of those, but I think the adoption of these kinds of tools in general is growing still.(...) So they're going up and I think, I think with the next version of Lando, we're gonna, we're gonna, we're gonna cut into the market a bit. Yeah.(...) I mean, I think, I think you see, you do see these things as kind of like ebbs and flows, right? So like feels right now that like, you know, unfortunately Lando might be in like a little bit of a valley, right? But when Foro comes out, like, I think we may see maybe another peak where folks are like, oh, look at this. It's all, you know, it's pluggable and you can work with other back ends and like, it doesn't make my Mac burst into flames and like, you know, things like that. Like, we'll, we'll move people back in that, in that flow, I think. We're actually ending the show with two more listener questions, which is super exciting to me. This one's actually not for you, Aaron. It's actually for Nick.
(...)
Steven was actually wondering, Nick, you were using Lando, you were a Lando user for a long time. And then you switched to Ddev and it seems like you've never looked back. I'm wondering why you made that switch.(...) And if you'd ever maybe go back to using Lando. So I'm happy to kind of talk about why I'm in that switch and I'll give you some feedback, Aaron, of some of the things that if I were to switch back, I would, I would absolutely want to see in Lando. I will say I use Linux, which in my opinion is the correct operating system for developers to use. So a lot of this stuff didn't actually affect me, but probably the biggest reason I switched was a lot of my clients insist on using Mac.
(...)
And around the time that M1 came out, I mean, Mac had not to dive too far into the weeds, but Mac provides an additional two layers between the file system and Docker. And that's one of the reasons why Docker-based environments on Macs are slow. And that seemed to get a fair bit worse with M1, but M1 also provided mutagen support.
(...)
And so for a lot of my clients using Mac,(...) once that differentiator came, it made sense to look at it. So I kind of got tired of doing kind of Mac support just to kind of try to tweak the settings to get it a little bit more performant. And so that purely isn't a Lando thing. That's a Mac thing. But once mutagen support came out, I tested it and it worked for the clients that use Mac that had M1s. And I didn't, you know, I'm a solo freelancer. I didn't want to support both Lando and DDev, even though I know they're, you know, as long as you don't have them both running at the same time, they're compatible. So I just made the switch to DDev. Now that I've been using DDev for a couple of years, the things that I would love to see, aside from mutagen support,(...) DDev has a command for launch and launch-p and launch-m.
(...)
So with Lando, whenever I need to see PHP Mad Men, I either have to set up an alias myself or I have to kind of look at the info and find out what the port is and go directly to that port.(...) With DDev, if I want to see PHP Mad Men, I just type in DDev launch-p and it opens a browser with it. Or if I want to open mail hog it, it just opens it automatically.
(...)
So that kind of functionality where like out of the box, I can just launch a particular front end that I need to see. Like that's pretty handy. I use that fairly often. Xdebug. I know Xdebug is supported in Lando, but I found it was very inconsistent. It would occasionally just not work for weeks at a time and then it would start working again.
(...)
It's been consistent for DDev. And then finally, the one that you already mentioned, Aaron, is Docker updates.(...) I use Docker extensively outside of DDev for things and being locked to a specific version. I found there was also a complication on clients because I found, for example,(...) clients should not install Docker beforehand. They should install Lando and let Lando handle installing Docker, which I think for a lot of people was it convenient.
(...)
But as a tinker myself, I found that to be a pain point. But I mean, both are great. I mean, my main thing is you should not be running MAMP or WAMP. You know, Lando's a great tool. Whoa, whoa, whoa, whoa. If you want to run MAMP or WAMP, like that's your choice. It's your choice. I would say you'll get a huge amount of benefit for using a system like Lando or DDev or Doxel. You know, having a way to quickly restart or reset environments and import a fresh database or something. Or, you know, I think one thing that Lando does a little bit better than DDev is, and DDev does provide integrations with these tools. But I think the way the recipes work with like Pantheon or Platform or I assume Platform is not supported. It wasn't when I was using it about a year and a half ago.(...) That's the one I tried to use before I had to switch over to DDev in that example I gave earlier. So I don't know, maybe it was just user error. But anyway.
(...)
I think it's because you're probably using the Pantheon recipe and switching recipes is always more complex than starting with a recipe.(...) But anyway,(...) Lando's kind of the thinking behind the recipe system, I think makes those types of updates a little bit simpler. Although DDev supports all that and is documented. So it's not really a feature that Lando has that DDev doesn't. I think just the idea behind the recipes makes it a little bit clearer. But yeah, that's the main reason why I made the switch initially wasn't because Lando was missing something. It was that my clients insisted on using Max and the performance was significantly better. It always goes back to hating on Max for Nick. I don't know. Every show, we always come back to that one salient point.
(...)
It's definitely not hate. It's just that why wait 30 minutes for a process when it can take 45 seconds, right?(...) And I think Windows, especially with WSL 2, is similar performance to Linux nowadays. I think it's a little bit slower. To be fair, I have never waited 30 minutes for Lando on a Mac to do anything. Maybe 20 seconds or maybe 30 seconds or maybe even a minute if I'm installing a large site from the ground up.
(...)
Especially if it's moving to Apple Silicon. Just saying. Yeah.
(...)
Yeah, and I think a lot of those things are getting addressed in the new version of Lando. Some of the expectation is going to be that it will be through Contrib because one of the things...
(...)
The target audience isn't necessarily to someone who just wants to spin up a project to this one time and run a few things. It is more for a team that somebody sets it up for everyone else kind of situation.
(...)
But that, you know, that, like I said, Contrib things could easily make it to where there's a nice little package thing where you get all the cool little features that work great if you're a Drupal developer, you know, there'll be nothing stopping you from building that. And yeah, you know, what things like you mentioned, it's Docker and Mac working together is sort of a difficult thing. But, you know, anywhere that can be improved upon, it is getting improved upon in the new versions of things. So it's...
(...)
Yeah, I think a lot of what you said... All the things you said are definitely topics that are in discussion and being addressed.(...) And it's great because once 4.0 comes out and there's a, you know, kind of more of an open source contribution based structure, Nick can air his grievances and tickets and then fix them.
(...)
I don't have grievances.(...) I mean, I appreciate Lando. Lando is... So I don't know if you know, before I move on to the last question, Aaron, I don't know if you know this, but maybe six months before Lando came out, I built my own... Working with one of my clients, my own like Docker Compose wrapper toolset. And then, you know, because I was using Docker...(...) It's just a hipster moment. I was using Docker before school. No, but I had a particular client that had a few different environments. We needed some flexibility. So we built that system and we were talking about releasing it to the community and Lando came out. And I was like, well,(...) there's no need for us to release this. Lando does everything. Because one thing I hadn't built in was like traffic and kind of the routing stuff that was like the next task. I was like, you know, Lando already built it. It's already, you know, why not just use that and support that? And I used Lando for many years after that. But yeah, I know Lando was great.(...) It's just that, you know, I don't have a problem with Lando. I just reinstalled my computer and don't happen to have it anymore.(...) But yeah, I'm definitely looking forward to 4.0 and kind of seeing it's changed.(...) Oh, one thing that I do like that D-Dev does provide this, but I feel like Lando makes it...(...) I like the way Lando did it too, is the custom commands, like you mentioned, the build toolset. I find myself in Lando anytime I had to do something just writing a custom command. And you don't have to restart Lando for the custom command to take effect. So I found that at least I could clean and I enjoyed it. D-Dev does provide custom commands. You write them in Bash, so it's kind of the same thing. But I don't know, just something about the...(...) With D-Dev, you have to know what container you're running it on and put that there. Where with Lando, you just kind of define that in the single YAML place. And I kind of prefer that method, but that's something that I kind of miss.
(...)
Okay, so before... Definitely on my favorite features list. Yeah, it's awesome. It's one of the big things I miss. So we have a final listener question from Matthew.(...) He asks on Slack. He wants to know... He wants some advice from you maybe on how to best sell Lando to his team. So he uses Lando. The rest of his team doesn't use a Docker-based environment like this. Well, sorry, they use Docker, but they use a custom Docker environment. They don't use a, I guess, semi-managed Lando environment. And he's facing some pushback in trying to convince his team to use Lando. So he's curious if you have any specific feedback that can help give the benefits of a defined environment like Lando. I think the biggest thing, we were just talking about tooling,(...) being able to just...(...) Especially if you have specific instances where you can say, "Wow, wouldn't it be great if we had a command that did this and a command that did that?" And you probably already do, but they're in scripts that somebody has to go find and know how to run.
(...)
Now you can have this prepackaged thing that all of it is prepackaged. It's in Lando. You run Lando Start. You run your Lando Build or whatever it might be. I'd say if you could sell anything like that, then hey, you don't have to know about the scripts anymore. You just run your command.
(...)
And then another big thing is that you don't have to be technically savvy once you've done all that. So you can take somebody who's... They're a QA person that really is looking at the front end of your product.(...) They may not know how to really do anything on the back end, but you can still... You can expose some of these things that maybe were in scripts and make it easy for them. Hey, run Lando Start. Run this Lando Build command. And now you can do all your QA things or your project management. You can have other people work with it. It makes it even easier for them. I think those are probably the two big things that I typically run into. I think one thing that comes to my mind that listening to you, Aaron and Nick, talking about Lando or DDev, is with Lando, you just said it, with a Lando YAML file, I can put in a service for MailHog. I can put in a service for PHPMyAdmin. I can build a database server and I can say, "Hey, rebuild this," and it'll spin up all those environments using predefined smart defaults, if you will. And they're all interconnected. I can go and I can get from one to the other very easily. I don't necessarily have to take Docker files and move them around and wire them together and do all of that stuff. For me, that's a real big win as far as, "Hey, it's going to be a lot quicker for you to take this one Lando file, get Lando Start, and for all of those environments to be created and configured the way they are." I just thought of this. You also have the ability to mimic your production environment through your Lando configuration too. If you have a very specific production environment you want to make sure that you're testing for, you can duplicate that in your Lando configuration. Now granted, you could do that with Docker files, but again, I imagine there's probably a good amount of wiring that has to happen there.
(...)
That's it, too. The people that maintain those Docker setups,(...) a lot of that maintenance and whatnot is the wiring between it, the routing, things like that. That just comes with Lando. It's built in. Nobody has to maintain that anymore.
(...)
That's exactly what I was going to bring up, especially if you're adding a new service. Let's say you're adding Elasticsearch or something.
(...)
You just need to add the Elasticsearch container to Lando and the networking is handled. The shares are handled. The volumes are handled. You don't have to worry about exposing all that information to all the other containers that need to know about it. Whereas if you're managing a Docker Compose file yourself, you need to. Or worse yet, if you're really just building a monolith,(...) which I'm not saying that his team does this, but a lot of teams that manage their own Docker environment just install everything in one Docker container.
(...)
You're missing the true strength of Docker if you're doing that. Lando splits everything out for you automatically. That's also a lot of cases not really mimicking the development or production environments that you're living on either.(...) You're hosting providers and putting all the services in one box.
(...)
Well,(...) it depends how big the site is.(...) If you're using something like Aqua or Pantheon or Platform, they're generally doing container-based systems too.
(...)
Well, Aaron, thank you for joining us and giving this update on Lando. It's been a while since we've had a Lando member on to talk through it. Thank you for joining us. Thank you for having me. Great.
(...)
Do you have questions or feedback? Reach out to Talking Drupal on Twitter or the social network formerly known as Twitter with the handle Talking Drupal. Or by email with show at TalkingDrupal.com. You can connect with our hosts and other listeners on Drupal Slack in the Talking Drupal channel. You can promote your Drupal community event on Talking Drupal. Learn more at TalkingDrupal.com slash TD promo. Get the Talking Drupal newsletter to learn more about our guest hosts, show news, upcoming Drupal camps, local meetups, and much more. Sign up for the newsletter at TalkingDrupal.com slash newsletter.
(...)
And thank you, patrons, for supporting Talking Drupal. Your support is greatly appreciated. You can learn more about becoming a patron at TalkingDrupal.com and choose Become a Patron.
(...)
Okay, as we get ready to close out the show, Aaron, if our listeners had questions for you, comments or thoughts, what's the best way for them to get in touch with you? You can find me.(...) I'm on LinkedIn.(...) AaronFelede(...) I post some things on Twitter every once in a while. I'm sorry, the social media network formerly known as Twitter. It's a symbol now, I believe.
(...)
It's AaronFeledy there as well. No space. And then on Drupal Slack, Lando Slack, and anywhere else, I'm Arrow.(...) And Andy, how about you?
(...)
I'm Andy hyphenbloom in most places, and if the username doesn't allow hyphen, that's usually an underscore or two. I do still have a Twitter account. However, I have abandoned it for a few months now, and I'm mostly on the Drupal community, Mastodon instance.
(...)
And you can find me there at Andy underscore bloom.
(...)
John, how about you?
(...)
You can find me on all the major social networks and Mastodon and Drupal.org atJohnPicozzi And you can find out more about EPAM at epam.com.
(...)
And you can find me pretty much everywhereat Nicxvan
(...)
If you've enjoyed listening, we've enjoyed talking. Have a good one, everyone.
(...)
See you guys next week.(...) Bye.