Ben Ford drops details on how to make your voice heard and shares the numerous ways Puppet has enhanced its Developer Experience for the community.
Ben Ford explains the importance of content and why developer insights help to build stronger communities on this episode of Pulling the Strings podcast. He also provides details on a better Puppet Developer Kit (PDK) and improvements to the Puppet Forge.
Demetrius Malbrough [00:00:19] Hey, everyone, thanks for joining this episode of Pulling the Strings podcast powered by Puppet. I'm delighted to be your host. My name is Demetrius Malbrough and I'm on the product marketing team here at Puppet. I'm really excited today to talk with Ben Ford. And Ben is a product manager for the Forge and Content Ecosystem. Now, this is everything from Puppet supported modules to the tools and developer experience to build modules all the way to the Puppet Forge, which is our marketplace for sharing modules with each other. So, Ben, welcome on. How are you?
Ben Ford [00:01:03] I am doing great. It is a nice and beautiful spring day here in Portland.
Demetrius Malbrough [00:01:08] I love the sun and whenever the clouds roll in, I feel the same way as the weather. So let's have a sunny, sunny chat today around the developer experience. And the first question that I want to pose to you is, is kind of a softball, a toss up question. Let's start with the why. So why is content and also the developer experience so important?
Ben Ford [00:01:38] That's kind of funny that you call it a softball, because it totally is. It's like a softball answer. I can give you like a five word answer. But it's also we could spend two hours talking about why this is so important, because it's such a big concept, big idea. And it's really pretty simple, though. It's tools themselves aren't really a lot of use all by themselves. Like kind of a dated metaphor here. Look at like the VCRs, like nobody has a VCR. Like imagine like 20 years ago, right. Nobody had a VCR sitting on their entertainment center to just point at it and say, hey, look, look at my pretty VCR. Isn't that cool? It was all about what it let you do. Right? And there were lots of things you could do with it. You could go down to Blockbuster and get tapes and stick them in your VCR and play them. But you could also record your own. You could, like, lug around one of those big old beastly camcorders and record your home videos, your holidays or things like that. And you could play those as well. So this tool, the VCR itself, it was like the thing that it enabled wasn't itself. It was like a content enablement tool. And that's really what tools like Puppet and like pretty much anything that are in our ecosystem. You look at terraform, you look at you look at rundeck, you look at any of these other tools out there, it's like what they enable. The content that they enable is the thing that makes them so valuable.
Demetrius Malbrough [00:03:07] So the experience is I guess it encompasses a lot of things, right?
Ben Ford [00:03:12] Oh, absolutely. And like that metaphor that I gave you about the VCR, like, if you remember the first camcorders, they were huge. They probably weighed 20 pounds and they sat on your shoulder because they were so heavy that you couldn't carry them around. And not a lot of people had them because they were really annoying. They were real awkward and they were painful to use. But then as they evolved, they got smaller and smaller and they got lighter and lighter. And that experience of using the tool to generate content got better. And then everybody had them. Everybody was carrying them around. And that's kind of the same thing that we're doing with the developer experience right now. It's where we're taking that barrier to entry and making it lower, making it easier to get involved, easier to build content, increasing like the user delight, making it instead of a chore, something fun that you could do to generate content.
Demetrius Malbrough [00:04:01] Now, just going a little bit deeper on improving the developer experience. So does that mean making tools and things easier for people to get involved with, making it less effort for them to actually write code or just do something that's meaningful as far as within the community?
Ben Ford [00:04:24] Yeah, and it's kind of broad. It's like some of the specific things that we're doing for a developer experience like they're very concrete things, like we're increasing the speed of the PDK. That seems like a really weird thing to say, except when you have a command line tool that's more responsive and you can type a thing and hit enter and it does it like that, instead of like you having to wait and watch it work and then finally spit out something, it's like that makes it feel like a more natural part of your workflow. And that's one of the things that we're doing, is that the next iteration of the PDK is going to be a much faster command line tool, very, very snappy, very quick, very easy to use, and also goes all the way up to, like, stuff on the Forge, just like right now the Forge is kind of like a shelf at Home Depot where you can go in and you pull things off of it, use them. But there's not really a whole lot of instructions. There's not a lot of guidance about how to use the things. And so that's what we're doing, is we're building in a little bit more guidance so that as you go look at this content, you have a better idea of what you can do with it, how you can use it, how you can stack it together with other parts to build something that's greater than the sum total.
Demetrius Malbrough [00:05:33] And so being just for maybe we have a newbie listener, maybe a one on one version on what the PDK is and just a little information about that.
Ben Ford [00:05:43] I guess you're right. I have been using the phrase PDK, just like everybody was expected to know what that is. But the PDK is the Puppet Developer Kit. It is a command line tool that is used to generate Puppet modules and generate content within the Puppet modules. And it's also used by our vs code plug ins. So when you when you use vs code, did you tell it to make a new Puppet module or make a new Puppet class or function or something, it actually uses PDK on the back end to do all of that work.
Demetrius Malbrough [00:06:12] So more around the developer experience. And so what are some of the ways that someone could possibly get involved and participate in the developer community?
Ben Ford [00:06:24] Oh, absolutely. We are a super welcoming community. We like we've got a Slack that people can come participate. And there's no real barrier to entry. Like if you're a newbie, you just heard about Puppet maybe want a little bit of advice or some guidance or something. Just hop on in and start talking with people. If you're a Puppet old timer and you're building your own modules and maybe you might want to talk advanced architecture or development patterns or something with your peers, you can totally do that, too. If you're using a Puppet module and you're like, wait a minute, there's something wrong with this module. I need to talk with somebody to get it fixed. There's spaces in there for it, too. You get to that by joining at Slack.Puppet.com. Pretty easy to to do. Then they're a bunch of channels in there. There's a hashtag Puppet for Forge modules and there's even an office hour schedule in there so that like a Puppet developer, like an engineer, will be there to answer questions on the schedule.
Demetrius Malbrough [00:07:27] And what is your coolest module that either you've written or someone someone in the community that, you know, have written? Do you have any favorite module? Maybe like a one of the latest ones, something that's not too old, though?
Ben Ford [00:07:43] Well, I'll tell you, the one that I'm excited about is actually one of my modules. It's been around for a while because I used it to add the ability to pass secrets around in the catalogs, way, way, way, way back in Puppet for timeline when that functionality didn't exist in native Puppet. What it does is it lets you put a secret into the catalog and encrypt it with the servers SSL certificate so that even if somebody were to intercept the catalog and look at it there wouldn't be able to decrypt it, it would just be a blob of text. Then on the agent side, the agent would take that catalog and then use its own certificate, SSL certificate to decrypt that and manage it. And one of the things that I like about it so much is that as we started adding more functionality into Puppet and we added the ability to do deferred functions, which are Puppet functions that run during the agent runtime instead of during compilation, I was able to like lift and shift a lot of that functionality into a different function so that it actually ran properly on the agent side. And then you could use it in all kinds of different contexts. So you could use it in generating a template. You could use it to pass a parameter to a resource like a password or something.
Demetrius Malbrough [00:09:07] Cool, and I'm going to put you on the spot again. So maybe what about, like, your favorite vox, Vox Pupuli?
Ben Ford [00:09:18] My favorite module that they run? Actually, I'm going to shift a little bit. I'm going to say it's my favorite tool that they build, because the Vox Pupuli Leadership Committee is building a tool that allows them to effectively manage a whole ton of modules. And so what it'll do is, is everything that's been added into its organization, it'll tell you if there are like if there are modules that don't support the current Puppet version or if there are modules that support out of date CentOS versions of things like that, or if they're modules that have had commits made to their repositories, but they haven't been pushed up to the Forge. It's basically a way of keeping track of all of the Puppet modules that you're working on that have things that you need to do, like things that you need to do to cultivate them. So that's my favorite tool that they have. It's called Tasks. If you go to their GitHub organization and just search for Tasks, you'll find it.
Demetrius Malbrough [00:10:25] Yeah. Shout out to Vox. So someone who may be interested in being a part of the community or the ecosystem. Now there's no special test or certain level that they have to be at. Like if you talk in college once again, one on one, two on one, three on one.
Ben Ford [00:10:43] It can even be ninety one, we'll welcome anybody to the community as long as you participate and are respectful to another, we will welcome anybody to the community
Demetrius Malbrough [00:10:58] So is there a way that maybe whoever wants to join and be a part of it is a way that they could follow some of the news about what's happening within the ecosystem?
Ben Ford [00:11:10] Yeah, so we've had an engineering blog going for about a year now, and we're growing its adoption within the company. So right now, if you go to Dev.to/Puppet, you'll start seeing a mix of of content from different parts of the company. It's mostly pretty engineering focused. There's some blogs from people in our internal dev services about things that they're working on. There's some sales engineers writing blogs about like tutorials and things that they have. But the thing that you'll see the most of is, is actually just updates and like new releases and exciting things going on in the ecosystem. So there's a post at least once a week from Eco-System there. That's Dev.to/Puppet.
Demetrius Malbrough [00:12:19] So also more on individuals possibly joining and being a part of the community. What if people want to share some of their own news or maybe even a tutorial for some of the newbies or just, you know, to dumb things down and make it a lot simpler for things like myself?
Ben Ford [00:12:39] I would love it if people were sharing content and you can actually get into some of our Dev.to space and everything by publishing to the Puppet hashtag on Dev.to Just like your own content will show up. But if you look at the Puppet.com website and you drop down that tab underneath Engage, you'll see there is an entry there called Make Your Voice Heard, and that talks about several ways you can get involved, several ways that you can share content so you can even get published to our own Puppet.com blog or it'll link out to other ways that you can contribute content and modules and pull requests and all kinds of stuff, and you can even submit to be on this very own podcast.
Demetrius Malbrough [00:13:27] Oh yeah, we definitely need more and lively people on. And I'm not saying that you're not laughing and you're not lively. You're great.
[00:13:37] I'm trying, it's kind of like a dull moment here, but I'm really trying.
Demetrius Malbrough [00:13:44] I just wish everyone could see the color of Ben's hair right now and if you know Ben, he changes the color of his hair often. So I'm not sure what the frequency is. But maybe you want to tell us the frequency or why do you change the color of your hair, off topic?
Ben Ford [00:14:00] Oh, that's an easy one. It's just when I get bored, unfortunately, that happens a lot.
Demetrius Malbrough [00:14:05] OK, all right. All right. So also carrying on here. So I also hear that you've got some some big plans for the PDK, the Puppet Development Kit. Can you tell us more about that?
Ben Ford [00:14:21] Well, there are some things that I can talk about. A lot of it is still kind of in the planning stages and a little bit less defined. But there are some things that are going on that are going to be really exciting. Long time users of the PDK will remember that there's the ability to try out different versions of Puppet. So you can say "test this module under Puppet five, under Puppet six or whatever." And at some point we realize that, hey, that utility is really, really cool, really useful. So instead of that being part of the PDK, we're extracting that out to be its own kind of a standalone Puppet version switcher. So its own standalone tool, which means that other tools can kind of inherent and use that. So, like, imagine running once-over, for example, that was one of the requests that we had is incorporate once-over into the PDK. And a lot of the reason for that was the ability to use different Puppet versions. But this tool will let you basically run anything using different Puppet versions. It's pretty cool. And as we're doing that, we're building in the ability to install different versions of Puppet. So you'll be able to like, say, I want to use this tool, but I want to have Puppet Version 6.2 and Puppet version 7.1. And I got to keep a 5.5 around because I've got some old content there and you can pick out these different versions and select them and install them, which means that we can reduce the size of the PDK itself. So right now, ships with a whole bunch of versions of Puppet. Yeah, the PDK in the future won't ship with all those versions of Puppet, but it'll let you pick out the ones that you want to install. So that's pretty cool. And then we're also working on some improvements to the template system. So instead of the current PDK template repository, there'll be ways to kind of combine and make customizations and have Puppet modules that don't have every single configuration file under the sun included. That's something that people have been asking for. And like I've mentioned before, it's going to be really, really fast. Like right now to generate a new Puppet module is like by the time your finger is up off of the return key, it's already done. And that's astounding. That that's a huge, huge difference.
Demetrius Malbrough [00:16:54] New, enhanced and streamlined. I like it. All right, let's talk a little bit about the Forge, my favorite topic, the Forge where everything lives. What are some of the improvements in flight for the Forge bin? Tell us. We would like to know.
Ben Ford [00:17:11] There's actually quite a bit happening. The library of content up on the Forge is very, very large, but it's all in different stages of quality. It's like some of it has some of the modules up there haven't been looked at for a while. Some of the modules are somebody who kind of played around and published a module and then never really finished it. And then some of the modules are really, really, really good. So what we're doing is making some changes that will reduce the number of modules you see, but instead bubble up the higher quality ones. So we're hiding deprecated modules by default. So when you do a Puppet search now, instead of having all deprecated modules all mixed in with the search results, you just won't see them unless you choose to go look at the deprecated modules. And then we're working on ways to kind of auto deprecate content. Like if you made a module that did a thing and got it halfway done and you haven't touched it since 2012, our tool is going to identify that and just mark it deprecated automatically and there'll be ways to opt out if you're still maintaining it. So you get an email and a link to click and various other things. But it's all designed around getting the average quality of the content to be much, much higher. So when you go look and you go find some Forge content, it'll be easier to see what's good, easier to see that the quality and most of what you see is going to be very high quality. And then along with that, the quality scores, we're working on ways to improve them and build better quality scores for you that are a little bit more relevant and extract them out a little bit so that they can be run locally, built right into the PDK. So as part of building your Puppet module, it'll kind of give you a preview and tell you what your quality scores will be before you even publish them to the Forge.
Demetrius Malbrough [00:19:04] Can you refresh my memory on how that quality score is increased?
Ben Ford [00:19:09] Sure. So basically the quality score is done by evaluating several factors like which versions of Puppet do you support, running it through some link type checks that look at like syntax and style and it'll validate that you follow the style guide and other things like that. It'll validate that the metadata attached to your file, to your module is appropriate and correct. And any of these things that show warnings, it'll drop points off your quality score. So just improving those, just making sure that your link checks all pass, making sure that your metadata is all complete and filled out and has the right dependencies. Like, for example, if you just say you're Puppet module runs on version 3.x plus, we're going to ding you because you need to have like a higher value, say that I have tested this from 3 to 6, or 3 to 7 or whatever and things like that.
Demetrius Malbrough [00:20:08] OK, let's keep those quality scores up, everyone. Also really maybe rolling into one more question here before we close out. I also saw something called the Trusted Contributors program. You mind telling us how that works?
Ben Ford [00:20:25] Oh, absolutely. That's a really good one. One of the interesting things about a Puppet module is that there are two kinds of expertize required. You have to be good at writing Puppet code and building high quality Puppet modules and knowing how Puppet works and how to like construct, how to architect a good quality Puppet module. But then there's the expertize of knowing that thing that you're actually managing and like knowing how it works and knowing what the like the idiomatic usage patterns are, things like that. Like say for example, if you're managing IAS, like I can write a really great Puppet module to manage IAS, I guess because I know where the configuration files are. I know what the settings are. I know how to write good Puppet code, but because I've never done it myself, I don't have the first clue how people actually use IAS. The people who use it are the ones who know that. And so what the Trusted Contributors program does is it invites people who are known to us, who are known to the community, who have demonstrated their interest like long-term interest and ability and subject matter expertize to kind of share in the maintenance of that particular module. So a community member who knows IAS really well, because they use it inside and out and they use our Puppet module to manage it, they're probably thinking if this module only did this one thing. Yeah, well, now we're giving them that ability. And it's not just the ability to make a pull request, but it's the ability to kind of direct the future of where this module goes. Instead of just saying here's a PR to fix a thing, they can say, hey, what the way that this is designed we need to shift it and move it the other way, or we need to spend more time working on a certain aspect of the way the tool works, because that's how people who actually use that technology expect to work. And so it kind of gives them the ability to put more direction into where these modules are. And so effectively, it's giving community members a partial ownership over our supported modules and they'll have the ability to, like, review and merge pull requests and help us shepherd out a releases of those modules.
Demetrius Malbrough [00:22:35] OK, awesome. Also rolling into the the closing and outro here. Is there anything else that we missed? Anything important that you would like to share? And also please make sure you provide your social media handles where listeners can actually follow you.
Ben Ford [00:22:58] Absolutely. So most of the things that I've talked about, it's you'll be able to read about it on the Puppet.com website. If you look at Puppet.com/ecosystem, they'll be sections there, we'll talk about like the Forge developer experience. There's links to get the PDK, to get the vs code extension and information about the Trusted Contributors program and various other things. And you'll find that also by pulling down the tab, the navigation tab and looking under Platform. But but yeah, you'll find everything there Puppet.com/ecosystem. And then my handle everywhere is just Binford2k. If you participate in the Slack, you've probably seen me around there. I talk way too much, but pretty much everywhere in the Puppet, Slack, Twitter, other spaces. And then like maybe even if we ever get to go back to conferences again. I'll be there. That's me. And that's the Puppet Developer Experience program. And I welcome any contributions or participation and I am doing my best to make the space more welcoming and more productive for everybody here.
Demetrius Malbrough [00:24:09] All right. That is at @binford2k. So we're looking for at least 15,000 more followers to come Ben's way within the next three weeks. So make sure everyone goes and follows. Then we might have a surprise
Ben Ford [00:24:26] Going for the little blue blue checkmark, right?
Demetrius Malbrough [00:24:28] Oh, yeah. Certified, baby.
Ben Ford [00:24:32] That's all due to you man. I will remember you.
Demetrius Malbrough [00:24:36] I wish, but yeah, I always enjoy these conversations and I continue to be astounded by the level of knowledge that you have on Puppet and everything that you are doing for the community is just truly awesome. So thank you for being on Pulling the Strings. And I would like to thank you for sharing with us on Pulling the Strings powered by Puppet.