 Welcome to the Inclusive Naming Project. It's our weekly planning meeting. This is the 26th of April. Thanks for being here. So two topics I had on the agenda where let's talk about how the Google Sheet is doing and how your feeling is about what you're seeing, what you're exploring, et cetera. So I think we should make most of this session focused piece on how to help you and Catherine how to help you to be sure that you're comfortable and confident and are able to start making progress, ready to submit pull requests. So I guess first question for me is do either of you have questions you'd like to ask on things that you've explored, things that you've discovered, problems you've encountered, something like that? Yes, Mark. Good evening. Hi, Peace. Hi, Mark. I had issues. I don't know if it's an issue, but I was, it was somehow to me. Like when I tried, when I forked a plugin, when I searched for master in Github with the fox plugin, it's not going to show anything. But when I searched for master with the original plugin, it's going to show me a list of technologies that requires changes. I don't know why it's like that. Oh, interesting. Okay. So when you forked in the original plugin, in the original repository, it found matches. Is that, did I understand correctly? So that means you can... When I forked in the original repository, in my own, in my own repository, when I search for master, it's not going to show me any technology error. But when I go to the original repository and search for that same master, I'm going to see list of technology errors there. Interesting. Well, so let's take a look at that. It may be that I've misunderstood how Github search works. I think I might have heard Github search may ignore forks. That's forked repositories or there may be a delay. Indexing may be delayed until some time after the fork is created. So how long? I assume that there was very short time between the time you created the fork and the time you did the search. Almost immediately. So would you be willing to try and experiment for us right now? Yes, I tried it again. I tried it again. Even this morning, I tried it again, but it's still showing the same thing. But when I search for master on the original repository, it's going to show some master technologies that needs changes. But when I search for it on my own repository, I'm not going to see anything. Interesting. Good. Okay, so thanks for detecting that. So I think what that means is it's not that it's indexed. The indexing is delayed. It must be that they are ignoring fork repositories. So we need to do the searches in the original repository, not in the fork. Now that may have some additional subtle complications because some plugins in Jenkins CI are listed as forks of another plugin. So let's try that. Are you okay if I do an experiment live here and let's test the theory? So I happen to know of a particular plugin, this one, the Jenkins Git plugin, that you'll see here. This plugin is listed as a fork from a long ago plugin. It's long, long ago. And that plugin hasn't been maintained in many years, the thing from which it was forked. So now if let's try, what could I search for that would be a good check? How about let's find a word that we know exists here like, how about like Linux? There's a word that we know exists. Okay, so if I search for Linux from here, it didn't find any code that matches it. Okay, which I think matches with what you're expecting, what you're describing piece. Now let's try it from the upstream. This is even archived. I don't even know if it includes the word Linux anywhere. Let's see if it does. How about in, how about let's search for patched because we know that word exists. See, I think you've found something there for us. Thank you very much for finding that. So what you've shown us is that that when I search in a repository that is a fork of another repository, I will not get good search results compared to if I search in the upstream repository. So if the thing I'm searching has a forked from line in it, I'm gonna have to find a different way to search it. Very, very good. Nice catch piece. Thank you. So go ahead. Sorry to interrupt that. Very interesting because the other day when I was trying to do a translation for Jenkins, one of the helpers on the community Jenkins.io told me should make a search within GitHub on the Jenkins. So that you will find the sentence you are trying to translate. And I never found the sentence I was looking for. I was pretty puzzled. And I thought that was because I was not a member of the Gentinski community on GitHub. And I was totally wrong. Now I suppose that because it was a fork from another repository so that the search wasn't working for me. That's maybe the reason why it wasn't working. Wow, amazing. Thank you. Yeah, peace. Peace, thank you very much for being so observant. So excellent thing, great work. So now what do we do about it, right? So how do we get you to the point where you can, let's look at some of the sheets. So let's see just how common this is. So I'm gonna open up SCM API. And if I go to its GitHub repository, it is not fork. So here, if I look for, I bet Linux will be included here. Here it does a correct search. So when it's not been, when it's not listed as fork from another repository, it's okay. But now if I look at my fork of this, let's just prove it to show that peace has shown us a behavior of GitHub that I didn't know. Okay, I'm gonna search for Linux here. Look at that. So it confirms it. So peace, well done peace. So what that says is we've gotta be sure we do the search in the upstream, not in a fork. So, okay, in your case, many of them, that'll be easy enough. You just remember to do it in the upstream, right? In the Jenkins CI repository like this one. And these two that I just checked are both okay that way. However, if your task is to search the Git plugin, you're stuck. You can't use GitHub search facility to go find it in here. You're gonna have to use a different method. And that's where the different method, I apologize for how awful this different method I'm going to show you is, but if you're okay, I'm gonna show you this different method. And that way you know how to use it when you get exactly this problem. So what you do is create your local copy of it and use, I could either open it with GitHub desktop or open it with Visual Studio. I could even download the zip. For me, it's just easier if I do a Git clone. So I'm gonna bring up my, I'm gonna make a temporary directory here. Let's see, is my text big enough? Is that big enough to read? Okay, so we've got a directory named X. So I'm gonna Git clone, use that. And now I go into that directory and now I just use Git grep minus I master. And here it shows me some usages of the word master. Now let's do that same search just to check. And look here for master. And we know that there are some in this particular repository. Okay, now that's into, oh, right. I'm in the Jenkins CI repository, so it found them. Good. Now, oh, no, that's interesting. Okay, so that tells me that it did find it even though I'm in a, oh, no, no way to say it. Yeah. So, okay, now I can't explain it because the fork, I'm in a fork, but when I searched for master, it found things. I don't get it. Me neither. Okay, so let's go to my fork now, just in case. So switching to my fork in this repository and no code references. Okay, so in my fork, it definitely did not do the search but it did in the upstream, even though it is listed as a fork from a much older repository. Well, wait a sec, did it and did the search find? It did. This is code that doesn't exist in that ancient copy of at all. It absolutely does not exist. This test is one I wrote long after the, so I'm not sure. Go ahead. Go ahead, Beno. Sorry to interrupt, just maybe you see the idea. Could it be because the repository has been archived? Could you make another test? Maybe. Yes, yes, good idea, right? Because, so Bruno's point is this, let's go looking at that. So if we look at the top level here, come on, there we go. So this one is an active repository. If I click here, the upstream has been made read only because the author is no longer doing anything with it. What if we choose another one that doesn't have an archived upstream? Do you have a suggested repository, Bruno, that we could use or should I just go exploring to find one? No, sorry, no. Okay, so let's try get client. See if it's got, no, okay, how about, oh, I know one that does elastic access. Okay, this one is forked from toxins and toxins is not archived. Now let's choose some interesting word like coverage. Okay, so now if we go back here and search for, oops, that was a little too far. If we search for coverage, notice no code match was found. Okay, now let's go to the upstream repository and we need a different word. Okay, how about configuration? No, and it didn't find it either. Okay, now I, again, now I'm completely perplexed. Did I not put the word configuration? I did, there it is. Configuration in this repository. The requested content has not been yet indexed. Oh, has not been indexed. Okay, so that's a different thing. All right, so it's probable that they have scheduled an indexing operation to, okay. So again, it may be, we have to be aware of that message. Glad you caught that, Bruno. This hints that, okay, it's not indexed. Therefore, they're probably indexing it since I asked for it. Now let's go back to the original one, this one. Did it say the same thing if I search for the word configuration? Does it say it's not indexed? No, no. No. Okay, so I don't have an explanation. Peace, do you have an example repository? Well, actually, maybe let's do one more check. Let's do mark E wait. So let's look at my fork of this repository and we're going to look again for the word configuration. Zero for the code. Ah, right, right. So it did not find, and here it says it. Okay, there's, I thought I'd seen this message before. So peace, you have shown us that in fact, what they say here is correct. Forked repositories are not currently searchable. Try searching the parent. Now it took me all the way up to the top, the uppermost parent, which is the wrong choice. So if you've got repositories in our list that have a parent that is outside Jenkins, then you'll have to use this other technique to do the search. You'll have to use get grep. Peace, did that answer your question? Are you okay with us? We've now spent like 10 minutes trying to prove to ourselves what's going on. Is this okay? How you've seen it so far? Yes, I think so. Okay, you sounded a little hesitant. So ask another question and let's talk through it a little further. Okay, the reason is because why you were showing, why you were doing something like that? My network disconnected, so I'm trying to understand. Oh, well, if you're okay with it, let's go through it again. And that way we've got it in the recording and we're sure that you've seen what the message is. I think Bruno and I have, thanks to his insights and some luck, we've decoded what's happening. So let's talk through it and this will give you some insights into how GitHub thinks about repositories first and what they do index and what they don't. Okay, so let's take a plugin from our list like the SCM API plugin and here is its GitHub repository. Notice that it doesn't have any text right below it that says forked from something. It's its own root level repository. And so when I search in it for the word Linux, it will find code matches for Linux. Now, if I look at my fork of this repository, so I have a fork of that repository. Let's go find that and it is, let's see, we'll just do this. We'll go here and then we'll change that URL. So SCM dash API. So now this is the Jenkins CI one. Now I'm gonna go to my fork by changing this to my username. Oops, it would help if I learned how to type there. Okay, so notice here it says forked from SCM API plugin. Now to prove exactly what you showed us, if I search for Linux here in this repository, it finds no matches. And when I click on the code button there, the code line, it says this, sorry, forked repositories are not currently searchable. Try searching the parent. This is well-behaved. Now I can search for Linux and it found it in the parent. So the crucial thing here is, oh, okay, be serious, search the parent. That's nice. That's great for cases like this SCM API plugin where the parent is the official real plugin source code. However, we have some cases in the Jenkins project where the final parent is not the official source code. So let's do a little differently. Let's look at the one Bruno and I just searched, which is the Jenkins Git plugin. Okay, so this absolutely is the official source code for the Jenkins Git plugin. However, as a legacy of its history, it mistakenly has this ancient forked from. Or if we look at the Elastic Axis plugin, it has the same thing. Here's the official one, but this earlier one is the forked from. And so when I tried to search in Jenkins CI Elastic Axis plugin, I think we expected no code. And yet I know that there is a reference, I'm pretty sure anyway, there's a reference to Linux in the Jenkins file of the Elastic Axis plugin. So if I look here in this Jenkins file, here's the word Linux, but it didn't find it. And why didn't it find it? Because as you told us, when a repository is forked from another, GitHub doesn't search the fork. Now, if we're lucky, this one is up to date, which in my case, we're not lucky. It is not up to date. So it doesn't have all the many changes that have been made in the official version. So piece of means we're sort of stuck. It's stuck in the sense that we can't use GitHub to do the search if the repository using has this forked from text below it. Is that comfortable for you? Are you okay with that much description? Yes, I can understand now. Okay, thank you. And now the technique to find it instead is go to a temporary location, clone the repository like this, get clone. So now I'm creating a local copy of it and get grep that. And now that tells me, oh, okay. And this is a fun one because it reminds us there are some places where the word master is okay. And others like this comment where it's describing history, so it's okay. There aren't any other uses of master. Let's try a slave just for fun. Okay. And here in a translation in Portuguese has spoken in Brazil and here in Java identifiers. So this is okay except for a Brazilian translation that needs to be corrected. Hi, Matt, could we check for maybe white list and black list? Sure. So white list and black list. So nothing for white list, nothing for black list in this particular plugin. So was that what you were wanting, Catherine, or was there something different? Yeah, because I thought I was running into the same issue that piece raised when I was searching for white list and black list, but yeah. Do you remember the plugin or the repository you were searching because we could use it as an example? On the sheet, the first one. You do remember the first one did not have any thumbs. Okay, so command launcher. Yeah, the command launcher. Okay, so white list and I don't see anything there. Now let's, I think since we've maybe developed a little bit of distrust, healthy distrust, let's copy this locally and do the same thing locally just in case GitHub is giving us something misleading just to see. So I'm gonna clone that repository. So no white list, no use of black list. Now there is a use of the word master and it's in German localization, German localization, German localization and in a test where that is harmless. That's never shown to a user. And now let's see, the other check was slave, right? And there are lots of references to slave but they appear to be in, oh, oh, oh no, look. Okay, there it is, good. So this one is a Java reference to slave but it's on the left-hand side of the equals. So it's okay and this is a Java identifier on the left-hand side. On the right-hand side, it uses the word agent. So this one looks generally okay. And then a bunch of things in tests and tests we don't have to fix them. So did that address your question, Catherine? Yeah, I did, thank you. All right, excellent, thanks for asking. So peace, did that, are you comfortable with where where we got so far? Yes, I am, I understand. Excellent, well, and thanks for finding that. Thank you for reminding us of the limitations of GitHub search. So, and let's make it very explicit. GitHub search ignores fork repositories. Their own page says so. Good, okay. Okay, Mark, I don't know the goal of this document but maybe you could give the list of the three commands that you made on your terminals so that when they want to do it by themselves they can just get inspired by the three commands. You know, the Git clone, CD, and Git DREP. Very good, yes, so when GitHub indexing is not available, a workaround is git clone. Oops, let's grab a repository name, something like that. So good suggestion, Bruno. That way it's recorded in the notes. Yes, excellent. Okay. I still have a question, sorry, Mark. I'm pretty new to all this. How did you generate or find all the URLs that Catherine and Peace were supposed to check for the terminology problems? It's just a list of all the plugins? It is, it's just a list of all the, well, what it is, is a list. I don't remember how I, Peace or Catherine, do you remember how we generated? I think it was that we took the list of plugins from maybe repository permission updater and just did some scripting to convert them into URLs. I think, yeah, so, oh no, yes, yes. Because what we wanted to do is we wanted to focus on popularity first and the Jenkins Update Center has a popularity count and this URL or a base of it. And so what we did is we grabbed the JSON file from the Jenkins Update Center that lists the popularity that not installed count of a plugin and the identifier for it. And then we rewrote it as a URL in this show. Okay, that's smart. Good, all right. So, and I think, yeah, so Peace or Catherine, are there other questions you have on that process? This is a request because I remember during the last meeting, we did a demonstration of how to change the terminology on GitHub and I think we agreed during this meeting, we'd go over the process of doing it locally. So changing the terminology locally, if you could just go through that again. Yes, absolutely, thank you. Let's do that. So let's change terminology locally as a demonstration and then let's put a reminder to Mark. Mark, please publish the recordings because right now I don't know that the recording from our last session is even available. So I'll get that done after we finish this session so that you can actually refer to the recording. Very good, good suggestion. Okay, so last time you have already shown how to fork and then make modifications and then make a pull request, push request. And so, okay. Well, what we're recording. Well, we have a recording, but it's a little different. And what Catherine is highlighting is that what we did last time is we looked at, let's see, we looked at one that needed changes like script security. Okay, so here's a good example. We looked at script security. And so we opened script security on its GitHub repository. We searched for and found, and I think the terminology problem we found was, yeah, that may have been it. Now I've got to go look, the pull request is here. We can read it. I think the one that we did was, and this is the lower in the list, which was a science tool. Oh, was it? The one we had done was, yeah, see, I see this one. Maybe it's been merged. Oh yeah, see, this one's been merged, but this is the one we used. So what we did, Bruno, is we did this demonstration entirely from the UI of GitHub Oh, okay. So what we did is we, and this was, we searched for the word master. And okay, we might do something similar here. We then opened this file at that location and then we used the GitHub editor, which is this edit button right here, the pencil icon. And we made a change and then we submitted the pull request. Okay, super cool. But this time this will be more complicated because we will have to make four kits on because you want to get this. Well, and what we noted when we, oh, whoops, we've got to get this on a branch. What we noted when we did that was, this technique using GitHub is a really good fit for one file at a time changes. But you're going to ignore the maintainers if a plugin needs 20 changes and you submit 20 pull requests. They're going to ask, please, could you do these in a batch so that I can review them all at once? And so what we wanted to do today is show how to do a larger batch. And it's easier to do a larger batch without using the GitHub UI. So this is, this one, yes, we could change that text, but let's do one that has a bigger, a bigger, a larger set of changes needed. Now we have to find one that has a larger set of changes needed. How about, let's predict, I'm going to predict that Git server is old enough and relatively un-maintained. Last release was 10 months ago, requires a Jenkins version that is almost a year old. So it's probably going to have some frequent hits. Okay, there's definitely a reference to master. Well, not many. How about slave? Nope. Okay, so, so Git server was a bad choice. Let's try another one. Let's try something else that we think might be older. How about, how about ant master? There's an attest. That's a good one. That's going to be a problem. Nope. Okay. How about slave? No. Okay. So my guessing rate is actually pretty poor here apparently. Sorry about this. How about, let's go a little further down and let's look at Checks API. This one I don't think is getting a lot of auto. It was last released two days ago. So it's probably long ago been fixed. Master is just a branch name, YAML. Okay, let's see. What are some other examples? We really need to find one. How about this one? Okay, last release three months ago. Well, let's see. Slave. Wow. Am I striking out? I'm not finding anything that has how about role strategy, maybe. Okay. That's slave. Maybe. I mean, there are a lot of references there. So that's hopeful, but not a lot of them that need an actual change. This is not going as easily as I'd hoped it would. Let's look for more. How about publish over? Master. Okay, this one looks more promising. No. Okay, so keep looking. How can you tell that I'm not being very successful here? How about mercurial? Plug in up for adoption? No, still not hitting the strings that I was hoping to hit. How about really truly? I am just terrible at this apparently. Okay. How about the CVS plugin? Probably not been maintained in a long time. Change log. Even there. I'm open to other ideas. How about? Tempted to write a script for all those people doing clone. And well, and actually I've got, actually maybe that's a good idea because I certainly have a copy of the entire Jenkins repository structure locally. So you don't, others may not have that, but it turns out I have it. So if we do an LS here. Sorry, Catherine, go ahead. Yeah, I think things are one of the things we can work with. Okay. The slave setup plugin. Okay, so you say it was? The slave setup plugin. Slave setup plugin. Okay, good. So let's take that one. Thank you very much for rescuing us, Catherine. All right. So here if I look for master, master, master, master. Excellent. So it looks, this looks quite promising. And let's look even more interestingly for slave. Yes. Okay. Already here's one that really should be fixed. Good. Very, very good. Excellent. Good choice. Let's do this one. Okay. Thank you. Thanks, Catherine, for finding that. All right. So when we, when we search here for slave, we see many matches. And as I look at it, for instance, this one absolutely should be changed because that is user text. This one I can't change, but there's one. We found one that should change. This one should be changed. This one should be changed. So there are several here that need to be, we know of at least three already that need to be changed. So with, and this one needs to be changed because it's in jelly. And, and so we've got four already that we know need to be changed. We could do those as four separate pull requests, but that's a lot of hassle. So let's fix these by using a local, working locally. Okay. So now if, are the two of you, Catherine and, and peace, are you okay if I use GH commands rather than using get commands? Have you, have you configured GH, the command line interface? No, I haven't, please. I only know about this one. Okay. Well, so, so if, are you willing to configure it or would you rather that I do it with pure get commands? Cause I can do it either way. I'll be willing to configure it if you guide us on how to do it. Okay. All right. So, so the things that you need to do is first you install GH, and that depends on your operating system. You can find GH, it's the GitHub. This is the one that we talked about on Saturday in the, in the orientation session there, the GitHub command line interface. And the reason I like this, you'll see shortly. So get love lab hub command line interface. You'll just click a download button. If you're on Mac OS, it'll suggest how to get it for Mac. If you're on Linux, in my case, I'm running on Windows. So it suggests how to get it for Windows. So then, Sorry to interrupt. If ever you're on Windows that already have installed Chocolati just Choco installed GH. Right. Right. Exactly. Very good. So, so there and, and there are several different ways to do the install. For instance, here are the install instructions for Mac OS. On Windows, there are like four different ways, right? So as, as Bruno noted, Chocolati is here. That's one. Scoop is another. Win yet is another. Each of those are different ways of doing install that work just great on Windows. On the others, for instance, on Linux, you can use homebrew. On free BSD, I just follow the Linux and BSD installation instructions and they work great for me. Any one of these. So, so I like the GH command because of what it does for me. So here I've got it and it's going to make my life simpler. So the one we were going to do was slave setup, right? So I copy that URL and I'm going to do GH repo clone. And now the cool thing here is I shorten this because it knows it's talking to GitHub. I do it like that. So this says use the GitHub command line, work on a repository, clone that repository from this location, the Jenkins CI account, the slave setup plugin. And it cloned it. Now I'm going to CD into that directory. If I look at the remote, it tells me, hey, origin is slave setup plugin. Now, I know that I need to do work on this thing because when I do a git grep minus I master, there are plenty of places that refer to master. And when I do a git grep minus I slave and let's do it even one step further minus I L, it says, here's a jelly file that has the word slave. Here's another jelly file with the word slave and we know we can make changes in those files. Therefore, I know I'm going to have to fork this. So I'm not going to say GH repo fork. Okay, now this command is going to do some really cool stuff because when I look up here, I actually don't have my own fork yet. So slave setup plugin, I've never forked it. So when I look at Markey weight, well, let's just do it this way. When I look at Markey weight slave setup plugin, it will tell me that thing doesn't exist. So excellent choice, Catherine, to choose this one. See, it says, Mark, you've never forked it. So I'm going to do GH repo fork. It says, okay, I created it. Would you like me to add a remote for it? Yes, I would, that would be very good. Now if I do a get remote minus V, now it says slave setup plugin is my origin and upstream is this one. Anytime I want to get the latest changes from upstream, I say GH repo sync and here it is. So now I've got my repository, now I can create branch. So I'm going to, let's see. Oh, I can do a get, check out minus B, and what names should we give it? How about inclusive naming? And now I'm gonna bring up my editor of choice and I'm gonna start looking for places to make corrections for inclusive naming problems. So you would use your editor, Visual Studio or Visual Source Save, whatever editor you prefer. I apologize, I use this one because it works well for me. So we're going to look for a slave. And now we'll see some things like here's the first one. This should become agent setup rather than slave setup. All right, so that's a good change to make. I'm gonna right here actually create a commit for that. Change the name, the plugin name, name Jenkins agent setup. Okay, one is done. Now I may say, ooh, there are other changes that I wanna make here like. We're going to skip the Java sources. So let's do our search a little better. Instead of this, we're gonna say start up HTML. So let's just look in HTML files because there were some there. So specify the command to be executed on each agent. And now we're just gonna use a little bit of let Emacs do work for us. We replace slave with agent. Yes, yes. Okay, do the search again. And I'm just gonna keep doing this. Now there is no expectation that you're using. Actually use whatever editor is comfortable for you. I just happened to find this one quite helpful for what I do. Whoops, let's try that again. Okay, one more. Now if I look at all the files that I've changed, you can see, hey, here are a bunch of them. I changed many of them. So in your editor integration, you'll probably have a way to create a get commit from your editor integration. Mine does it like this. So replace slave with agent in HTML help files. Okay, so far. So if we look at what we've got now, if I look at the log, you'll see here's my last change on the inclusive naming branch for HTML help files. Here's the one for changing the plugin name. And we've got some jelly files. Let's make, we've got just enough time, I think, to make those jelly file changes. And then it will be time to submit the poll request. Okay, so far, or any questions so far? No, from my hand. So the basic steps I'm doing is I created the branch or I first cloned the repository, forked the repository, created a branch and then started doing the edits. And it was that simple. We're gonna, again, queer replace slave with agent. And here, a jelly file I have to be a little more careful because sometimes there are things that are identifiers. Okay, that is, looks like tech. So I'm gonna replace it. Okay, now let's go to the next one. Okay, this is a case where it's using an identifier. I can't change that one. Slave setups, there. And then this use, those two should be safe to make. And here is agent setup. Okay, back to checking what else has changed. So now it's three files, three jelly files. So slave to agent in jelly files. So now if we look at the log, we'll see there are three commits, one, two and three that are different from master and that are different from the base branch. So now I wanna create the pull request. This is where I really like GH. GH, PR, create. So I could do this by pushing the branch and by then creating the pull request in GitHub. But GH, PR, create will take me through it from my local command line so I can do it a little easier and faster with commands. So it says, where should we push this? I'm gonna push it to marquee wait. And now it says choose a template and it's going to offer me the template that the Jenkins project uses. So, and if I fill in, this is a checklist and if I fill in those empty boxes with Xs, it says that I've thought about and completed that thing. So yes, I'm opening it from a topic branch. Yes, the pull request title matches what I want. This is the title. Yes, I've described what I did. And here we may want to for the benefit of Jenkins project is replacing less inclusive terminology like master, slave, white list and with more inclusive terminology. So we could even include references to old blog posts. Now in this one, I'm not gonna provide tests. So I put these double tilde characters that's on my keyboard the top left most character in the keyboard and that will cause it to be rendered in a strike through font. So I've prepared the text of a pull request and I've gotten to think about it. It lists what is happening. When I say this, it says, would you like to submit it? I click submit and it's created this pull request. Now, if we go look at the pull request, you remember that I didn't even have that forked before. Here it is now. And when I look at that pull request, here's my pull request. So Catherine and Peace did that. Are there questions you have on the process I went through the steps I took to create? You'll see that it has three commits. Here they are. It's now running checks to see are things okay? In this case, it's actually going to run the job on ci.jenkins.io and it will give us some test results and tell us, hey, how did it do? Thank you, Ma. I don't have a question so far. But- Yes, go ahead Catherine. Sorry, if any questions come up I'll raise over the- Okay. Excellent. Thank you. Sorry, Peace, go ahead. You had a comment? Yeah, I said I'm really happy about this because it's like I just learned something new and thank you very much, Ma. Great, well, and I confess, I find the GH command line so nice as a way to deal with yes, the GitHub web interface is great for creating pull requests. It's really very, very good. But there are things that I can do simpler and faster with GH than I do from the GitHub web interface because I'm already sitting at my command line, I'm already doing editing there, I'm already working there and therefore it was easier to use it rather than some other tool. Super, thank you. So since we did it that way, I'm going to move this directory into the place where I keep all my other directories like that. Thanks for asking because now I've added one more thing to the list of plugins that are forked on my computer. Any other questions before we close for today? Not for my head, but I'll be needing this recording so I can go through it again. Absolutely, and that makes sense. And the last recording and shame on me for not having published them both. So I will do that and get that ready so that you have the recordings and the examples ready to help you get started. Thank you. I have a question. I saw one plugin is depreciated. We work on those? Which one, what was it you saw? You said you saw one and I missed a word. Yeah, one plugin that is depreciated. Oh, okay, good. So deprecated plugins do not need any of your attention. That's probably something I should have filtered. So over here in the result column, if you'll just put deprecated, we don't want to waste time submitting pull requests to deprecated plugins because deprecated plugins will not get a new release. And if they're not going to get a new release, there's no reason for us to fix their terminology. Okay. Good question. That you may also find plugins that are archived. And if you find one that's archived, we're not doing those either. Thanks for the clarification. Very good. All right, any other questions? I don't have any question. It was just super informative. I learned a lot of things. Thanks a lot, Mark. Well, and thank you. Thanks, Bruno, for joining. Peace and Catherine, thank you very much for what you discovered about GitHub search facilities. And I learned something. I'm very grateful. This is great. Thank you. We'll plan to meet again next week and I'll get this recording published within, say the next, I hope next 12 hours. I hope to have it published before I go to sleep tonight. Thank you. Thank you, Mark. Thank you. Bye, everybody. Thank you, Anne. Bye-bye. Bye-bye.