 Welcome. This is Jenkins documentation office hours. It is the 20th of February. Asia time. Thanks for being here topics for today action items. Debian 12 and JDK 17 reminder on handling regressions detached plugin documentation and update to describe that. And pull requests of note. And Gavin Morgan has added one very good. Okay. Any other topics that need to be on the agenda for today. Not for me. Okay, well so I would say let's let's shift pull requests of note high on the list or rather will focus on trying to get it done so we can get to pull requests of note very quickly. Okay. All right so first item, no action no open action items, when second item Debian 12 bookworm. So the next release of Debian is planned for release in 2023 likely either April or May or June. So they freeze in March, and final freeze is expected probably a month or two later. Okay. When they do that right now we've already detected that they're no longer delivering open JDK 11 at all. It's not available as a package. Oh, so you can only get Java 17. They're preparing for I think the eventual release of Java 21, which is probably 12 months or less than 12 months away. So, so they're there admitting that they're ending the life of open JDK 11 on their platform, because the support for JDK 11 will happen at least the, the active support will happen in 2023 already towards the end of the year. Okay. So the proposal in that Kevin, Kevin Martens and Bruno but I just and I discussed was what we're going to do is, we're going to update the documentation beginning in about April or May so beginning when the release is will update the documentation to describe Java 17 install instead of Java 10 Java 11. Both are supported JDK. What's that. What about not open JDK is anybody using that. Oh, in fact, many, many places are using. So that's the next one containers for containers we're using. We use Eclipse Temeron and and it continues to support it and works Java 11 and works just fine works on Debian. So, for our container images, no problem. Okay, the challenges for people who install it directly with a Linux package. For them. They'll see they won't be able to use the instructions that say do Java 11 because Java 11 won't be available. Right. And so what we'll do is we will just describe Java 17. And if they want to use Java 11 they can but we'll describe Java 17. So there's an additional twist on this red hat has proposed Oliver gonja of red hat and one of his colleagues have proposed to add a universal base image. Nine. So this UBI is the container image simplified container image based on red hat enterprise Linux. And so Oliver gonja here has has proposed that they'll create they would we would add a Docker container using UBI nine we've already got one that uses UBI eight. And so it makes sense. And the question to them was they proposed initially Java 11 and our question back was could we please just do Java 17. And that way this is already moving towards the notion let's do Java 17 rather than Java 11. Right. And we've been delighted actually with the results with Java 17. There are cases where it actually runs better than Java 11. Wow. So we're really pleased with the results with Java 17 and Jenkins. And so the idea is that's where we plan to go with it. No action on this until the release of Debian 12. But but then come April, May or June whenever that releases, we'll make that update. Okay. Next topic was handling regressions on the Jenkins that IO site. So we've had some episodes in the past where we made some change to Jenkins that IO to improve the look and feel or to improve some part of the site. And inadvertently, that change also caused a loss of functionality. So what we're doing is discussing and proposing a formal how do we handle regressions policy. As one example of a regression we had this one where it's kind of embarrassing back in November we made a change that broke the jumbotron the thing that scrolls this bottom image. It was stuck on one plot place. And by secting we discovered that Vandit Singh actually discovered that a commit from November of 2022 is the one that broke it. So we were months without detecting this particular regression. And so we said, Hey, obviously this one isn't a rush to fix it. He's complained either. Right, none of us have detected it, right. And so it can't be that urgent, but you've been at Konechni proposed the fix. And there it is fixed. So it's back. But what we proposed as a general policy is we're going to use the same regression policy for Jenkins that IO as Jenkins core uses. So if a significant regression is not resolved promptly will revert the change. We'd rather go back to base functionality than add something new and lose significant capability. What was the new functionality that broke this just curious. It was upgrading from an older version of the bootstrap JavaScript library and replacing an unmaintained library with a maintained library that does some important functions is popper JS library. Okay. So the upgrade was valuable. It really was the change that made this was valuable and truly useful, but it had this undesired side effect. Right. What you've been it was able to do though was he was able to fix the root problem and not have to revert the change. Wonderful. So, so the idea is significant regressions that aren't resolved promptly we revert them. So minor regressions will take will allow more time. Now what we've done is we've added two issue labels one for regression and one for major regression. That way if something is flagged as a regression, we know we need to take action on this. And the idea was discuss it any concern from you Meg about that kind of a policy. Now it makes a lot of sense. Okay, good. So the checklist for release. There really isn't a concept of, you mean, when you say release you mean Jenkins core release or something I don't know it's sort of, I mean, it's, it's an ongoing problem it's like every so often somebody should just read these pages. Just look at them. Oh, oh, yeah so no we do not that's that's a fair point. We certainly have a checklist for releases of Jenkins core. Right. But that's that's a different thing I think you were asking more a checklist for review of the documentation. Right. Right. That is a big bugaboo of doc like code is you can automatically check that things build and stuff but to make you know some of this other stuff is the human element still that just got to look at it and say, right. Well, and, and the human element is there no matter what there are all sorts of examples in the Jenkins documentation of things that have have become outdated and are no longer relevant, because the world has moved around it. Right. It was it may have been exactly perfect when it was first written. Nowadays, it's no longer accurate and therefore. So for instance the Linux install instructions talk about red hat and sent to us but sent to us as an operating system. Now that Sentos Sentos seven is the last viable operating system of Sentos, and it will end its life in 2024. So there's not a lot of value to us actually talking about Sentos seven. It's yes, it exists. No, we really don't want it. So those kinds of things they become dated or not less less valuable as time goes on. Exactly. All right, so that one's covered anything else on the regressions topic looks good. Okay, next topic then was there's a concept that we've just we've realized may justify more documentation. What this is is. Let's look at a plugin to talk about what this this means. So let's look at Oracle JDK and tool installer. Okay, so this, this thing was split from Jenkins core, many, many years ago. So it used to be part of Jenkins core and not even a plugin. And when it was made a plugin, there's a risk that other plugins might depend on the API is that it had been contributing to core and is wasn't is no longer. Yeah, contributing to core. And that's what this list of implied dependencies means. And if you look at the size of the scroll bar. You can see that it's for this example quite a large number of plugins that have an implied dependency on this particular, this particular plugin. The problem is if someone wants to remove this plugin from their installation, and they have one or more of these plugins already installed. They cannot remove this if they attempt to remove it. The removal will be attempted in Jenkins will then re inject a copy of the plugin back into the system for its own safety. Okay. Now, now that concept of implied plugins is described here and I like the description it's actually quite good talking about what an implied plugin and implied plug in dependency means. But this becomes more complicated. If we instead take a different plugin that's now been deprecated. So this plugin called the WMI Windows agents plugin is not just split but it was split from Jenkins core and is now deprecated. Meaning users get another message that says hey this thing is should is deprecated you should be removed. But then when they try to remove it. It would tell them, sorry, you can't remove this because it has that you have these other plugins installed that are implied dependencies. And what can they is there anything they can do about them in. They have to they have to rebuild the plugins with implied dependencies to require a newer Jenkins version. Ah, and that's well use we saw the earlier one right that that could be a huge effort with this one for example with it's what looks like hundreds of implied dependencies. Now, these are universally older plugins right there plugins whose minimum Jenkins version is very, very old. But that doesn't mean that some of them aren't still useful. People do not upgrade the way we think they should. Right well and, and for instance, if we look there are some of these plugins let's see if I can find the one that's the example. Editor. Here we go. The JavaScript GUI live ace editor bundle. This one provides a library. It has 275,000 installations. Oh, so it's used very widely why well because it's dependency of blue ocean. Right. And oh, I take it back and it's a it's a dependency of pipeline motion my mistake so pipeline is depends on it. And, and so that that challenge means everybody with pipeline has this installed. So they can't remove the JDK, the JDK, the Oracle JDK tool without this warning message that says hey we're going to give it back to you that. So this all this complication all this long story means we think we need to do some do some more documentation to describe it. The first one here on the list is actually resolved in Jenkins 2.386 and later. So we fixed it. And the next one we made we may someday want to resolve the others. Well for instance, you might say hey I want to get rid of subversion I never use it. Well if you have any one of those old plugins you can't get rid of subversion. That's the kind of story for this. Now really, right now it's mostly a, how do we document this so that we can point people who have a question to this thing and say, here's a long term there's probably a way in code to make this much better. But that'll have to be seen. Any questions. Nope. All right, next topic then was that let's get to the fun part. Right. So pull request of note what I propose is let's spend our time reviewing these things and just talk together about them to see what we think. Okay. So here is a change from Gavin Morgan proposing a UI change. All right so the change here is a proposal. Okay so we've got. Okay so they're, they're going. Do you see what's happening here what they're doing is they're going through a series of steps to try to improve the appearance of the improve the look of it yeah so let's, let's now one of the cool things here if I understand yes. One of the cool things is you see the show environments that's right here. What is provided us is a way to look at this in a deployment context of this is a Netlify hosted look at the various parts and pieces so I clicked to footer here. And here's how it looks. Whoops, where is the, where's the improve this page. Oh, oh, got it. Okay. Okay here it is the default here if it has a source path. No source path. Oh, good. Okay. So if we know the location of the pages source code. For instance we know it's an ad hoc file or it's backed by some, some other a markdown file, then this is what appears with this improve this page link. Okay, if we don't know the source path we can, we can still have the report a problem link, because that will let them go to Jenkins dot ios issue get have issues page. If we don't know that we get the default like this, and external property external property what does, what does external property do differently. Do you see any difference between these two. I don't see any difference but for me they look great now I want one of the things they did was they, they changed the size of these things so for instance what if we are down here on a, on a cell phone, like this. It still looks pretty good to me. And if I get even smaller, it still looks good. And it's still holding up very nicely. And I can't even go any smaller than that now. So, I feel pretty good about the, about the layout. Yeah. You're okay with it as well Meg. I want to know what the external property is all about. Yeah, that. And so I don't have any guess on what that means but I'm going to trust that Gavin knows this stuff really really well. Yeah. Okay, so I'm going to say, all right. I'm going to say that all right so make Megan I, and I reviewed this during documentation office hours hours. We think it is a very nice improvement. We checked various screen sizes. Various widths. And saw no issues at any of the widths. You think it is ready to ship. On the sample that we were looking at, can we click on those. Does anything happen is it just those actors so we'll do is take you to this page that is the expected location so that's good. What I wonder is if the external property takes us to something different. And it probably does. I just, in this case the property has no value so I would not expect to be going anywhere, particularly useful. Right. Okay, so I'm going to say calm comment and then I'm going to give an approval. See, here we go. Okay. Very cool. All right. Okay with that. Yep. And let's take the next one. So, I'm going to note here approved by Mark and Meg. Great. The next one is very large. Okay. This is, and I'm, I'm quite impressed by Vandit sings work on in the documentation, because Vandit has accepted has taken on quite challenging topics and done very well with them in this one. An updating section. So just like we have installing Jenkins. Yes, we noted that we really need an updating Jenkins section as well discussion. Yes. But when we look at installing Jenkins. We're reminded that installing Jenkins is not just one page. It's, let's get it here. Installing Jenkins is one, two, three, four, five, six, seven pages, eight pages. So eight distinct ways of doing the install, plus offline yet another so so we've got eight or nine depending how you count them ways to do installation and upgrade is different in each of them. Right. So, so upgrade is likely to be every bit as complicated as initial install. So let's take a look at the, the prototype deployment. Okay, so documentation and it intentionally is not in the initial table of contents in the at the top level menu. Here's installing and updating is here. Okay. So first let's remind ourselves which things are here so Docker, Kubernetes, Linux, Mac, Windows, other and war. Linux, Mac, Windows, other so we're missing Docker. Okay, but let's look at at Linux at least and see what what it tells us here. Service. No, no, no, no, no. Okay, already I see a problem. One, it's not. There isn't always a servant. I'm not sure that there's always a service command. Let me see on on rich service. Oh, no, there is on. Okay. All right. Is this part of standard. Okay. All right, so let me check with one other place. Oh, yes. Okay. All right. One tax is service script command so it's service Jenkins stop. Oh, except. That will work. Okay, good. There's a reason we read man pages. Okay, so here service runs a system five in its script. And as predictable an environment as possible. So the problem is Jenkins know you'll no longer use a system five in it. Right. We use system D now. And so it needs to use system control rather than than service. And I believe the command is stopped but here again it may be that there's not much point in doing the stop. Yeah, so, okay, so this one at least needs to be changed to use system control rather than system D, or rather than than system five in it. Yeah. Okay, so back here. And let's go find the comments. Are you okay with this Meg is how we're approaching this. Okay, so see it was it was service. Okay, yeah. So system CTL Jenkins on Linux variants Jenkins installed with Linux installers uses system D. The service command on red hat enterprise Linux, and its derivatives says that it runs system five in its scripts. It does not mention running system D scripts, commands. This section was for Linux right. Right. Well, it's for all variants of Linux. So the Ubuntu 2020 2024 service man page says that it runs both system five in it and system D commands. So I think we should use system D, rather than using system five in it. Yeah. So system control and now I've got to look up the syntax. So just a minute while we do that system CTL managing system D services and let's look at stopping services. Stop Jenkins. Okay, there we go. Okay. All right, so take a backup here. I think rather we should link to the backup instructions because this could be a terrible way to do a backup. There are, for instance with snapshotting file systems there are significantly better ways to do a backup. Right. So now let's find those better ways. Back up. Nope, that's not it. So how about it was I don't remember if it was managing Jenkins or administering. Yeah, so it must be system administration. Yes, backing up and restoring Jenkins. Okay, here we go. This, I remember this this gives instructions about which things you must backup which are not required to be backed up, etc. Yeah, so let's link to replace with a link to the backup page. Because there, there are many different ways to perform a backup. And they depend on the environment. For example, if running Ubuntu 20 20 or 20 to four with BTR FS file system. The best backup. Maybe to take a file system snapshot. Not a tar file. Right. It's faster. Likewise, with open Susie. 15.4. Or is it that. Oh, no, no, I take it back. It's not BTR FS and CFS likewise open 15 for with BTR FS. It's open Susie that does butter file system. And CFS from the BSD people is is on Ubuntu. So now we need to replace this with see the backup instructions for see the backup instructions for alternatives. And now we turn this into a hyperlink. Okay, and take that out. Seem reasonable so far Meg. It's reasonable. Should we do that chapter have verification should we say, um, backup and verify. Or. Action. Yes, so it's it's actually in the it's actually in right it's here validating a backup. So it definitely is part of it. But I'm not sure that I'm ready to put validate into the. This is a pure safeguard. But good question, should we. But I'm thinking a backup that's not been verified. It's not a. It's not that's, that's a really scary thing, right? That's. And, you know, people read the first half and now here's how I do my backup and. I don't know how much would you wish mother just want to become on this stuff and there you've got to draw the line so. Yeah, I'm going to leave it as is although actually I see that I've done damage here that I need to take this out. Oh, and I can't. Okay. Okay. Should not be in a cold code block. Because we don't want to we should not describe all the alternatives, all the backup alternatives here. Right. Link them to the correct page. All right, ready to continue our reading. I can. Take the backup. Okay, so where is. Okay. This is completely unnecessary. Since we tell them to do a backup and they read the directions. Not needed. Either included in the backup. Or downloaded again. Hey, now the capitalization here is. Download the new LTS version. Oh, no, this is not how it's done. Okay. No. All right, this is not at all how we don't we must not upgrade. Upgrade by copying in a new war file. If the previous installation was done. If it was done with a dab file. Or an RPM. Since we, since we don't upgrade. Must be performed by the same command that performed the initial install, or the same type of command as the initial install. So that is specific to the operating system distribution. To the Linux distribution. So this is going to need significant rework. Okay, start the Jenkins service. And again, this is system control. Start Jenkins. If I remember right, isn't that what we saw earlier? The operating system. Yes, system control started. Use system D. Not system five. Okay. So given that it feels like maybe we should remove this entire section of stop this because none of you don't have to do the stop if you use the operating system tooling. It will do the stop for you. The backup. Maybe we should include that. That's a that's a healthy thing we don't need this one. So maybe what we do is we have a single step which is take the backup. And everything else gets deleted. Okay, this is wrong. Okay, this is is I don't know where that's, that's wrong and been wrong for a while. Okay, good. And this one I don't know. All right, so we've got this this needs to get significant rework because Vandit has also placed these headings in a different style than the installing Jenkins headings. So if we look here, red hat centos is a much, a much higher level of heading. And I think that's the way we would prefer it. So here in Linux, there should be red hats and toes. Debian. What are the others that are there. Debian. Oh fedora, right. And then red hat and centos. So my apologies major major changes here and I think this will best be done by by me or somebody else going through and reworking this pull request. Yeah, to fit the same as the current as the current documentation structure. Okay. It's still a nice start even if it needs work. It is well and it's it's a very brave and bold start right that's that's really great. It's wonderful but that such a bold move to say hey, I'm going to do this. Okay, so as far as I know, let's test this and see if this is still a real issue. I'm not aware of that being a real issue resolved. Five years ago. Yeah, as far as I know that is just that is no longer relevant. So, this issue was fixed five years ago. No need to mention. And then this one is no longer, no longer required. I'm not aware of Jenkins as of the Jenkins transition because due to the Jenkins transition from system five in it to system D. Okay, so that's that's improved. This is no longer needed. Okay, whoops whoops whoops here and we've got another one that's an interesting problem here you'll you'll enjoy this one. So what we see here and oh just a minute. Okay, so no longer needed. Hey the next one this is a fun one because you'll recognize it from previous experience update the controller with apt get install update operation center with some other command. And so the answer here is Jenkins does not have any thing called operation center. That is a cloud that is a part of the cloud these products, we don't document. We rely on cloud bees to document their products. Okay, now this one. Same thing. Is it zipper install I thought it was zipper upgrade. Hey now I've got to go do a quick check make just a minute when Susie what does it do this upgrade. Okay, let's try it upgrade Jenkins upgrade update. Okay, so it says hey you're already at the newest version, but it is up update Jenkins not upgrade. Okay, there. Alright, onwards. Whoops where it might. Okay, so then this. So Mac OS. Okay Mac OS is a separate page. Oh, here it is okay and this is a separate page okay. Okay. Warns other systems free BSD. When you install from PKG upgrade with PKG and use PKG update. Okay, and then PKG upgrade Jenkins. Alright, let's double check that update. Yes, okay update the repositories and then upgrade. Upgrade a package to a newer version. Okay. Upgrade and package name yep. So that's right. Okay, and then is it on free BSD man service because they use system five in it. Service restart. No script and yes okay good. Service script command. Okay, so let's see so service script. Yes, that's right. Okay so free BSD looks good. And the war file okay if you run this place the war file. Now okay so this is describing the Jenkins war file can be. This line seems like this line is described was describing something different, not an upgrade. I forgot I forgot all this. Okay, but wasn't that that was the war file you didn't actually upgrade you remove the old war file and put the new one in. Correct. So what you do is then that's what they say is replace the Jenkins war file with the latest version. Right. So, but this needs to say down it says download it to an appropriate directory, and then run the command. Yeah, okay I don't know why that statement is there open a terminal commit. So, it really shouldn't just be replaced the war file. Yeah, download a new version and replace it. But it's quite. I don't mind the extra. It's, it's always amazing some of these people that are doing really sophisticated things how they mess up on the simplest stuff so right so extra words here are probably okay. In a sense. So, given that we're, we're pretty much out of time. I'd say let's leave this well maybe we can see through this, this windows step okay upgrade steps on windows. Okay this needs. This needs instructions needs instructions. That guide the user to upgrade. The same technique. No, that's the wrong way. One question needs instructions to guide the user to upgrade with the same technique they used for installation. If they installed with MSI, they should upgrade with MSI. If they installed by copying the war file. They should upgrade by replacing the war file. Okay, good. Meg you've been heroically patient through this thank you very much. I'm just impressed that some kid did I mean God I hate doing this which because he's got all of these different options. Right exactly this. This is really detailed complicated stuff right it's it's enormously so. And so, yes, make the make my case tax crime and I reviewed this during docs office hours, 20 January 2023. Because it will be available if it helps. Great. I'm going to submit. Thank you. So Meg I'd propose we call an end for that to that this effort for the moment we're just a few minutes before an hour. And I need, I need some downtime. Are you okay with that. Absolutely fine with that. Alright so so we made something good good. We did yes. We have minutes of review of the pull request in the office hours. Great. All right. Thanks very much Meg. Should we just for record. Do we say anything to say that somebody is doing a really good job here. Yes, fun needs work on this pull request is is impressive. But you know if I see that it that you spent 40 minutes of reviewing and didn't approve it I'd like, you know as somebody in over their head and it's like no you would just bit off a big chunk. Right, right. Great, great details and great content on a huge topic. We never expected that a new contributor would work on the work on the upgrade guide. And to do such good work on it. And do such a good job right. Yeah. Great. Yeah. Put it down for people who don't watch the recording make sure that's. Yes. And, and the next one is the next one I don't suppose is a small small enough one we're going to get rid of it. Well the next one is is needs a an installation to duplicate the instructions. Okay, and in order to do the install it will take much more than two minutes to do the install right. I mean I love, I love that they did it light HTTB D is a really nice reverse proxy. And so just like engine X and squid and Apache, we've got one more way to do reverse proxying. And so it's it's very nice that they did the writing, but this particular example. It feels like it's written by somebody who is an expert in light HTTB D, and I'm not so I'll be when I read it, I'll do things that probably would surprise them, which is good. Well, it helps us make the documentation better right it's okay and amateur did it and said gee I need to know this and this and this. Yep. But not a quick review. No no no definitely not great we're getting these substantive. It really is it's quite impressive the content that we're getting so really delightful. Yeah, any other topics we need to go over Meg. I don't think so. Thank you very much for your time. Thank you.