 Welcome to documentation office hours. It's the 20th of January 2022. We abide by the Jenkins code of conduct. Thanks for being here. So today's agenda items I've got, we have news the weekly change log and weekly release which has some special cases going on for it. Open PRs. The contribute on next steps and improve a plugin tutorial are all possible topics any other topics that we want to add to the list. That looks good to me. All right, so. I see now thanks for joining. I see now. So, in terms of end of Java eight end of life, I've set the goal to have the. Jenkins enhancement proposal drafted and ready to go before the next meeting of the platform sync group, which is next Friday. I may ask for review help at Monday's docs office hours and it next Thursday's docs office arrows I'll let you know. I assume you're all willing to read it and comment. Even if only on whatever aspects are comfortable for you. Absolutely. And Internet Explorer end of life we're not going to use a Jenkins enhancement proposal for it. We'll just plan to drop support from weekly in the next two to three weeks. And then it will be the removal of support will be visible in the June LTS. So if you're using Internet Explorer 11 on Windows, please switch to Microsoft Edge. If you don't have Microsoft Edge, please switch to a different operating system so that you can get a web browser. Use use a modern web browser weekly changelog the weekly release this week has been delayed. I'm going to move to a repository outage. Now the, we've got a failing test that is further delaying the release, the release team is working on an infrastructure team is working on it now. So Jenkins 2.331 is still coming is still arriving it's not yet arrived. So let's move on to the next topic then open PR is this is the fun one. All right, so. Meg, any order you would like us to attack these. Can I add a topic. Sure. Get pod. So, I and Elizabeth, we're able to success successfully set it up. And beauty Jenkins projects. That's great. Yeah, so I just wanted to mention a couple of things that I noticed while setting it up. So, this is not compulsory, but to be able to get the green gift pod icon that we saw while your mark was presenting. I had to install a gift pod browser extension. I'm not sure what to do that. Sorry. Oh, that's great. Don't let the baby's making the baby's noise is not a problem. Keep going. Yeah, sorry about that. So, it's not compulsory. So what the, what the extension does is I'm normally for you to be able to access your workspace what you put those is that it adds. Your normal github URL with a github URL. So, for instance, you have something like HTTPS. I think github.io slash ash, then followed by the github URL. So what that button does is that it just does that for you and opens your workspace in the new browser tab. It does. So it's not compulsory that you have that but for ease of use, you can add browser extension that adds that button for you so it does it automatically. I think there is another alternative to adding the to adding the browser extension but I didn't go that route because it looked much longer. So I haven't tested that. Then another thing is if you want to run the Jenkins project, you have to ensure that your fork is updated. Because I think one mistake I made before while I when I started using github was I didn't pull the recent changes from Jenkins master. So when I tried to do make one I was having some errors I think probably because the github file that wasn't on my own branch or my own fork. So, but after I pulled the changes from upstream, everything worked perfectly. And then the last thing is for you to be able to push changes and pull changes, you need to grant github the necessary permissions on the settings page for you to be able to push or pull changes using your workspace on github. So, yeah, I think for now. Those are the three things I've noticed up to the point I haven't yet done any changes or done any work or open the pull request. So maybe I'm a notice or that things. So yeah, that's that's it. Excellent. Thank you, Zina. That's great. Okay, so the way I interpreted then the get pod button turned out to not be required. But it is crucial that you update your fork from the upstream. So that that magical button and I need to go check that mine is this one is the one I'm used to using where I go get get hub and then I look at Jenkins.io come on, come on. Here we go. Not Jenkins bugs but that's close enough Jenkins.io. And then I click the button here that says fetch upstream and it will tell me oh and one behind so then I click that button and now it's up to date. Yep. Excellent. Okay, and there are command line ways to do that as well but that UI way is easy enough. Okay, so and and when you did that you said make run was then passing for you when it had been failing before. Yeah, yeah, exactly. Excellent. Great. Very, very good. Thank you. Okay. Now on this one. I'm not sure I understand the get pod permission. So when you say the settings pages that my settings like here. Yeah, on this on this board. On get pod settings. Yes. Okay, so my settings here. And settings pages right there. Yeah, so integrations. Yeah, get hub. Okay, and this was the thing that was important. Yeah. Okay, so you have to do this for you to be able to push any changes or to push any changes to your fork otherwise you just have read permissions. Interesting. Okay, thank you. And, and now that did not. Yeah, so in this case, I at least I granted it only public repository permissions. So it can't even see my private repositories and I wanted that because my private repositories maybe sensitive. Okay, good. Excellent. Anything else you wanted to share on the get pod experience. No, nothing else. Okay. So I'm going to see the video on community Jenkins.io. And I need to paste that just to be sure that we've got a reference to it. Okay. It is using get pod.io for faster development this way. Okay. Excellent. Thank you very much, Elizabeth. Thank you very much. See now both of you glad that you're able to make it work. That's great. Yeah, but otherwise it, it was really great because I think I was able to set it open like less than 15 minutes. Yeah, it didn't take so much time. Yeah, it didn't take so much time it was really easy to figure out so I think it's great. Elizabeth in particular, I assume you may be in an area where internet performance may not be as fast as it is for Zenab in the UK where she's at, was your perception that it performs reasonably did it feel fast enough for you. Yes, it did actually. It felt faster for me because I changed my internet plan yesterday after that account I had during the last call so I had to change it to something else. So it's better now, it's better. Very good. All right, so that's that's because one of one of the worries for me for the contributon is is not everyone who's in the contributon may have reliable internet all the time. But but it sounds like web browsing was comfortable for you and and doing development over the browser worked well enough. Very good. Very good. All right, excellent. Thank you. So then we may we may want to continue that I wonder now let me make a note to myself. Should we consider the developer video series that uses get pod as pre work pre study for she code Africa contributon participants. So we've got a we've got a video series that includes doing many operations, even on get plug on Jenkins plugins not just on the Jenkins doc site using get pod and so it uses get pod in many other ways to do development without requiring a local installation. Good. Okay. Let's open question then. Excellent. Thank you. So about PRS. Okay. This is about issues anyway issue I saw a good so I was trying to kind of like test out, you know, working on opening a PR using keep pod so I saw an issue on Jenkins.io that I wanted to ask about because I wasn't really sure. The full details of the issue I wanted to work on it. Shall we look at it. Yes, please. Okay, so let's go to one I saw that nobody had picked up the only good first issue I saw that nobody had picked up. Okay. So you're looking for a good first issue. Yes. All right. So, yeah, the second one. Oh, good. Okay. Yeah. All right. And so your question probably this one I'm, I'm a little fearful that making it a good first issue may have been misleading but let's, let's take a look at it together and do some quick review of what needs to happen here. Yeah. Okay, so, so first, this says the Jenkins wiki was made read only in October 2019 that is absolutely correct. It should probably be extended to say the Jenkins wiki was, and I'm going to open up the tab to show the page the Jenkins wiki server was attacked in September of 2021. The attack did enough damage to it that we decided not to bring it back online. See if I can find that where is it September. Ah, here it is project. The Confluence instance was attacked so in addition to now today it says hey it was read only in 2019. Now, because of this attack it's just a static website. It's not even a Confluence server at all. Okay. So update so you're what you're thinking to do is update the wiki conversion docs and, and this is a great one to do because it very much needs to be done so the wiki attacked in 2021. And the attack. We couldn't be confident that it was not somehow damaged so we never brought it back online it's now back as back as a static as static web pages. All right so so that's the early and now, whoops, now migrating from wiki to GitHub. No longer requires so document migration, this portion of. Let's see how to let's talk through this okay. Yes, this is plug in documentation. Yeah plug in wiki pages okay. So for plug in wiki pages. It's changed dramatically now in that there is a plug in site. plug in stash. There it is. Where the translation has already been performed. So, so what's happened here is the old instructions said things like hey, run this with Jenkins wiki exporter, and let it do the translation for you will this entire step. The manual equivalent, no longer needed, because the translation of every plug in wiki page has been done and is now stored on this, this GitHub repository. Okay. So we can delete these two sections completely, because they don't make any sense we just grab the changes from from this already translated file so let's let's talk through it so then the conversion of plug in pages is already started. Rather than finished. Because there's inevitably changes that are needed in order to make it make it all the way to done. Okay, so for example let's let's pick a plug in that we might let's see what's one that the easy way to find a plug in to translate is still through the Jenkins wiki exporter service. What we do here is we click the progress link, and it will tell us a list of plugins that have not yet been translated. So as we scroll down here. Okay and PR merge there's not anything that we can do as writers. Here we go the ansible plug in. And unfortunately what we're going to see is that the whole request submitted proposing to fix its documentation, because I submitted it. So, so we keep looking down groovy post build is the next one on the list so let's look at it. And so what I did was I opened. I opened the web page for from this hyperlink, it takes me to this page and then I go to this GitHub link. And now we see here. Okay, there is no me file. So there's, there's definitely no documentation for it. So now where do we find the documentation for the groovy post build plugin. If we take that text and go over here to the GitHub repository. It has the translated repository goes in a directory like that. So here is the existing groovy post build plugin translated already into markdown. What you what the goal then is to take this already and put it in the read me in a read me filing. Exactly. So, including the pictures, including everything so so it's all there. And then the activity is convert from this format where what you see is a read me md and a doc slash images directory. It needs to be converted and copied into the destination plug in wiki page. Did you say converted. Yeah converted is the wrong way copied is a better word isn't okay okay because there's there's no conversion to be done as far as I can tell it's this markdown file is ready to be placed there now you may find as you read it that there are some errors that should be corrected or you may find spelling errors you may find places where, for instance, this thing should probably be in a source code font. Now those kinds of things you could do or choose not to do, but, but this is already an excellent start so you don't have to. If you do run any conversion steps yourself someone's already run the conversion steps. Okay, so now the process of the wiki migration would be okay from the wiki exporter check, you know, what's if the documentation has been moved or not, right. So if it has not. If it has not click okay you click on it go to the GitHub page check if there is document there's a read me file with the documentation, if not, then you go to the repository we just seen we just saw now what's what's the title of the repository. And wiki docs to search for that plugin. Once you find it, you copy the documentation in the read me dot a read me file there and the images and move it to the plugin to the plugin repository, if I'm correct. That's correct. So that's what we are replacing the documentation in that page weeks right now. That's correct right exactly. Okay, okay, okay. And now this is one I would, I would think that make me guide us here and say, Hey, you know what the images could also be check that the images are reasonably current. The reason I say that is UI changes have happened. Okay, but more UI changes are happening in in March 2022 LTS reviews so worrying too much about this is maybe premature just be aware if the if the images have words like Hudson in them. Okay, that's a really old image. If the event if it isn't super old then you probably just leave it and we wait until the, the latest UI changes are out. All right. Great. Excellent. Okay. Okay. Elizabeth you had warned that you might need to drop off. Hopefully did we meet the needs that you had. Thank you. I was just going to join with my second device. Well, I'll be here too. And you are you are perfectly welcome to go to your business meeting or your team other meeting that's, you can look at the recording later this will be available as a recording as well. Thank you very much. Thank you. Thanks for joining us. All right. Bye. So, Z enough anything else on the. Okay, great. Yeah. All right. So, if you could assign that to me, or is there a way I can do it myself. I don't think you can but since you're working on it. Let's assign you. Let's see. No. Exactly. Got it. Oops. Okay, so just a minute. I have to. I need to mention you first. Wants to work on this. And the way you do that is you just say in a comment, Hey, I want to work on it, but now it will allow me to. No, maybe not. You may have to, you may have to mention in a comment there, if you'll just put a comment on that issue, issue, then I'll see if I can assign it. No. And while we're here, I'm going to put a link. Put this material in there. In hopes it helps. No, that's not right. It's got about hash marks. Right. Remember. There we go. Okay. And Z now I don't see a comment from you yet. Yeah, I'm trying to sign in. Ah, okay, got it. With kitchen code and all those. Welcome to two factor authentication. Congratulations. We have made sure that you are you because you both know something and have something. Trying to find the issue. Yes. Okay. Oh, like. I've dropped the comments. Oh, good. Very good. All right, so let me go find it. And it was where issues. Oh, we said it was good first issue. So there it is. And let's assign. There we go. Okay. It's all yours. All right. Thank you. Thanks for being willing. Look forward to it. Okay. Onward to open PRs. Meg, you ready. You can hear me better that way. We want to do these or do we want to move on to a she code Africa. Or. Planning while everybody's here. Good question. So I still have not published. I have not published the list of ideas we gathered from, from the last time. And so I'm going to do that. If there are additional ideas, people have, we can certainly capture them. Cause this was from the meeting that Zainab was not in, right? No, I think actually, well, let's, let's test it. Zeno. Would you be okay if we spend a few minutes on she code Africa contribute on. Okay. So here's, here's, we had a session on Monday and talked about possible ideas. For projects. So inclusive naming, correcting the words master slave, whitelist, blacklist. That one you had already confirmed and pipeline help. We tried last year and not a big deal. Test automation. I think I had discussed that with you and you thought that would be okay. We've gone through, we've gone through all this and the last meeting. Okay. So the others, the others you'd seen like multiple tutorials, those you'd seen, we've discussed before and you thought they were okay. Yes. Okay. Good. All right. Okay. So then, then I think we covered the, the she code Africa topic and we're back to open PRs. Okay. Do you want one that's a master? Do you want one that's cleaner? One that I just did this week. Okay. So let's take the clean, one of the cleaner ones. Okay. Go to open PRs and you'll. Okay. I started to do something quick and I slipped into a rabbit hole and I think I'm trying to slip back out because this is in your. Sorry, I'm going to have to drop off now and also. No problems, you know, thank you. We're going to go ahead and do PR review again. Thank you for being here. All right. Thank you. Bye. Bye. Wonderful. 4832, I believe clarify use of Maven bomb. Okay. Yeah, Monday. I thought I'll just write up this quick little thing. Because I thought the writing was kind of appalling. Okay. All right. So, and so the ideas here is let's review and now. Tim hasn't given is okay yet, but let's, let's do. I do not. And it's sort of, I'd like to see what you think of it. Cause I didn't. That wasn't one that was easy for me to action on. Okay. Sort of, you know, what, what can we assume that people know? Cause there's a lot of stuff that I don't know that the user might know. So. Okay. So are you okay if I just read through it together and let's. That would be lovely. Okay. Good. All right. So. So each of the plugins frequently have dependencies on specific versions of libraries and other plugins, each of which is versioned independently. Each plugin may have dependencies of its own. And different versions of different libraries and plugins may not be compatible with each other. Moreover, the dependencies can change with each release. So managing these dependencies manually can be difficult and time consuming. Okay. I think that's an adequate statement. Okay. So now here we go. Jenkins core bomb. Since Jenkins some, since some version, Jenkins core provides a. Bill of materials that centrally. Okay. So, so I wouldn't. Right. It's moved. I would not. Oh, it's moved. Okay. So you moved it someplace else. Yeah, it's down below. Okay. Good. All right. So. Oh, I see. Okay. So it's. And what it is. What it is. What it is. Oh, you know what? You might want to look at the preview. Yeah. Let's, let's do the preview. That's a good plan. So hang on just a minute. Because what I looked at before it was dependency management. Then we had a subsection. That was called the bomb. And that was where you got the error message. It was, you know, reading it. It took me. Trying to figure out what's going on. So I tried to restructure it a little bit and added some information and. Yeah. Right. So let's, let's look at this for dependency management. Okay. So dependency management. All right. Okay. So. The plug-ins frequently. Okay. So this. And, and wasn't this previously below it. Yes. That was, that was under the error message was under the header of Jenkins bomb. Okay. So. So let's go, let's go look. It will help me just to have my brain around. All right. So here is. No. Okay. So, oh, oh, I see. Right. Got it. Okay. So previously there was a section titled Jenkins core bomb or core bill of materials. And. And it said, there's this bomb. And here's the error message. If you have a dependency management problem. Right. And that, that part, I think I see your, your logic and saying, Hey, the error message thing is, is. Yeah, it may be related to that, but really the concepts around the core bill of materials are broader than just, you could have a, a. An upper balanced dependency problem. Right. Okay. So. Well, and as long as, I mean, we, if we could be. There's also the depend about in here. So this whole page is not just about the bomb. We could rename it as bomb, but it dependency management is the issue. Well, and, and I, and, and I like. So what Tim noted is there are two, two forms. There's the plugin bill of materials. And the core bill of materials and they're different things. Right. So, so we need both of them here. So. Is this is what was described as the core bill of materials before right and we could, we could expand the, this, this, but rather than calling it a patchy maven. I think I would stay with Jenkins core bill of materials. Okay. All right. So let, well, and here, let's just make the. I put that yet. Yeah. I, I, that was a writer make, making trouble. Well, well, just does that make sense to you if it's. Right. Yes. Yes. This is the bill of materials and we'll say underneath it, that this is only for if you're developing with Maven. Right. Yeah. Well, yeah. So in the body text. And we certainly should say it is an, it is an Apache Maven bill of materials. Right. Because this, this link is a good one to say, Oh, what is a bill of materials? Well, here you click this to find out. Right. But, but the fact that it's the bill of materials is Jenkins core. And Jenkins core is, is you get it. By using the current Maven parent, parent, the current parent palm. And that's quite different from what you have to do. Oh, no, no, no, no, no, no, look, okay. All right. So this, this new text is mixing two things. All right. So this is saying to use the Jenkins core bomb, but then it gives instructions. That show you how to use the plugin bomb. Okay. So we've got to split that back out. Okay. So we didn't have instructions before. Got it. Okay. So it's, so I made that up. And so, you know, we're in trouble right. Got it. All right. Excellent. Well, so, but, but I think, I think this is good because what we should do is we've got two sections. I think we need two sections. One on the core bill of materials, which will just say use the most recent parent palm. Okay. And now does everybody just know what that is? It's not, I wanted to link to something and I couldn't figure out what it could link to. Good. Good. So, so let's, let's, let's, let's see how do we, how about. Maven was there before that's the only part of this that was there before, and it didn't make sense before. Let's see if, if we've got, if Maven has, yes, here we go. I'm not sure I would rather prefer. Here it is. So yes, we've got it. Very good. All right. And we've got a page in our world that talks about how to do this. So this is, this is really good because it also has more explanation on what happens here with, with require upper bounds and transitive dependencies and things like that. So this is, yes, excellent. Okay. So what we've got is. So can you give me a suggestion that makes that parent palm reference a link to this? Yes, yes, absolutely. Let's go in and do, let's go in and do some. Well, do you, do you mind if I, if I make my life easier and craft them in my text editor? Not at all. Okay. So I'm going to make the text bigger so it's readable, it's just easier for me when we're doing these sort of sort of larger edits. If I, okay, is that text readable? Very readable. Yes. Okay, great. All right. So, yeah, the GitHub editor gets tedious very quickly. Right, right. Well, and, and I don't know that there's an awful lot of benefit to you to having it all come in as, as, as suggestions, but this, this is going to be fairly, fairly large in terms of moving blocks of text around. Right. Yeah. Sorry. What was that? Oh, I said, you're just going to fix it. You're going to. I, that's what I was going to do. Assuming you're okay with that. Absolutely. Okay. So what I do is I check out that branch, get merge master. Okay. All right. So we're up to date with master. And that noise tells me that you need to do a, you need to remember next time you interact with your fork on GitHub. Don't forget to do this action where you go to the code page. We're talking about it. It's like, because I, I was having weird stuff with make run last night. Ah, okay. Good. Oh yeah, that's why I knew that. Right. And so just, just be sure you do the fetch upstream thing. Great. Okay. So then. All right. So now what I've done is I've, and I need to see which files have been changed. Okay. So this is the file that's changed. Good. Okay. So we'll put that in the background. And this is the file that we, we want to edit. We're going to do some, some modifications to it. Yeah. So first I want to see what master. Okay. So, okay. So the pre okay. This text, I like a lot. Okay. But I don't want to give up. The Jenkins core bomb thing. So I'm going to temporarily. Bring that back. And we'll take out. All right. So. So brought back Jenkins core bomb. Keep your improved phrasing there. Okay. So now this is where we can get. Benefit from linking to the text that you had provided here. Right. Because this was one of the crucial things here was. Okay. Why do you want that before the error messages? Oh, oh, good question. That was part of it. So I wanted to, at the beginning, I wanted to say. This is a. Not a thing to do manually. And here's what happens if you've got a problem. The two solutions, because right now we've got two solutions, right? No, no, there's, there's actually, well. If I'm not doing Maven. The bomb doesn't be no good. If you're not, that's true. If you're not doing Maven, the bomb does, you know, good, but if you're not doing Maven, you have a little bit about dependent bot. The trick is if you're not doing Maven, you also won't get required upper bound dependency warnings. Oh. And the, the reason is the tooling is not available in gradle. To tell us the same things because it's not been created as far as I know. Okay. So, so the, that tooling is as far as I know anyway specific to, to Maven. That's where Jesse invested the work to create it. Okay. So that's under Maven. So then that, okay, I've still got the structure on. So this should have. I, before the bomb, I think. To me, it should, it reads better if we say, if you, in Maven, if you don't do it right, you're going to get these errors, for example, here's your, and then in that same section goes here, how you, and then say, we have this bomb that will fix it. And here's how you use it. Okay. So, so rather than giving an intro, an intro first of what are the two forms of bill of materials. And here are the errors. You're suggesting, let's start with, Hey, if, if here's a, as the first thing, you're going to be using the first form of bill of materials. You're going to be using upper bound dependency message. And then talk about, and this is how you resolve it first by using current version of the, the core bomb. And second, by using the bill of materials. From the, or the, the bomb from the plug-in bomb. To simplify your dependency management. So should this have actually kind of. Should this header be. I don't know what it is, but something like if you're, if you're working with Maven. If you're working with Maven, you're going to get these upward dependency bomb. And here you use the bomb to fix it. Yeah, except that's a good question. I mean, you're thinking, should it be Maven dependency management that I don't know, because I, I think dependencies are managed in gradle. And it specifies dependencies. It just doesn't have the same tooling available. It just doesn't have the same, it just doesn't have the same tooling available. To warn people about it. And in fact, it's largely assumed almost all plugins are, are done with Maven rather than gradle. Gradle is quite exceptional when it's used. Right. And this is only for plugins. So we're not going to have plugins done with, say, no JS or make or something. No, we're right. Definitely not. Yeah. I mean, it used to be just a link to the discussion. Slightly better, but that's. So the question is what, you know, what do we do with this dependable piece of it? Well, and, and the dependable piece, I think we can link to. Hang on just a minute. Let's see. I thought. That we had. A couple of links to the github discuss. It used to link to the. The discussion that Oleg started a couple of years ago. Oh, okay. Right. So the dependable, the dependable stuff that's here is, is woefully inadequate. Okay. So you've, what you've, what your poll request has done is improve significantly by giving us something more than just. Just that one hyperlink. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. I think we can improve slightly and it got better because Tim, Tim already busted me on that one. He says this is way too old. And he just said reference gift hub and. I'm not convinced that that's enough, but. But it's. Well, and, and I'm definitely not convinced it's enough because. Here is, let's see, let's go with. Darren Pope. Let's see. Okay. So. I want the one that has all of this is really cool, by the way. The chapters are made visible here in the search results. Oh, wow. Isn't that great. Okay. So. The room. Yeah. Okay. So now. Here it is automate dependency update checks. Yeah. So here is a video tutorial, but we could embed in this location. Oh, fabulous. To say, look, this is. Some dialogue from two people talking about what it means to do depend upon. Oh, wonderful. Now, there's a little discussion where Tim just says, we'll just tell him, you know, link him to GitHub dependent. I'm like, I don't think that's enough. Yeah, yeah, that's plenty. So. Oh, yeah, I'm trying to get out of this rabbit hole. This makes me feel much better about it. Well, and I think, I think that we could at least it's not, it's not terribly common for us to embed videos into developer docs, but I think there's no shame in doing it. I think it's worth us. We haven't had videos that we could invent so. Right. Okay. I agree. Yes. So, so. To upgrade. To understand this. Or something. I'm sorry, what would say that again, Meg? I was going to say to understand you, you're very religious fine. Keep typing. Oh, I was just going to. So, so what this text is describing. Is that, okay, yes, you can use, you can use. Depend about anywhere. Gradle or Maven. NPM. Docker files, et cetera. And if you're creating a new plugins. Newly created plugins. Plugins. Built from the. Jenkins. Archetype. Archetype. Include. Oh, and here you've got the link even better. Newly created plugins built from the Jenkins plugin. Archetype. Include. Include. Depend about. By default. That's what this arch archetype thing is. Existing plugins. Need to enable. Depend about. By adding. Configuration by. How about need to, yeah. Enable. No, configure. Hang on. Help me with this. Depend about. In their. Existing plugin repository. Hey, now. Now we look at the video. Right. Okay. And this is where I have to get the correct syntax to embed the video. I'm going to do that. Okay, so I have to go up a level. Or two or 20. Just a minute. And you know, I should remember these things, but I sincerely do not. There is a very specific syntax for these things. It looks like exactly this. And that's what we do. Okay. And then we copy this. Exotic string here. And now I need to find the one that lets me do an offset. Where is it? Somewhere. Oh, start equals. There we go. Okay. That's perfect. Start equals. 980 seconds. Okay. So. How about making. The good. Continue. What's that. Making that existing plugins. Make that a new paragraph. Oh, sure. And then say this video will tell you how, or this video will help. Oh, yes. Video below. See the video below. Just like. Below. Here's a cat video too. And illustrated. An example. Adding depend about. To an existing plugin repository. Thank you. Thank you. Okay. I looked at this and I knew it was bad and I didn't know what to do about it. And. Well, and thank you very much for doing it. Okay. So. So depend the bot. And it's good with having a video link is the last line in the file. It is. Yes. That should be well. And here we're now going to have the fun part of let's go watch and see how it looks in preview. Okay. So here's the window. If we just run the compile. Yeah. Let's see how it looks. Okay. So here's the window, how it looks documentation, developer guide, how to guides. Dependency management. Okay. Jenkins core bomb. Okay. This still needs some additional work, but then here's the video embedded. Okay. Let's go ahead and start playing. Nope. Okay. So I made a mistake. That's why we test. Okay. So it may be that. It doesn't like the S. Okay. Let's refresh this page. If I press play, yes, there it is. This time it started 16 and 20 minutes. 16 minutes, 20 seconds. Okay. All right. I'm just going to continue making tweaks. Okay. I'm just going to go now and if you're okay, I'm sort of running out of time, but I think I'm just going to continue making. Are you okay if I continue making tweaks to what you had created, Megan? I'll just push it right to your, but I am just so happy. Yes. Okay. Great. So I'll continue. I'll make some additional tweaks because this description of the plug-in bill of materials. I think makes a lot of sense. Okay. So this is the core bill of materials. Right. And now. Now what do they need to do with the plug-in bill of materials? So this is the one where they have to do. The exotic steps that you describe here of go find the release. You're using copy the dependency management section, et cetera. So the parent plug in, they just get the. They don't have to do anything. They've got the bill. That's a good one. That's, that's where. That's what I did not understand. I went right over my head. Yeah. So, well, so, and let me try to describe that one. So that's illustrated by a different video from Darren. Actually the same series, but it's, it's segment one in it update the parent palm. And let's, you know what? Should we have this page have two videos on it? I mean, I don't know that that's too excessive. Is it? I don't think so. Okay. So, I mean, I, we just, you know, I'd be hard put to get somebody to go out and do a video just to support this, but if we've got it. Yeah, exactly. No way would we want to spend the energy, but we've already got this video that, that here, let's, let's let me. Yeah, maybe. Well, maybe it's a separate. I wonder if that's a separate subheading. So let me, let me proffer this as an idea to you. Okay. This, this section describes the concept. Right. Jenkins core bill of materials. This shows the error. What if the next thing were a level heading further in. And we said updating. Jenkins core bill of materials. Because this is the solution to many of the problems to some of the problems that have this. Okay. And here it is. We then embed Darren's video. And let me go grab that again. And I think it just has a different start rate. It may actually even be a different video. But that one. Starts much earlier because the very first task that we did, Darren and I did in the video series was. To update the parent palm. Update the, which is what does the update to the Jenkins core bill of materials by using the most recent. Project object model palm version. You get the Jenkins core bill of materials. Right. Um, what. What I would like here. Oh God writers are such a pain in the butt. At the beginning of the, the very beginning of this thing where we tell them the problem. If you do it manually or you're going to screw yourself. Right. And then let's have another paragraph that says. You've got tools here to get you out of this. Oh, oh, very good. All right. A bullet and it says there's the. The Jenkins core bill of materials and what you just get. And this solves this. And then there's the plug in build of materials and you will need to man, you'll need to go in and modify your code to pull that in or something. I only happen to. But you know what I'm saying? Tell me where we're going and what they're for. Right. Okay. Now, now. Yeah. And, and so, okay. So, so the outline you're envisioning is. Hey, here's the, here's the background information. Background information here. Then now tell me where we're going right there before we get to the header. Okay. So help me understand that. So this in the new paragraph and say. This is bad Jenkins gives you tools to fix to easily. Or I don't want to say easily because it's not going to fix everything, but Jenkins provides tools that help you manage this colon. Okay. So dependency management. Hmm. Okay. So. Jenkins provides tools. That simplify dependency. Dependency management. Okay. That's, that's the, and then colon. And then. I want, I just a simple, very simple, a bullet list. Of we have the core bill of materials that solves blank. Right. Core bill of materials. Okay. Okay. Okay. Okay. Four. Tell me what that does. And then the plugin bill. In other words, describe them and then add depend a bot. With like a very, very brief description. That's just to wrap my head around what's coming. Okay. Good. All right. And then the section on the plugin bill of materials, I'd make it a high level. I put it up on the second level. I make all those three things be the same level of heading. Okay. Say that, say that last part again. I down there, you made the plugin bill of materials, a subheading to the. Right. Yeah. So what you're saying there is. And okay. So what I was thinking was, okay. So core bill of materials. This. Is really a reference to the. Right. It's actually, it's a. And then this similarly. And so, because there's a section on. There's a heading on plugin bill. Oh, there will be a heading on plug and plug in bill of materials. Right. Okay. Now, is it. Is it okay if. Jenkins core bill of materials were changed to just core bill of materials. You have strong feeling. It needs to say Jenkins. I do not have strong feelings at all. Okay. All right. Yeah. We're in Jenkins, you know. Okay. And then. And now don't we use, we use sentence case, don't we? I accept bill of materials as a. We get an acronym for I. Oh, right, right, right. You're right. That's, and that's probably reason enough right there too. Okay. My dad might even put the bomb in there. Now what I'd love to have is if I'm coming to this cold. Okay. Give me. While you stand on one leg, what each of them do for me? Okay, right. So let's do so. Okay. So now. To. Centrally define. Library versions. Used or provided by. By Jenkins core. Okay. I'm going to use the plug in bill of materials to separately. Plug in bill of materials uses. Actually, and now I need to praise it in verb with a verb. Okay. So it really centrally defines library versions provided by Jenkins. Okay. And this centrally defines. The plugin versions. Are known. Known to. Work well together. How do we say that? How about this way have been that have been. Tested together. Yes. Okay. And depend about. Proposes poll requests. When new. Library. New versions. Of libraries. Or plugins are released. Proposed proposes present tense. So does that, does that give the picture you were thinking? Yes. Okay. It makes up to me because I don't know this stuff. It makes it all. Because then I just started running in as there's this and there's this and you might like this and. I couldn't figure out what we were doing and how they related and. Yeah. Okay. And now is it kosher that we say. That I actually put. Old text. Yeah. So that people realize. These things are different. It's like, well, wait a sec. Centrally defines versions. If I don't detect the word library. There, I may not understand why I need both of them. Right. Okay. Yeah. Yeah. So that's what we're talking about. And that's what we're talking about. And now there be made, there may be objections have been tested together, but truly that's what happens. This thing, this plugin bill of materials. Regularly evaluates combinations of plugins in context to be sure that they played. Played together at least well enough to pass their own automated tests. Right. Maybe it defines a set of plugin versions or something. Oh, oh, yes. Yes. That's very good. Yes. Yeah. Yeah. That's a library versions. Yeah. So not a library. Yeah. Yeah, maybe both of them need it. Well, except that, see, for me, the, there's a, and maybe I don't know if we're conveying the difference here, but the difference. A core, a core bill of materials. No, is it really? No, so, so I'm not, I think, I think it's fine with set of to describe plugin versions because it, it is a collection library versions. To me is not nearly as much of a set. As it's describing what's actually in, in Jenkins. This thing is describing things that you might optionally choose. Is library versions the one that sentence somehow it doesn't make sense to me quite it's getting there. Okay. Is it created by this. For this Jenkins release or this version of Jenkins or see, and that's the piece that, that I don't want to state that because I think that's inaccurate because if we look at, at parent palm version numbers, they are not tied to Jenkins versions. Okay. So for instance, let's look at a plugin I maintain. It uses the current version of the parent palm and its version for dot 33, which is utterly unrelated to any Jenkins version number. Right. And yet somehow that number. Plus this Jenkins dot version. Cause this bill to know that it's, it's connected to Jenkins 2.289.1 and nothing older than that. Right. So wording wise, I wasn't, I wasn't comfortable putting Jenkins core here. Actually maybe core identified by the Maven property. Jenkins dot version. Okay. I think that there's a danger that's wrong, but, but I think that maybe what's what, what, what is happening. Okay. Yeah. Cause without that, what the, it almost sounded like, this is how I build. This is defining the library versions to you. We're saying for this release, this is, you know, a curated set. Of some, yeah. Yeah. See that that's the piece I'm. I'm not entirely sure. Well, I mean, we can certainly set it there and see what, what feedback from others is received. What if it was defines a curated set of library versions. Well, because it's in this case, this one. Plug in bill of materials. I might call curation. Okay. Because it, it truly is choosing things for you in advance. If you say I want library X and Jenkins already got it. I think that's the one you get. Because I could. If I wanted to, I could specify a different library version to use, right? You could. But if I, if I understand correctly, you won't get it. But, but they're okay. So are these, am I, if I'm building for this release, I can only use the library versions that are in the bomb. Correct. Okay. At least that's my understanding the core bill of materials. Oh, it says Jenkins core at this version has this, this very, this number version of. Let's pick a library. Like what's a good one. J and I, that's a relatively obscure one, but it's still bundled. If I remember correctly. And, and you can't get another version because it's built into core. Okay. This is just a huge improvement. And it looks like Tim Jacob, maybe somebody else will. On review will critique it or something. Well, and, and they may say, Hey, look, Mark, you didn't understand. And then, then everybody gets, we all gain knowledge. If, if I've, if we've said it wrong. And you're getting closer. Well, it's, yeah, I hope it's not further away. That's, that's, that would already be a big. You know, with that, I, some of his comments and with that one, it's like, I still don't know what you're talking about. So. Right. Because what struck me in the meeting on Monday was we opened the doc and I glanced at it and it was like, I don't know what you're talking about. And then you started talking. It all made sense. Oh, well, so that just says, I can, what I realized was that there was stuff in your head that was not on this paper. And not everybody that tries to do this is probably going to have the luxury of having you walk them through it. So. Right. So that's what I was trying to catch. I was trying to catch. Yeah. And I didn't mean to foist more work on you, but if you want to do it, I'll be eternally grateful. Well, in this case. It's, it's a good. Yes. Yeah. So plugins depend on specific versions of libraries. And of other plugins. Each, each version independently. Yes. Okay. Each plugin may have dependencies of its own and each plugin. Each dependency may have dependencies of its own and different versions of libraries and plugins may not become. Yes. Okay. So you want to make each dependency may have dependencies. Not each plugin. Well, is that, are you would, is that okay with you? I mean, for me, it hints the, the transitive nature of this thing, the recursive nature of it. Yeah. Mark, you know what you're talking about. And I don't. So almost any suggestion you have in mind is just probably fine with me. So. Yeah. Okay. Good. All right. Jenkins has tools that simplify dependency management. The core bill of materials. Yes. The plugin. And now there may be some. Precision. Comments from, from Daniel, for instance, I could see him saying, Hey, there are still some Jenkins plugins. That are bundled in core. And he might then say, ah, and those plugins are here, but for me, I'm treating that as such an exceptional case. That. Plugins bundled in core. I'm treating differently. Okay. Because I, I'm trying to avoid saying here plugin and library versions, because I don't want the complexity for the mental model of the user of the reader. They have to think, oh, these things are, are somehow overlapping sets. I want them to have it, even if it's a flawed perception, the perception that they are not overlapping sets. Right. If you wanted to. Down in the detailed section, we're talking about the core bomb. I would add a note that says there are a few plugins that are included in core and those will be, you know, you can make that as a note. Okay. Right. Which, which gets, but I still don't need to know that just going into here. Right. Exactly. Okay. So I apologize. I'm, I think I've got to reach a point of stop here. Yeah. I'm going to go ahead. Over. I'm just eternally grateful. Well, we'll, we'll continue working it together. I'll push some, some, some text up there. You review it. We'll then rely on Tim or others to review it and see if there are. Are changes that they want to recommend. Right. And then list of tasks. I don't know what you and. I've got into after I was not on the line. I don't know if there were other things to do either. List of tasks. Sorry, which list of tasks. When you get into how you implement the plug and go and materials. Oh, oh, that. And that, yeah, that I'll, I'll try to put some words around it just to. Just because it's that one really as well illustrated by the video. And it's more an exercise of. Trying to find a way to phrase in the, in simple bullet form. Some of the conversations that Darren and I had in the video. Okay. And I mean, it may be that you. I like having something that I can look at without pulling up the video again. But it may be that you, that you just. You're going to need to do this and see this video to find out. Or because I don't want to require, require people just to deal with spoken English. Right. I think giving them a written, a written description is very healthy. Just like you did bulleted list is very, very good. I could go in and watch the video and make a new list. But you're certainly welcome to that would be great. Let me, and I may offer some, some suggestions. Those would all be wonderful. Okay. And I've got a phone ringing and you need to go. All right. Thanks, Meg. Bye. Bye-bye.