 Welcome. This is the inclusive naming project for Jenkins. It's the 24th of May. Thanks for being here. So today's topics we've got contributing to open source and and what we've proposed is specific to the interests of the individuals in the call today. So the idea is and and then peace has asked how do new contributors benefit from helping the inclusive naming project. So these are the the two general topics, then if if we feel that it would help, we could also do a review of the general ideas in the contributing to open source workshop. Now, those for me are just general purpose and so I think they're less interesting than if we talk to the specifics for you as individuals. And and I think actually your individual interests can be of more benefit to to open source projects than if you attempt to contribute some sort of generically. I became well, I became a maintainer the get plugin because I was personally interested in making sure it didn't have bugs. And and that maintain maintaining turned into a very helpful thing for me for my company, and ultimately leave for me professionally. So those kinds of stories are very real for most people who are contributing to open source they had some reason they started. And that reason turned out to be beneficial to both them and the open source project and because it was beneficial to both. They kept doing it. So, so peace let's take your question first if that's okay how do new contributors benefit from helping the inclusive naming project so. So now as I think back to some of the people who joined. She called Africa's contribute on this time. It's, it's a first indication was learn more about GitHub. Get GitHub, and software development, right, they may not have had initial experience dealing with that and already contributing to inclusive naming helps that they learn more about. About software development and about well let's take it this way about localization and internationalization. Now I don't know that you realize that you learn things about that but you were working with strings in English language that will eventually some of them need to be translated into into non native languages. Learn more about software build processes and test processes so you when you submitted a change, at least a few of the changes caused the continuous integration process that was supporting that to break. So hey there's something new, you made a change. It was immediately tested and that immediate testing told you, oh, hey, this is a problem because this change. So that's continuous integration continuous delivery those kind of things. And then, of course, you helped a an open source project be more inclusive. So those were the kinds of things that new contributors gain. It's a good place. This is a really good place for things like there's an initiative that happens once a year called Hacktoberfest. What Hacktoberfest tries to do in each year in October, Digital Ocean. This is a cloud provider sponsors an event called this event Hacktoberfest that invites people who may have never contributed to open source to make a contribution to open source and it can be as small or as large as they wish in these changes and inclusive naming are good small changes that really help the project. So you did work finding which things need to be need to be changed that I didn't have to do that a plug in maintainer didn't have to do that someone else didn't have to do and so your contribution gave me time to work on other things. So peace did that answer your question well enough or is there more you'd like to like to ask about it. Yes, my questions are awesome. Thank you. Okay, so Catherine, I wanted to rotate to you now. And let's, let's ask, I'm going to ask each of you so Catherine peace and nafisa I'm going to ask each of you for tell us something about some of the things that you find interesting in software development. And let's try then to see how we could take that interest and let it grow and develop as part of an open source project. Catherine, share one or two things or three or four things that you think are. Oh, I think this is interesting about software or this. Okay. What I find interesting at the moment is the documentation side of it. Because, well, when I'm building software I really just have to refer to documentation. So, if I feel if I understand about it, if I'm able to read the documentation, then it improves it improves my coding process dramatically. Yeah. Okay, all right. That's what I'd like currently improving coding experience by having by better documentation. Okay, there's what are there other things that you find interesting. Well, currently, I'd say, I don't know if it's, I don't know that it's generic, but really it's the whole build process of building features, adding them to existing software. Yeah, those, mainly those two things. Okay, adding new features to existing software. Very good. Okay. All right, well, so let's, if you're okay with it, I'm going to take and I'm going to sort of try to time limit myself to not spend more than five minutes because then we're going to switch and we're going to ask the same question to piece spend five minutes on it and then ask the same question to and spend five minutes there. So I don't want to, I don't want to spend a lot of time on each because most of these I could bore you for a very long time and I could talk an awful lot and not help a lot so let's so let's talk about documentation cycles. If you're okay with that and we'll spend, I'll try to spend roughly half the time on documentation and half on build process and how you could help in an open source project. So in terms of documentation cycle, there are Jenkins has multiple areas that need documentation help. And now let's talk about some of those areas that need documentation help like the primary website. This is library dot Jenkins that I owe and it has. It has user documentation user tutorials administrator documentation. It has blog posts of techniques tools ideas. API reference documentation. It has. Let's see some other examples. Oh, it's got. Yeah, it's got developer documentation. It's got developer tutorials. For any one of those things you can find weaknesses just on this primary website, where, oh, this this thing is not adequate or this thing is not adequate or some aspect of this thing is not adequate. And each of those would be a significant contribution where you would learn something about in this case the implementation language ASCII doc and the implementation structures that are being used the way the site is constructed how its content is organized, etc. So that could help you then professionally as you find ways to express those same things in projects you may be working on at your employer. Now that's just for the primary website. Now if we think about there are other things beyond the primary website, like, oh, I really need a better layout here just a minute view. We don't need print layout there. Okay. So, if we talk about other other other sites like every plugin, each plugin has documentation. And each of those plugins, some plugins are plugin documentation is so outdated that it is stored in a read only location. We migrated to a location where it can be changed. So some plugin documentation is so outdated is out a little outdated and needs the latest latest features described in the documentation. So each of those is is sort of small examples now. Now you may say oh but I'm not interested in the primary website or, or plugins I'm more interested in documentation as it relates to infrastructure Jenkins infrastructure is maintained in public repositories and needs documentation for things like run books, a run book is a set of instructions to guide someone how to perform specific tasks structural discussion descriptions, how things work together. What relies on on what that kind of thing. All those things are part of that documentation. So, Catherine, we're in danger again I'm just talking and talking. Is there any one of those areas that is a particular interest to you in in the documentation cycle. Yeah, what's what's of interest me is is especially the user documentation developer and API documentation because I already know how to do the tutorials and blog posts. Yeah, so the documentation of the technical side of it is what I'd be interested in. Okay, well so, so then let's let's spend just a minute on a little deeper dive. I'm going to take just one of those this API reference documentation. And let's look at on the Jenkins website as part of Google summer of code. The project that was proposed it wasn't this one ultimately was not accepted but this automatic specification generator for the Jenkins rest API was a project proposal that came in and I think if we look we can also see in 2022. Yes, here it is good. What I'm saying is, hey, the Jenkins rest API really would benefit by having a generated document that describes its endpoints, what they are, how they respond, etc. And there are many, many of them so it needs to be automated. So, this is a project idea that you could review and say hey this gives suggestions, you want to do something big here's a something big that will hint to you. And we hope it will be selected for Google summer of code 2023, but it's a so automatic rest API doc generator. And now just to give you some of the scary factor of it. This was assumed to be based on our initial estimates at least 175 hours of work and you may say, I can't do 175 hour project. But then you might look at one of these new, these friendly issues and say, okay, what if what if I took just a small issue like how to improve the rest API documentation for one of these plugins that's described here, something like that, and that kind of thing. And this is now there's another document. Oh, go ahead, Catherine. I'll just start acknowledging that at least I've seen the, the workflow to that I'll have a look at the API documentation later. Great. Now there was another project that actually has been accepted. And that's the pipeline steps steps doc generator. And this one. And if we look at it's 2022 version. This one actually will be worked on during Google summer of code. And again, what is this highlighting there's there are interesting things to be done in in that area. Now we've hit my five minute limit. Okay, if I shift gears Catherine, and we may come back to the adding new features, the build process and adding new features to software if that's okay. Yeah, that's okay. All right. Okay, so then peace, we're going to take you as the next as the next candidate for this same question. Peace share with us a few things that you find interesting about software development. Actually, what I find interesting is similar to what Catherine said, especially the documenting API. I find documenting API interesting. I find I'm creating build process, thinking, organizing, making edits and creating pull requests. Those are the things I find interesting. Okay, great. Well, so then let's Okay, so since we've talked about documenting API is maybe we take your suggestion let's take creating build processes, and we'll see if I can give you some, some ideas of ways you can contribute there. And then if that's, that's good we'll continue with the next is that okay if we do creating build processes then. Yes. Okay. All right, so let's, let's look at some places where where Jenkins has Jenkins builds at multiple levels. Right, it's got Jenkins core Jenkins, there are things called modules. Jenkins. Jenkins tools and tools and components let's see tools and let's call it Jenkins. I don't know how you maybe let's just call it Jenkins build tools. And then Jenkins infrastructure. Each of these has places where where you could be involved in a build process that might you might find interesting. So, as one example Jenkins core delivers weekly releases. Weekly releases have a have a release checklist that we run every week to confirm that all the parts of the build are successful and ready. I'm going to put a link to that release checklist it happens to sit in and on my house so I've got a location here. So if you're interested in, hey, what's it like to release a Jenkins version. This is Jenkins core weekly release, and we run that weekly release, and then we do this checklist and it checks things like Docker. Deb file, RPM MSI war file, etc. We also have a about once a month we have LTS releases are are delivered monthly. And then then LTS releases have a release to have release checklists. Now the release checklist here is run by the release lead. And one way you might be interested is hey what if I became the release lead to shepherd a Jenkins LTS release. And so let's take a look at one of those LTS checklists. This is and let me get here we're going to bring it up so that you can see it. So here is the LTS checklist that has been started for the next Jenkins LTS it will be released in June of 2022. And this this person Alexander Brandes has agreed to be the release lead under the guidance of our release officer Tim Jacome. So here's this release checklist and the release lead assures that the checklist is done. There are a number of relatively interesting technical challenges here. This for instance, create the pull request ops create the pull request where is it backporting here we go this one. Open the backporting pull request which means you have to know what should be backported. You've got community agreement on it so there's a coordination effort that happens happens here and conversation this. This is not uncommon actually also in large corporations where deciding to do a release, we need to discuss what should be in the release and what shouldn't and so practicing by being a release lead for a Jenkins release helps you get ready for employment where you might do these same kinds of things, negotiating what should be in the release and what shouldn't. So, and that's just Jenkins core. Now Jenkins modules are, let's call it let's combine them into this plugins and modules will combine them into a single thing. These are independently released. independently released by the maintainer. And if you found that you were interested in experiencing Jenkins plugin release what you would do is you would adopt the plugin become a maintainer and release the plugin. I have learned many things by being a maintainer adopting the plugin and releasing it now that I said very three very short phrases there, and there's actually quite a bit hiding in that the Jenkins adopt a plugin idea is. That's here we go is described here. And what it talks about is the process you follow to adopt a plugin to to grow your skills enough that you could become a plug in maintainer. The contributing to open source workshop was initially focused on how could we prepare people to be main become maintainers, how could we prepare them to adopt. Okay, I'm running out of my five minutes again. Peace, are you okay with what I've described so far would you like me to go further. Yeah, I would have loved you to go for that. Okay, all right, so I'm by the way you should feel free to interrupt don't. I tend to talk and talk and talk and I apologize for that you are welcome to interrupt at any time if you've got a question say mark mark and shout if you need to. I love when you explain it, I love when you explain and you talk a lot. We get to learn so much. Well, and thank you for being. Thank you very much for for being part of this and I think, I think there is much for us, all of us to learn as we do these kind of things right there are so many things that that we learn about this that we can also then apply professionally. Oh, you know what this is like what we did in the Jenkins project or oh this is like how I did in this other project I was helping. I helped them. And what do you know it helped me professionally because I developed some skills that were really useful elsewhere. So let me put a link to that contributing workshop in there just in case somebody wants to to use it. I have a question. Yes, once once this program is complete. Do we still get to attend the office hours. Oh, absolutely. Yes. Okay. Yeah well okay oh that's, you know what I'm going to go back now you've you've raised a very good question Catherine. That is that you that I have to go back for this one so we were talking about documentation cycle. Right. And all I talked about is the places you could help. But what I didn't didn't mention was the fact that there are people who would love to encourage you as you help. And that's probably even more important than the places right. So Jenkins has documentation office hours every week. Those office hours they happen at two different times, one during a time for Europe and Eastern US. A one during a time for Asia. Oh sorry, Africa Europe and Africa you're in the same time zone. I should not be continent centric there that's not fair. One time wondering in time for Asia and Western US. And what you could do if you'd like to be involved is just join those meetings. And let me put a link to their page because, because the Jenkins documentation office hours they're mentioned on the here let's just go this way Jenkins and we're going to look in sub projects know community. The documentation the special interest group, and it's got an office hours link here that tells you when they meet, and where you can find the recordings, and where you can find the documentation that we use to track it so our next meeting is this Thursday Europe time this Friday Asia time. Excellent point that how do I find someone who will help me I think is is a good question and these office hours are an opportunity to to be able to drop in ask questions. Oh I hit this problem how do I fix this. Oh I've got this thing and the people there will happily help. Thank you. Okay, so peace let's go back to your question sorry about the side track but I had forgotten to mention that there are people who are ready to help not just things to do. Okay. All right so so getting involved in build processes inside Jenkins there are actually several different layers that that may be of interest to how things are built. Because inside Jenkins core, there are inside Jenkins core. There are pieces there are JavaScript components built with assembled with one set of techniques. There are Java components and assembled is probably well Java components compiled with Maven. And then there are, there are packaging done with MSI Microsoft. Deb Debian and Ubuntu RPM for red hat. And others like open Susie. And of course, the root of them all is the war file. Java. So maybe you want to learn something about how the packaging works. And this is a great place to contribute. Oh, one more Docker for containers. And each of those is a place where help is is needed and greatly appreciated. So if you said, Oh, you know what I would like to know how packaging works. And then you can go find which of these things are of interest to you and how could you help in that area. Now, onward to plugins and modules. So if you choose to, you may say, Ah, you know what, Jenkins core is big and kind of scary. I'm not sure I'm ready to contribute to Jenkins core. I mean, it's so big. But I want to find a plugin. They're fairly small. Maybe I could find something where I can learn and not worry about doing harm to others. Well, let's look at Jenkins plugins. And let's look at plugins that are up for adoption. See if we've got. Oh, here I have to find it a different way. So let's see Apache. This little plug in says it is up for adoption. And so if I click this label adopt this plug in what I see here is there are 108 plugins in the Jenkins plug in set 108 of the 1800 plugins that are up for adoption. You may say, Wow, okay, well I'm interested in maybe you're a GitLab user. Get lab plugin is up for adoption. Maybe you're you say, Oh no, these things at the top of this list. There are lots of people who use this. So for instance, this one that I just opened is installed at almost 300,000 Jenkins controllers. You may say that's too big for me. I'm nervous about that. Okay, let's check something small. You may say, Oh, I'm interested in in reporting disc usage. So I want to adopt disc usage or maybe you're interested in the Maven release process because you want may want to do something about releases and the Maven release plugin may be interesting to you. You could you could offer to adopt that one. Others like, let's see what I recently adopted and not too long ago. Here's one port allocator. This one's a fun one because maybe you have a specific problem where you say, I'm working on something I need to improve. And it needs to allocate a port so I can start a service on a port that's free. And this thing actually does that for you, it will help you find a free TCP port on your Jenkins controller in case you need to use it. And so you could say, wow, I'm going to adopt this. Well, guess what, you'll get to learn something about security because this plugin has a problem that needs to be fixed. You'll get to learn something about development, because you're going to have to build it in order to in order to fix it. Okay, I should probably stop now and check that I'm not. What more is there more that you would like to know or like to discuss around Jenkins plugins and modules. For me right now, no, I'll probably ask more questions later. Okay. All right, so then, then there are still other things in terms of the build processes. There are build tools so these are typically maven, maven plugins that Jenkins uses things like so when I run. Then HPI colon run uses the HPI plugin. And that's maintained by Jenkins. And so it needs, it may need enhancements. Java 11 changes in the build tools are in progress right now, Java 17 support if you're interested in who I want to learn something about new versions of Java. These are all, all things that are happening relative to Jenkins build tools. Now, you may say, oh no, I'm not as interested in those. What about tooling for infrastructure? Well, Jenkins infrastructure has things like update center maintenance. So in order to decide to download a plugin. Let's look at my Jenkins installation. I go here to manage Jenkins manage plugins and I see this very attractive little number three. That number three says there are three plugins that are have newer versions on my Jenkins controller than are on my that are installed. So this one needs an update. This one needs an update. And this one needs an update. Okay, how did they know that they needed that update? Well, the Jenkins update center generates the list of currently released plugins as a JSON file that 300,000 Jenkins controllers download to check for new plugins. So there's a lot of work that happens there. You can optimize or improve that. It's a big benefit. There are things like documentation generators. And here for pipeline steps for Java extension points and and many more like that that Jenkins infrastructure also has code around configuration the Jenkins controllers like CI Jenkins that I own and trusted that CI Jenkins that I own and weekly that CI Jenkins that I owe. You can imagine there's a lot of configuration that happens in these large things and we do it all with code. So there's plenty of places to code in each of those locations. So peace did that did that answer your question or would you like me to, would you like to ask some clarifying things or get some further descriptions. Yes it does I understand what you were saying. Great. Okay, well we've got about 15 minutes left. And are there other things that you would like to review or would you be okay if I switched into the general ideas in the contributing to open source workshop document. Yeah, that's okay, we can review it. Okay, good. So, so let's let's talk briefly about what this things concept is, because it's what where did it start and why so in DevOps world 2021. I did a workshop called contributing to open source and as part of that in this one hour workshop I was trying to persuade people why they should help open source projects in this case Jenkins by adopting a plugin. And so what this does is it takes them through. Okay, what do you need to do to install your your Java 11 development environment you get Maven, etc. How do you configure Maven then how do you fork the plugin yourself, build it locally. And then we start the process of improving the plugin. And now it's this process that for me was most interesting for a new contributor, because each of these items is a relatively simple thing. I can do one thing and then I could step away from it and go back to doing other things. And it's valuable. So it's, this is sort of the sweet spot for me in trying to find ways to help open source projects. I want something that is interesting to me, small enough that I can accomplish it relatively quickly, but useful to the project that I'm submitting it to. And so these things are specifically in that kind of area where you say, hey, if a Jenkins plugin doesn't already have a Jenkins file. That means it's not being checked for continuous integration it's not being regularly compiled. It's not a good thing. Let's add a Jenkins file to it. That helps a bunch and the actual effort to do it. Well the Jenkins file we add is a one liner. So it says in that one liner we put that in build plugin. So most Jenkins plugins thankfully now have this already so most don't need it but if you find a plugin that's interesting to you. This is a great first thing to do and it's very low cost you just create a file named Jenkins file. It has one line in it build plugin. Now if we if we say okay what what else that's that's done, but then there are plenty of other things like again this one update the parent palm. The Jenkins build process uses Maven and Maven uses this thing called a project object module model palm. So the project object model model the palm uses a specific version of its parent. And very frequently that parent has developed newer versions newer versions have been released and the plugin is not using those newer versions and the newer versions have new capabilities new enhancements that would help that plugin if they would just upgrade to the new version. So you take that step let's update the parent palm and now this one may cause interesting interesting challenges interesting things to be discovered. Oh, I need to do this or I need to do that, because updating the parent palm exposed a new set of checks. Brought in a new set of rules about what can and cannot be included in this plugin and the plugin was not complying with those rules so you may as part of updating the parent palm. Also need to change some source code so that the new parent palm can be used. Again, add a Jenkins file and update the parent palm both pretty simple things to do update the parent palm. It's one line change. So whereas this parent palm previously was 3.50 I changed it to 4.27 or right now if we fix this it's now 4.40. And then I had to compile with this now what am I doing I'm learning about maven compilation. This will run automated tests, if some of them fail now I've got to investigate test failures, then I'm going to commit it and push the change. Create a pull request and, and I've now with two simple changes been able to improve the plug in and learn something myself. Now the other changes here. For instance, the base Jenkins version there, when we create a plug in we also say what minimum Jenkins version is it supported on and that needs to be updated periodically because the Jenkins project does not support really old Jenkins versions. So there's no reason for me to be building based on those old versions. Similarly, these other changes, each of them is relatively small. This one will teach you something about the way that Jenkins defines its web pages using a language called jelly. This one spot bugs will teach you about static analysis, looking for bugs that a program can detect in other programs. So spot bugs is, is a great thing to use if you're doing Java development professionally, you absolutely should enable spot bugs because it will help you find things that you might have missed but the program can find for you. So those kinds of things will go ahead. I have a question does work for other languages and frameworks like react and JavaScript. Excellent question spot bugs specifically does not but there are other tools that do perform. So what what spot bugs is doing is it's, it's a form of analysis called static analysis. And what static analysis is is it's a program running to inspect the source code of other programs. And so there are JavaScript static analysis for react. And let's see what what this search shows us so here we go here's one locastic offers something 11 tools to help you catch errors. So log rocket gives us gives us this. And so here are several that ES lint this one is used in the Jenkins project. Others I think I've seen some JS hint. I've definitely seen PMB. I've seen. Yeah I've seen somebody use LGTM I've definitely seen use of sonar cloud. And we use that depend about all the time. So, yeah, they, there are lots of static analysis tools to use the same technique with JavaScript you wouldn't use spot bugs but you would use the same technique. Catherine did that address your question. Yes, it did. Thank you. Back to the notion that if you're interested in software development you'll learn things by contributing to open source that you then apply in your in your professional environment where, oh you know what static analysis can help me write better programs because any bug that a another program finds in my program is a bug I didn't have to find myself. So why not. Now there are there are other changes here like, well, here's a good one internationalize messages and help. Now that's a that's an entire field, where those of us for whom English is a native language we have the convenience that most software is written in our language. Others who for whom English is not their native language need us to internationalize and then translate. And, and the techniques to do that are both interesting, common, and a lot of work. So we're, we just started effort in the Jenkins project to do a better job of internationalizing and localizing and part of that has led us to a company called crowd in has donated a service that they host for Jenkins the Jenkins project called crowd in Jenkins.io. And this thing helps people contribute translations. So here we see, well look at this we've got multiple contributors to every single one of these projects. And if we look at a plugin that I maintain here you see Chris Stern submitted the simplified Chinese and the traditional Chinese translation, Bruno Roger often contributed the French, Alexander Brandes the German, and a photo Italiano ill. So I did the Italian is I'm not really good at Italian but I'm adequate. So, here's another place where before any of this could happen. I had to internationalize the elastic access plugin so that these people could then provide translation. And, and it worked great for me and great for them and what I found is there's a lot of work to internationalization and new contributors could help with this significantly. So these kinds of ideas. Now this whole stack of things improve the plugin with pull requests, all of these things can be done without ever being a plugin maintainer, you could pick one of them and work on it. And that would be it, no requirement you didn't make any longer term commitment. Hey, you know what this plugin has been interesting enough to me. I want to maintain it. Well, then there are yet these other things you can do that will you that are yours to do after you have become a maintainer of the plugin. I have been talking a long time thanks to both of you for being so patient. Are there questions that you have or things that that I should, or there are there specifics about any one of these topics that you would think would be interesting to you. So for me, I'd like to explore all these aspects, especially in regards to Jenkins, because I feel like I'll uncover aspects that have not encountered before, which is then that that's the time I'll get clear questions. But right now right now it feels like we've explored at the high level. And yeah, it needs more time to digest everything. It's great talked about here. Yeah. So, so you might you might then consider taking on a you might say okay which if you're interested in that general explanation you exploration. You might look for a plug into adopt and say okay I'm going to begin the process of preparing myself to adopt a plug in and maybe you choose something. If you're the nervous type like me you may choose something that's fairly low on this list, where you say okay I, I want. Maybe I go out all the way out to the very tail end of it and look at which which of these might be interesting to me. I'm actually interested in software configuration management SCM and so this one might be interesting to me file system SCM, but you might be interested in software test reporting. So test link might be interesting to you or you might be interested in static analysis like Java NCSS. And okay what is Java NCSS and should I be should or maybe you're interested in in virtual in virtual machines and then you say oh maybe I'm interested in virtual box, pick any one of these and start exploring and see what you could what you could get in this thing. I have a question. Right now, I'm working on an e-commerce application, which requires, of course, using a couple of plugins when integrating some features. So are there plugins that relate to that e-commerce realm. Okay, so and I'm not sure. So you said e-commerce? Yeah, e-commerce, e-commerce application. Oh, e-commerce. Okay. I see. Right. Okay, good. All right. So, so when we talk about e-commerce in this case what you're talking about is something like a transactions between businesses or transactions between a consumer and a business. Yeah, because I've seen some, there's some aspects where you need to integrate like payments. You need to integrate shipping and you need to use plugins for that. So does Jenkins have such plugins that are used for that function? Good question. I'm not sure of anything that does payment, payment processing. Now there is, it's a pretty common thing in e-commerce environments that you have to deploy the software to you have to deploy new versions to your e-commerce provider platform. You need to make a change to your business logic or something like that. And if that's the case, then one of these deploy capabilities might be a thing. Maybe you're interested in Azure. And you say, oh, I've got to deploy on Microsoft. Well, Azure Container Service here, Azure Apps service and Azure Function are all three up for adoption. So, or maybe it's, oh, you know what, I want to, I've got to do it to Kubernetes because our target is Kubernetes or, oh no, I need to deploy to another location or I want, so these might help you there. Now, in terms of actual payment processing, I don't know that there will ever be a payment processing thing for Jenkins because that's quite distant from where Jenkins usually operates. Okay, that's a good clarification. Yeah, thank you. Thank you. Thanks to both of you. Now, I guess I've got an open question. I think we've reached end of project. If you'd like, I could see us meeting one more time or we call this done and I give you my sincere thanks. What's your preference? Well, I don't know because this Saturday is the last day, right? So I'm guessing this is the last one. That would be my assumption is that I think we would call this our last session unless there's something where you say, oh no, let's do at least one more for further conversation, but for me this feels like we've accomplished what we wanted to do. Yeah, and I'm sure I'll be meeting in the office hour. Great. I will, I'll be meeting you there. Absolutely. I attend the office hours. I will definitely be here this there this week I will be playing with my son and his wife in another part of the country next week so I won't be available next week but the office hours will happen because Kevin will run them. Okay, well I'll not be available this week. I'll probably next start next week but I'm sure we'll meet somewhere within the Jenkins universe. I am certain we will. All right, thank you so much. Thank you Catherine thank you peace. I'll post the recording probably within the next 24 hours. Thanks very much. Thank you. Thank you.