 Okay, welcome to the documentation special interest group office hours. This is the 5th of October 2020. And let's look at the agenda. Here we go. So presentation proposal for October 15, I believe it was, is that right, or was it 16, maybe 14. Here's one topic, the Hacktoberfest progress report, probably for me, Jenkins docker tutorial fixes. This is one of that where I wanted to just ask you some questions to clarify what you learned from that and have you share with us, oh, hey, I had to make these changes this way and this way in order to make the tutorial work. So you've, if I understand the tutorial, haven't the fix, I haven't read it in detail yet, but it replaces the blue ocean image with the official image. Right. And there are several places where this needs to be done. I'm just taking just tutorial section, which reference to that section inside the installation. And I was not confident that that was even feasible. And so I am so delighted to hear that to hear that you've made progress enough to submit a report with us. Thank you. Okay. Good. Any other topics we should put on our agenda today? I guess we should probably put one in. Let's put it in Hacktoberfest triage progress review progress. And Jonathan, do you want anything on wiki, wiki migration progress? No, not this different. I just sent some PRs to earn my research too. Right now we have all issues with registers on github. So now we need to work on it. Great. Excellent. Okay. So maybe, maybe not, I'm sure in the next weeks, I will just work on page migrations. Great. Okay. Super. All right. Then let's take a look at the presentation proposal. Let me, let me bring up the notes on, I'll bring up a page that we can look at together on it. Here it is. So this is my proposed talk, the talk proposal, Hacktoberfest Jenkins docs and more proposed for Wednesday, October 14th at 2pm, UTC, I don't have the zoom set up yet. So I'll, I haven't had any objections. So I think I'm going to go ahead and create this today and send out the invitation, etc. So the proposal is, I'll do an introduction, welcome everyone to Hacktoberfest Oleg will do a talk about how you can contribute to Jenkins, including the featured projects. And then we wanted to do a, and Jonathan, what I was assuming here was this is three to five minutes, no more. Just with you describing, Hey, look, here is here are the metrics we've been using. So maybe you show the graph of the, of the wiki migration progress. Here is the table we're using. And here's why we're doing having two people review every issue we create to be sure that Hacktoberfest good first issues are really good first issues. That was sort of what I was assuming. So three to five minutes. Is that okay for you? Would you? Yes. Yes. Very good time to just explain how we prepare our search for that. Right. Right. For me, I think, I think people may, may not understand that as a first time contributor, we've done quite a bit of work to try to make things, make them successful as a first time contributor. Yeah. I get it. Okay. And then Vlad, we were going to have you do building, sorry, Jonathan, did you have more? No, no, I just say thank you. Okay. So Vlad, we're going to have you demonstrate how to build and build that experience the Jenkins IO site locally. Are you okay doing that? Oh, yes. How are you doing this? I just wanted to ask Mark, is it a key if I will use a visual, visual code ID or? That's, that's, that's probably the best choice. That seems to be one of the most popular IDEs. And so if you can use that one, that's great. I tend to use Emacs and other rather obscure tools. So if you use something people actually use, that's really wonderful. I was just trying to clarify, do we need to address just new users who are not familiar with ID who may use just terminal or command, command window or we are like targeting also some users who are familiar what ID means and so. So I think you can assume familiarity with an IDE and actually you can assume familiarity with visual studio code. Now, if there's something where you've discovered an interesting or powerful technique you use with visual studio code by all means highlight that to them because if they see you do something interesting and then you explain, oh, the reason this worked this way is because I did this in visual studio code that will tend to keep them even more interested. Yeah. Thank you, Mark. Yeah. For me, I was a card hard to build in my first setup because I'm on a window so I need to upgrade my system to WSL2. So just after that, I can handle it to use the make command properly to. Oh, so you were able to actually do make run inside a WSL window on Windows? Yeah, exactly. Before that, I put a dual boot in my machine to work on Ubuntu. So it's not so simple way to start work with Jank site. Yeah. That's my experience. I guess the most important advantage they've liked presentation will be. Right. So Vlad, I assume you'll be demonstrating from a Linux computer or from a Mac? I will be demonstrating from a Mac computer, but I have a kind of Windows computer which I used to test some like previous installations and to co-author with you, Mark, this blog. And I installed visual code there and I guess it is also natural for Windows as well. Okay. And how much time do you think you need there? If we gave you 15 or 20 minutes, is that enough or do you need 25 or 30? Well, just I guess 20 minutes would be enough and do you want to reserve some time for answering questions or you don't think? We will put, I assume we'll put 10 minutes or more at the end for question and answer. Yeah. And so I'm assuming that Oleg will probably on featured projects, he'll likely talk for 10 or 15 minutes because there are lots of things for him to describe there. He may choose less that I don't know, but I'll leave it up to his judgment. He is such a good speaker that he can keep audiences interested for a long time. In case if Oleg is going to take only 10, 15 minutes, so I will definitely don't want to use more than 15 minutes. Oh, no, no, no, no, that's because yours is a demonstration. Oleg will not do a demonstration, right? Oleg will just talk. So you usually demonstrations are inevitably longer. And I think you should be perfectly, perfectly willing. If you go less than 20 minutes, that's okay. But but we'll take the 20, we'll give you 20 minutes for sure. Thank you. And I assume I'll spend maybe 10 minutes on just migrating a plug in. There are fewer and fewer to migrate. Still many to do, but not as many as there used to be. OK, and each video we will be required to separate each video for each presentation. Oh, no, we're not going to go on the session. Right, we will do. We will just do a recording of the entire session and you'll be presenting live and you can share your screen. Or if you want to, if you have slides that you'd like me to share, I'm confident Oleg will use slides. And if you have slides you'd like to share, we can have you share them or you can send us the Google slides and we'll embed them into a single slide deck for the whole. I ask because after the meeting, we can use the videos as tutorial next next. Yes. So, for example, the Vlad video, it's important to good first issues. And your presentation too, for example, the next work we work on, it's about plug in migration. Exactly, yes. And user review as tutorial. Yes. So, we will upload the videos, the recordings after the session is done and we had good success using last year's recordings in a similar way. So, they work very well to do exactly what you said, Jonathan. All right. Okay, so, Annie, oh, that's Jonathan. I did not, I was not sure that I got your biography. Okay. What would you like it to say? No, it's perfect. I like it. Okay, great. That fucking open source. Nice one. All right. Great. And Vlad, are you okay with the biography I put in there for you? Yeah. Yeah. So. I think I just stole yours from the author, the blog author bio on jankins.io, but great. All right. So, so that feels like we've got a reasonable understanding of what we'll do there. So then I need to put the action item from Mark to publish and promote the Jenkins online. Yes, just let me ask, do you need any help with promoting like on social media, kind of on Twitter or yes, yeah, so what we'll do is I'd love to have people retweet the announcement from Jenkins CI. I will do a LinkedIn announcement and if you can like and share that also do one to the Jenkins user mailing list. I think that's been our pattern off to double check that one, but I believe we've sent those in the past to the Jenkins user list. Any other locations where you, oh, we should, we could consider Reddit. That's a new, a new channel that only just recently arrived and get her. There is a CD conference do want to mention this presentation there or it's too much. I don't know how we would get it onto their list, but we, we've been promoting them. So can CDCon announce it somehow? A good question. I don't know. Let me ask. I think I like that. I think that's a very good question. Okay. Any other things on the presentation topic, like next topic, October fest progress report. So I haven't done the numbers yet. So you're going to see, we're going to see them live here. If we look at Jenkins CI and let's look for, let's just look at the Jenkins.io auto that's Jenkins.io. So let's look at this one and merged pull requests with the label Hacktoberfest in the last, let's see, we'll just sort by newest. Okay. So if we just scan down, we've had one, two, three, four looks like just three or four that have merged. So that's not as many as I was hoping. And do we have any in the queue? So Mark, to event, we need to put the tag Hacktoberfest to which issue we actually do not. We, we don't have to because the, the Hacktoberfest team detects that our project has that our repository has this Hacktoberfest topic. Oh, just the one tag on that poster. Okay. Right. So they'll detect them just fine. So the contributors get credit for their contribution just by the presence of this one tag. I just, for me, it's a convenience if we also label with Hacktoberfest because then we can do queries ourselves, but that's not, that is not a requirement at all. It's just a convenience for us. So if we look at the closed, closed issues, for instance, all these redirects are Hacktoberfest contributions, but of course they're pull requests to a different repository. So congratulations, the redirect pull request that you created. The redirect process started just, well, you see it here, five days ago, 20 hours ago, etc. It's great progress from those redirect pull requests. I would talk to some friends, maybe they want to participate too. Great. Yeah. That would be wonderful. But there's the embarrassing thing here that this blue line on the left shows where I, where my triage, my review process stopped where I ran out of time. So I've still got a bunch of things that I need to review for Hacktoberfest. And I apologize, Jonathan, I haven't done them yet. So there are many, many more that I need to review and I believe no problem. If you need some help, just ask. I can help you too. Well, thank you. Thanks very much. Yeah. So it looks, it looks very positive. Excellent progress on redirects for wiki.jankens.io and several additional pull requests, including terminology corrections. Oh, there is some terminology. Yeah. So then I was really pleased with that. So if we look at the, at the close pull requests, fixed terminology in pipeline tutorials was one I did. Nice. And then there was one that, where is her pull request? A SVA one. Yes. A V one, no SVA one. No, I'm not finding it. But there was, there was another author that submitted. And this was an action item I had from last week was to create these terminology pull requests like this one and this one and this one. And one of them has already been taken and resolved all the way to done. I think that's all that I had for Hacktoberfest progress. Any other questions or any other things you'd like to discuss on that topic? So Vlad has submitted the Jenkins docker tutorial fixes. Now this one, I am, I am simply amazed that we got there because for me, this was a very, very, very hard one to imagine successfully working on. So it is used Jenkins official Docker Jenkins Docker image for tutorials. And the challenge here is that we need to test it locally before it merge before it merge, but this looks so promising. Tell us about what you learned, Vlad. What were the things that you had to change in order to make this work? Well, as, as you know, the goal kind of one standing goal is to stop using outdated blue ocean image and start using official Jenkins Jenkins Docker image. I'm talking about Docker image right now. The problem with Docker image, well, several problems. First, there is no blue ocean plugin inside it, and blue ocean is kind of, it's not one plugin, but several plugins and very interesting. And one of the latest projects of Jenkins and Colby's and a lot of people, I guess, are using this and another problem, which is actually more interesting that in case we're going to use, for instance, declarative pipelines or any pipelines, one of the powerful things about pipelines that we can use ephemeral agents with Docker, for instance, and, well, using this image will allow us, of course, to modify this pipeline, but execution will fail because we'll not be able to access Docker CLI, we'll not be able to use Docker CLI inside that Jenkins. And there are a lot of discussions going back to, I guess, several years ago, how to properly solve these issues, and people are talking about Docker and Docker and somebody is saying, and I, somewhere, I guess, on GitHub have summarized all these issues while preparing to Google season of docs for this year, and people are saying, well, Docker in Docker, there is proper way of doing this, and it is not really, it is not deemed, which is acronym for Docker in Docker, which is used by Docker themselves in case people would like to develop, contribute to Docker open source, but eventually there is some sequence of commands which we can install inside Docker file and create another image from our official Docker image, which will allow us to access Docker CLI, and I tested this on my Mac and on Windows, and it was, of course, not very extensive testing, but just sanity test, and it worked, and I also tested it, well, with simple declarative pipelines, I tested it with some tutorials, very simple Java Maven tutorial, and I extended it a little bit and included some Python scripts inside, and I tested it with my even multi-branch repository, it worked, and so that is why after doing this presentation on last, I guess it was last week, one of the meetups organized by CD Foundation, well, I thought, well, I can just submit this pull request, which I did actually over this weekend, and, well, I got some comments from Oleg, which I tried to understand how to approach to this. There is, of course, different ways how we can expand and in which direction we can go after that, because I specified only for tutorials, because our installation, as probably you recorded in your discussions with Zed, I guess, you mentioned that, well, this installation, Jenkins installation page in our documentation is very large, and it needs to be somehow modified, maybe brought into different chapters, like divided into different chapters, but I noticed in one of these discussions recorded on YouTube, you mentioned, well, there are some other people working on this, and probably you meant Jonathan and myself. Or me, or Meg, yes, exactly, you're precisely right, I thought, we don't have to, as you now do that, because the rest of us can do those kind of structure things. And so for this reason, I decided, well, leave this specific installation, there are different files responsible for just installation, but just target just tutorials for now, and like wait for decision consensus, which will be made how we're going to restructure our installation page, is it going to be like several sections or somehow, but today, I guess, all we've made this comment about this, it is a little bit low, I guess, he made this comment about create simple quick start guide, he mentioned in his comment. And I'm trying to understand what exactly is meant by that, and where this quick start guide should go, is it going to go in documentation, or is it going to go inside Docker plugin, which is on Jenkins CI. So when Oleg says, customize the image, he's talking about this step that you have very first here of create a Docker file. And that's the step. And I think I understand why you did it. By creating the Docker file, this will let you install. Oh, you didn't install plugins? Not yet. Well, it happens later, I assume. Right, but for this specific addressing pipelines, this can be done kind of manually, and this I can describe, because after starting, for instance, Jenkins, we can either manually install, for instance, Glowsh and plugin, or using plugin.txt or whatever approach we'll choose. But with automatic plugin installation, well, this is, I guess, we're discussing beyond this, but with automatic plugin installation, it looks that we need to know the set of plugins which is installed in the base Docker image, which we're using. So if we're using, for instance, this LTS 241.1, we need to know the set of plugins which is installed, and we can add Glowsh, for instance, to it. And this is what I'm doing on, there is GitHub repository called CICD, which I authored where I'm describing this entire process, which actually I did on presentation. And so, but it is, I sharing it with the community, but probably they are not aware, and I can, of course, point and see if you're okay with this approach, we can just somehow embed this inside our quick start or process, like how to proceed. Well, this looks, this looks marvelously encouraging. This looks wonderful. I'll do a detailed review and actually go through the tutorial following the directions. Before we merge it. So that that's great. And yeah, let me know, Mark, if you need any help with the references, because I collected, while preparing to Google Season of Dogs, a lot of different references for the search articles about Docker and Docker and what it's really is dangerous, not dangerous and so on and like, yeah. That's, that's great in case if you need any help. Right. And no doubt there will be people saying, well, you're running, because that's what this is doing, right, is installing Docker so that we can call Docker from inside the Docker image. Right. This is targeted, I guess, for Debian flavor of Linux, because our official image, as I understand, is based on Debian. Correct. That's right. Yeah. And, and the platform special interest group is discussing how we, how we shift off of Debian, in this case, Debian 10, 9 and get on to Debian 10. So that's, this is, this is great. Excellent. Thank you. I'll, I'll do some experiments and certainly give you feedback. Thank you. Thank you. And just, just some, something that I, one of the approach which we can, I can try to simplify things, but one of the approach we can take Docker file from Docker plugin itself, and there are a lot of Docker files listed over there, which uses the base image, not our released version of Jenkins, Docker Jenkins, but something like OpenJDK or whatever is based. And, but it will be much longer Docker file and much more complicated than they, not sure that we need to do this in our documentation since we can reuse the code which was created by previous contributors to Jenkins. Right. Well, and, and this is the technique I'm using. So I like the, the, the short rely on the Jenkins project to deliver me the, the base image for Jenkins. And then I'm going to add additional things that I need to, to get the job, to do the next thing that I need. Good. Very good. And of course there are some things which I still don't understand and maybe need some help clarifying with the versioning, for instance, but yeah, this is something which Oh, versioning. And that's an interesting one because, oh, that's fun. We now have the ability in, in generating other pages to actually embed this number where this number is the current Jenkins release. So that we might be able to make, I'll have to do some investigating to see, we might be able to make this page automatically populated with a current Jenkins LTS version number. It's interesting because when I looked at Docker plugin, they're saying that current Docker image version is 235.1. And so this is something, and it is under Jenkins slide, slash Docker. That's surprising. So you're saying that if I look at Jenkins slash Jenkins, it shows. No, no, no. Well, you can, exactly. Oh, oh, oh, you're looking at the, okay, you're looking at the source code for the Docker repository. Right. And, and this, this, this has a very distinctive build process that causes that, that distinctive build process causes the version number that's embedded in the file to never increment. So this one says, for instance, it's Jenkins 2.176.2, but it's used because this is a parameter, it's used to generate every Jenkins version just by changing the parameter. And there is, there is releases, I guess, somewhere on this. Correct, right. Yeah, there are. Yeah. So this, thank you for addressing. Yeah, release is 2235. Yeah. So if we look here, we should see tags. Here is 2.249.1 LTS CentOS 7, 2.249.1 LTS JDK 11, etc. Good. Okay. So we are current. That's, and that's an interesting one. I'll, we should not do a code review live here. That's not the purpose of our meeting today. I'll, I'll review it. I'll give some feedback because there are some, there, I think there are things we may be able to change here to make this more relevant to users and less likely to have to change. Good. Excellent. Any other things you'd like to highlight to us of things you learned or Well, just it is general best practice about Docker file. And I guess you and Alec highlighted several times in your presentations and video recordings that when we're using, for instance, base image, it's better to specify not just long term support release, but specific version. So we know from where this, like we're called, we're deriving all features from which version. That is why it's good. Yeah. So, and that's, that's the rationale for this number rather than just saying, yes, that makes sense. Right. We're saying, make it explicit. You need to say you want exactly this version and it won't change on you then. Okay. So just it is compliant with the best practices that is why. Very good. Um, well, and in documentation itself, I, um, uh, well, oh, I see. This is the only, it is not nice. Right, right. This is just showing us the diffs. Right. Under windows, uh, I'm using like different, for instance, uh, no, no, um, if you go. Oh, wrong one. So let's go here. Docker, Docker for tutorials on windows. So here, uh, yeah. On windows, uh, all right, uh, it is, uh, I'm using this, uh, different Docker command with different, uh, uh, continuation for lines that is, uh, using as before terminal. And on my machine, I'm using something called github terminal, which allows to use or github window. I guess it is called, uh, uh, which allows to use, uh, notation, the same syntax as on Linux machines. So we don't need to use this, um, uh, little, uh, symbols instead of, uh, forward, forward slashers continuation on the next. I see. Okay. But, but it involves, uh, like explaining how you need to install github terminal and it involves extra software. That is why I just thought, well, maybe in documentation to use extra, uh, uh, paragraph, but not discuss what needs to be done to install extra software. Now it's very good to access the term separately. That's, that is exceptional. Well done. Anything else you'd like to share with us of things that you learned through the experiment, things that we should be, we, we should be aware? Uh, well, it is not covered in this, but, uh, as, as I mentioned, in case you want to add plugins in automatic way, we need to learn this exact set of plugins in the previous version of Jenkins that you're trying to, uh, um, derive from. And so there is specific script, I guess, which allows us to get the current plugin, uh, list of plugins, um, from the current version, if you do simple rest request to the, there is, although in, in this particular case, I think that there is a relatively simple shortcut that we'll be able to use where we, let's see if I can find the documentation. It will tell us about installing the plugins. Yes, here it is. So there's a new plugin installation manager command line interface that's been bundled as a preview and we can call it like this. And by calling it like that, um, it will install all the dependencies for us. And the benefit of that is if we say this run minus, minus plugins and we say blue ocean, it will install the entire blue ocean suite, all 25 plugins by us calling for one plugin. Oh, it's interesting. And likewise GitHub branch source here, when it's called, will install the git plugin, the git client plugin, and several others, because they're all dependencies of it. So if we, if we, and there's one plugin for the declarative pipeline and maybe even one for the whole, for all of pipeline plugins, so we may be able to put in a one liner into your existing script that says give me blue ocean and give me pipeline and it will look and act very simple. So it will, okay, so it knows how to get the existing list of plugins and just extend it by what we are already, I see, great. Right, and it knows how to determine the dependencies of one plugin on another and download all dependencies. So by us saying I want just blue ocean, it will say oh we'll download the blue ocean plugin and then read its list of dependencies and then go request all those dependencies and do it, does that recursively. Thank you very much Mark for pointing this out because last week presentation I was like doing extra step by doing the rest request to existing host. Oh that's great, excellent, thank you. Anything else you'd like to share with us on the Jenkins Docker tutorial, Vlad? No, just wanted to see that I was planning to expand it to installation to keep in sync tutorials and the installation or I can wait for your comments Mark, let me know what you want. Yeah, so I would say don't delay don't delay your work waiting for my review. I've got a number of views I have to make, I don't want to make you stop but I will certainly provide a review as soon as I reasonably can and let you know. Sure, thank you. So we had already talked about reviews I think. Any other topics we need to we need to cover today? I guess. Sorry I didn't catch that Jonathan what did you say? No, no I know. Okay. I guess it was Vlad. Okay Vlad. Just I wanted to of course remind that you provided recently these five issues regarding updating terminology and you labeled those as new camera like good new camera contributions, something like this. So should we reserve it for newcomers or in case if there is like spare time should we solve those issues by I think if you're if you are welcome to work on a good first issue absolutely. So if you feel like working on it you should do it. Those are those are excellent choices of things that we want to get done and we would love to be able to tell people that we're making more progress on terminology updates. So absolutely. Yes if you're if you've got a few minutes I think they're relatively simple particularly for the two of you where you already have lots of experience working with the Jenkins.io site. You'll you'll find them very quickly and yes change this not change this yes change this and then you submit the pull request. It's important to do this more because you can earn a t-shirt or a plant A3. New trees on the world. Exactly that's great. I was thinking about using one of those issues or maybe Jonathan issues to show during this presentation how to build the site and how to do pull request. And you are welcome to do that although I have to warn you they may all be gone by the time we get to that that meeting. So we can we can we can there there are other places that need terminology updates so we can certainly create one for you to do in the demo. Thank you. Any other topics? That should conclude our meeting then. I will post a link to the recording. Thanks very very much everyone. Thank you. Bye everyone.