 This is GitLab plug-in modernization, it's the 11th of August. Harsh, I think the topics we've got for today include interactive testing, code review and feedback, and the GSOC 2023 project branch, which I think means, let's talk about milestone two status, milestone three status, milestone four status, and it's perfectly fine if we say some of them are nope, nothing further to do at this point, or etc. Five status. What other topic would you like on the agenda? Yeah, I'll discuss about all those four milestones. And like, what you have taken the interactive testing of milestone two, so have you completed all of the things that I said at the same point? I have completed several but not all. So interactive testing of milestone two, so still in progress. More progress today, today and tomorrow. So the progress, go ahead. So how it went like other than this like auto merge, was anything else broken? No, no, no, no other problems. So no issues detected. Except. And this one may just be me making a configuration error except auto merge did not happen. On six on CI job success. And the reason seemed to be that CI job success was not notified to get lab.com. And I don't I, part of me says that's probably because I made a configuration error. Like, in the post build actions you said this thing right. Yeah, well so that's are you okay if we take a minute to look at it now. I think I mentioned a line from the read me file about that like what the post build action to actually accept the merge request on finishing up of the job. Okay, so let's let's look at my job definition because maybe that's the entire gap. I thought I had added publish, so I had added publish build status to get lab. Yeah, so you have to add the post build actions. And then the additional action that I need to add. Okay, which is, I think, except, okay. All right. All right, good. So, so we may have the privilege and I'm going to ask it to delete the source branch even better. Yeah, save it now. Okay, so now what you're, are you okay if I do this test live. Yeah, yeah, fine. Okay, cool. So let's go here and we're going to find tasks. We'll pick another one and then rewrite the URL because that's easier for me. Okay. So here we have merge requests to open this one is the one that is on branch. So remember new branch e so let's look at this build it built on let's make this text readable it built on new branch e so that's a good. All right, but the build is successful but it hasn't merged it says pipeline is pending. So I think what you're telling me is if I do a build now. And I should have configured it to take less time hang on just a minute. This will run but it's got a sleep in it that seven seconds long because I was making wild guesses about what might be causing the problem. Let's delete this sleep step while we're waiting. And now let's check ready to merge. Okay, I've approved it pipeline is still pending. Here is the build and it built that and doesn't seem to have notified or maybe the notice needs to arrive. Maybe we need some time before it arrives. Okay, so still. Now, now one thing I could do here is I could say cancel this pipeline and do another change to see if maybe. Yeah, before that can you show me your like post build action thing again. Sure, you bet so configure here. All right and so here we have accept the merge request. Now I had clicked delete source branch. Okay, are there other post build actions that I need to add. No, no. So this is the job that you're running right like the job you're configuring is it is the job that you're running. It is that's correct. Okay, so let's let's try a different experiment just just and then let's start it by a push from get lab. So I'm going to go back here to the to that branch to the merge request. And I'm going to make an edit in the file. Now I've got to remember how to look set to auto merges is not. Well, let's let's make a change first. So here we go changes. Edit. How do I make this edit now I have to navigate. Remember how the navigation works so it is commits. I would like. So if I click on the most recent commit here. And then will it give me an editor here. No. Let's edit in single file editor. That's what we needed. Okay. So this has some junk times in it that can be deleted. Okay. Remove a few timestamps. And it's committing to new branch e commit changes. Okay, so this this is fun because now what we're going to see is here it's already entered pending. So the job correctly started based on that change. And if we look at the changes here, it will tell us, hey, remove a few timestamps so that that is what I expected, and the job succeeded and took one and a half seconds. Now let's go back here. Look at this, it is approved. Well, the pipeline shows as pending. You have not clicked the set to auto merge option, right. I did not that's correct, but the pipeline being pending has me perplexed here right. It should have noted that the pipeline is finished, because this job has finished. It was started by a get lab push by mark weight. And let's double check maybe I've got duplicates in there and that's 151 no not even duplicate so it's just that push that I did from the their UI from the get lab UI. It doesn't cause the job to run, but somehow or other it says though the notification is not coming back that the pipeline was successful now. Is there an additional action I need to add. Is there something else I need to do inside the job itself to notify one thing like the job and the pipeline are the same things right. I'm not getting confused or something that that's my understanding I think when over here when get lab calls this thing a pipeline. They're talking about any CI or CD job that runs that that was my assumption now I that's I could be wrong it may be that what I need to really use is a, a true Jenkins scripted pipeline, but their document. Yeah their documentation said hey, you you you they actually recommend freestyle which is what this particular job that I'm using is now now should others maybe there's some setting that I'm doing wrong here let's take a look at it. Is this a work in progress merge request okay is this a work in progress it is not. Okay. And like can you go to the pipeline again. To this thing. Yeah, there is a job section also. Is that something different. Oh, good question. I don't know let's see so here is this job. I don't know that links to the same thing. Okay, good, good, good question though. Like job in the left in the left most side, below the pipeline. Yeah, okay. That's what's that. See this, this as far as I understand it is forget lab CI CD so I don't think this is what what I want I don't want to use their CI CD I want to use Jenkins as the CI CD. They are CI CD they are calling it jobs and other CI CDs they are calling pipeline. Okay, I think so. Well and I suspect if I defined a job here, I think it would even appear in the pipelines tab. But, but for them pipeline is any CI CD jobs is their specific CI CD implemented with get lab. Like I just, I saw the code and I don't think so there is any problem in it, like there was one problem that Chris identified about the life changes, I mistyped it from small B to capital B that's what I had to do but like, other than this, I don't think so. Wait a sec. Oh, you may have just said it, you may have just said something. I did change this build name from lower case, from uppercase Jenkins to lower case Jenkins. So we try it, you said something about uppercase versus lower case should we try this. Yeah, I mean I don't think it does this any harm. Yeah. Okay, so let's, let's try that. And now I'm going to make another change again from. Okay, so if we look at the commits. And we click here, no click here. And then we do edit single file. And this time we need to delete something that we'll never care about. Like, how do I get there to delete it. We're going to leave one line from the stack trace. Now I challenge you to tell me after the fact without doing code chain without doing diff, which, which line did I delete because of course you remember every one of those lines from the stack trace in the document. All right, so here we go now commit that change. Okay, so we should now see here. On this job there it is started by get lab push. Let's look to see which change it was that did it delete a line from the stack trace so that's doing what we hoped. So get lab trigger Jenkins. And now, oh, maybe we should look at console output is there anything here. Okay, there isn't anything here that tells us, but let's look here. Merge request no it's still not. Okay it's not set to auto merge I'm going to set it to auto merge, but it still says the pipeline is pending. I think may just need more investigation for me to decode. What is it that's going on because I expected that to do the auto merge, or look in the bugs maybe this is a known bug that somebody else has already seen. One more thing that can happen is there is a problem in merge request state that like what we did at that time for fixing the merge request was to put it to all and we didn't use opened updated and all those merge request states that were available in the plugin, but they are not available in the good lap or j. So we did that with the merge request. Maybe that's causing the pending and stuff because like it's opened and it's reopened and it's a different thing it's updated the merge request and it's a different thing updating a merge request is different than opening the merge request. Maybe that's why it's not able to get into the correct action of doing it so that's okay so so there the concept is in in in the rest easy rest easy version. We had, we have a different mapping, we have a different set of enumerations we're using then we do in get lab for j because get lab for j doesn't provide all the same mapping all the same enumerations. That's good that's something I could check because it may be that what we're seeing here is this this failure to notify about pending state might be that get lab is ignoring whatever we're we're sending to it and saying I don't know what that means for a pipeline. Now is there a way with get lab for me to see their, their web requests that have come in. Yeah, for doing that you have to tunnel it like maybe you can use an engine of the tunnel all those okay right so I need to put some intermediary in there that will let me watch the the exchange that's that's a separate diagnostic. Okay, good. I used to do that for checking the API request and stuff, other than using girl of course. Right. Okay, good. All right, so let's. Well so I think. Okay, just a minute my man. Oh yes. Good. All right. Okay, sorry, separate business distraction that just occurred got it. I'm back. So, yeah, go ahead. Yeah for this can you show me like the reproduction steps for this issue so that I could debug and see like what's going wrong here. So are the steps that I've taken so far that'll be in the recording good enough or would you like to see them again. What would you like to see I'm happy to try to show them again. Like, how did you like I'm not getting that set to optimize option in the pipeline so. Oh, okay, all right that's and I'm not sure what I did so let's look at that to see okay so so I think you're so what you're saying is, you don't even see an option in in your merge request that allows you to enable auto merge. Yeah, this this thing okay which I think is some sort of a settings down here so let's let's look settings merge requests. Merge commit automatic squash allow merge checks. Okay wait a sec where is auto merge. Like I linked get labs documentation for that. And I followed all those steps which get left told me to do but I couldn't see. Yeah, okay so let well and I'm I am not sure what I did. So let's let's look at it and see so this says. Okay, so if you review a merge request and it's ready to merge but the pipeline hasn't completed yet you can set it to auto merge. Oh, oh maybe that's maybe maybe the reason you don't see it is your pipelines are completing and mine aren't maybe so in your own study. No. Yeah that that could be an issue like I'll have to make the thing longer I guess. Let's let's check it so if I, if I for instance make this thing run for 45 seconds. Right let's put a sleep in even better let's sleep for 90. So we're going to sleep for one and a half minutes. So that will guarantee that it's, it's not going to complete, and we'll have enough time to watch it. So now if we say tasks merge requests. Okay so and this time just for fun I'm going to change branch it no no let's stay on the same branch, excuse me. Terrible tester doing terrible testing things. Let's stay on one branch. Okay, so here we go delighted delete a line from the stack trace we're going to delete another line from the stack trace. Okay, delete three lines from the stack trace. Okay commit those changes. All right so what what what. I thought that I overview commits nine delete three lines okay there's the commit and the diff shows correctly three lines deleted and now here we are running. And it's running it will be running for at least 90 seconds. So if we look here we should see the pipeline is pending and it's no longer got the auto merge thing. Interesting it's just got a merge button not even an auto merge because it's checking pipeline status. But, oh now that's exactly what happens with me. Well and and so the challenge here is, this is reporting check line by checking pipeline status. I suspect, while the pipeline is running. When the pipeline finishes, it still it switches to pending, instead of switching to to done where in your case it's probably switching to done. And then I'm getting a directly to merge. I'm not getting that auto merge which you're getting so right which which which makes sense then it probably means I've got some configuration error, either a webhook that's defined wrong, or a string that's defined wrong. And that's causing this thing to to when the job finishes so we are at now one minute for we're about 15 seconds away from this finishing. So in about 15 seconds, this thing will switch from checking pipeline status to to pending rather than finished. Yeah, right now now the proof will be in okay so now the job has finished still checking pipeline status. Okay, maybe not. Oh wait a sec but back to back to maybe maybe I've made them maybe I've caused a different mistake by changing from uppercase Jenkins, or from lowercase Jenkins uppercase maybe I really did break it. Well that's why interactive interactive testing is like real human beings use things so okay so let's this one has uppercase. This one still keeps forgetting delete source branch that's interesting. It just doesn't remember that okay that's a bug but that's a different bug and that has nothing to do with your changes as far as I know. Okay, so let's go back here and check again. It's still checking pipeline status so I'm going to change this from uppercase Jenkins back to lowercase Jenkins and save it. And we're going to do another, another, another build. We're going to add another commit and run run another build commits. Sorry harsh do we need to stop here have I taken more of your time right now. I am free I'm free don't worry. Okay, alright great. I mean for me what this testing is telling me is the code's actually in quite good shape. Right this is this says the code is actually well very well behaved and we're just trying to diagnose a surprise and it's always good to diagnose surprises. But I'm not terribly worried about this particular surprise so remove I think it was about six lines. Even more lines, roughly six. Okay, so committing the change. Alright now if I look from this tab here on the merge request. It shows Oh now it's way to sec. Now it says pipeline pen oh lower uppercase Jenkins becoming lowercase Jenkins seems to have changed the behavior. Right here it was lowercase Jenkins before it was uppercase Jenkins before and it would not show the status at all. Now it reports the status. Okay, so what this really tells me is, I probably need to reconstruct this scenario from the very beginning, and be sure that I get all the names correct in all the right places because what we're seeing is. Okay there's a different behavior. The job has now finished right and it built. Let's see what the changes where it says remove even more lines so that's the correct change. There's a lot of failure and we see that this is now ready to merge and I could set it to auto merge but it won't auto merge because the pipeline is still pending and it's probably pending because I've got some configuration error. Okay, let's I propose we pause this discussion we've probably got about as much from this as we can let's let you talk about the other milestones. I think there is one more issue like the pipeline is setting up like the pipeline is setting up to pending, but like what what should be happening is you set it to merge like you set it to auto merge, and then the pipeline is to pending and then it succeeds. What's happening is, you're not setting it to like auto merge, but the pipeline is pending, then you click on the auto merge, then you want it to succeed I think the flow is not the best one. You know that part I'm not sure I understand help me talk me through that again so you said, I, what I saw was, it's, it goes into pending, and I'm not yet set to auto merge. Yeah, so what should be happening is you, you have to set it to auto merge, and then it will go in the process of it being pending and then it should be like a successful job is successful and it gets to the grid lab. So set to the auto merge, I think you're, you're not setting it to auto merge before the thing goes to pending for some reason. And that part, at least what I'd observed is I generally can't because what happens is, I'm going to set it to auto merge now. Okay, it's set to auto merge, but as soon as I make a change. It revokes the auto merge. And, and then yes, yes, yes, yes, yeah. Yeah. And now, I think still let's delete. Let's delete three lines right. If we hurry, if we hurry now. So we just deleted three more lines and if we hurry now. We should be able to see this thing. Checking pipeline status. It hasn't done the enable auto merge yet because this thing is still building. Okay, right. Although I think I think maybe you're right in terms of while pipeline status is being checked I'd really like to be able to say auto merge I'd like auto merge to be sticky. When the pipeline finishes successfully it merges but in this case. Okay, now could not retrieve the pipeline status. Oh, that was interesting. And now it's checking pipeline status. Okay, so here we are. It's completed. I've obviously got some more more testing work I need to do here harsh. Clearly there's more. The behaviors are surprising, but I think with more testing and more careful configuration I can at least understand why it's behaving the way it's behaving. Anything else on milestone to status before we let you describe the other milestones. Okay, so yeah, have you tried the combination combinations of like mixing pointers, which I said, I have not a lot of things together. This is mixing tests, perform mixed mode tests mixed tests, as described in the testing document in the testing earlier in the testing outline. Earlier I have not yet, I will do that though. But this like auto merge, if it does not work like even after you completely restarted your like pipeline, if it still does not work, then maybe you can write some guidelines are like, maybe I can watch the video again to like see how to get the auto merge setup right. And then I maybe I can, I or Chris can debug like what's wrong here, because I don't, I don't think I missed messed up anything else in the code base I, I tested a lot of things in the code base but before telling I had to do the interactive testing I did things on my part, but of course I was not able to. But I was not able to get the auto merge working and some more things, but I tested a lot of things before like doing that so yeah the code base was in a very healthy shape when I committed things but yeah. Good, very well and congratulations on that that's great so so for me if auto merge does not work describe more details, and I can either put them in a Google Doc. Yeah, you can obviously read Google Docs, Doc or chat, whatever if it's if it's anything longer than a few a few phrases I'll probably do a Google Doc as most likely location. Like before before like in the auto merge system, maybe you can read the read me also because I like the push build action that you left it was from the read me file up. Right. So I think. Good. Yes, absolutely. Okay, anything else. About. Let's talk about the milestone three now. So in the GSOC office hearts, John Mark told me to focus on the automated tests because I was making my mentors do manual labor, which he didn't like. So, I was, I was trying to figure out the automated test, and it's not in a good shape. Like I wrote a lot of things on the Gator channel explaining what the hell is wrong here. I think it's really not in a good shape. And I'll try fixing it but I don't have much positive hopes for that to be very honest, like the tests that are not working, they are due to the descriptor and the previous tests that were based on the descriptor being null and still able to work. Actually what happened was, due to the descriptor being null, it was causing problems it was giving me extra logs of illegal argument exception and I'll put exceptions a lot. Well, when I was just starting out with a code base I used to get some creepy random errors which I was not able to understand which I now understand like what the hell is wrong with this. So, because the descriptor was null, and I added a null check for that it was not previously in the code base but I still added it. And because of adding that again tests are affected because tests want the descriptor to be null, and when the descriptor is null but it somehow bypasses it in between like I think the author literally forced the testing into this system. So, not in the best shape, I must say, things are not that good with the test. I'm not talking about Docker based test. So, and that good so you're you're looking at what do we do with the tests that are not the Docker based tests. And I think what you said is currently, there are some tests that depend on a null descriptor and usually a null descriptor means that it's running a Jenkins rule test are Jenkins rule test is a is a higher level integration test where there's really something mostly Jenkins like running. And, and they are, they are more expensive to run because they take longer to start, and more work to tear up, but they are also much closer to a real production environment. So, so if that's one of those where you may consider the tests that depend on an old descriptor should we just discard them and replace them with Jenkins rule tests, I mean, I, I'm not sure. Like, I wrote really long things on digital channel, maybe you can read that. Okay. I think I described them but using Jenkins rule, I, yeah, that would be possible. But I'll have to see because like what I want the author was trying to do was he was trying to use the YAML files for the get lab configuration and he was just like trying to compare like the values are same or not like he was asserting the same values or not. So yeah. Okay, so this, these were relatively low level, almost unit level tests asserting very small kinds of things. Yeah, like Jenkins has a code configuration he was checking and it was very, very unit level. Like, he was just checking if the connection configuration that is being set is equal to the connection configuration that is expected by the get lab YAML file. Okay, well so and those those kind of tests, while while they're interesting are not not nearly as worrisome to me for deletion, as if we're deleting something is doing an interesting test right, deciding that the YAML is correct. That that's, at least for me I think not as valuable therefore if you need to delete it and say look, this test is not valuable, make a comment when you delete it and in the deleting commit and say I propose to delete this test. It's just not valuable enough. And regarding like, it's just not with this test like this test was major one because it was involved with a connection test. Other tests are also failing like they are similar to because everything needs a connection to get live right. So all the are almost like dependent on connection to get lab and all of them were getting the descriptor problems and like get lab API token implementation problems and all. So yeah, but once you once you see the Gitter channel you know what I'm talking about I got some really crazy shit there. Okay, good. All right, so mark review. Good. Okay, thank you. I can read through the read through the messages. Don't worry. You're welcome to tag me as well but I can read certainly read through the messages. There should be three or four I guess. Okay, great. So that's the status of my son three bad. It's not good. I'm coming to the milestone for it. It's not that bad like so help me with the one line the one sentence description of milestone three this is the enable enable tests. They are blocked. Like, sorry, you I'm not I'm not being clear with my question just a minute I'll, I'll get what I need by looking online just a second. So here what I'm you you've you described the milestones in okay there we go milestone for is enabling proxy settings. Milestone five is improving documentation and milestone two is migrating web hook. Okay, so I see those in the in the commit message in the description of the pull request. All right, got it. They are blocked. Right. All right, so blocked on on yeah test barriers on tests that require a get lab connection. Good. Okay. All right. So my son for I tested quite a lot of them, except authenticated like proxy servers I was not able to test because of my engine next thing. So I'm expecting that you guys can test using Apache or anything that you want. But yeah, other than that the proxy was perfectly working like the way I wanted to. I checked the API so curl and all, and they were working the way I wanted to. So it's not a problem. The changes in the milestone four are quite like small. So it should be easier to merge as compared to like milestone two, which is a very, very big chunky thing. And of course for milestone five, five, it's just documentation changes, but it's not that big of a problem. Okay, good. All right, authenticate so authenticated proxy settings are the key thing there. So authenticated proxy settings are working like if you enter the wrong username or wrong password it will give you a 403 forbidden, but I was not able to test the authenticated one. Right. Engine proxy manager has a bug, which I shared I think. Yes, in the GitHub issue so like that's that's what is causing the problem and I was not able to fix it for some reason life. So authenticated proxy settings when the authentication is rejected right that you tested. Yeah, that was successful. Right, so the thing when proxy settings when when authentic authentication is allowed, or is accepted, right so that's the one we need to test still. So you can add into documentation like in the my phone five, the processor documentation is also added so you can easily refer that and but it's for engine proxy manager actually so you'll have to figure it out. But that has the basic guidelines on how the proxy will be acting as a middleware between those things. It should give you a good amount of conceptual clarity on what's on how I set up the reverse proxy setup here. Great. Good. Okay. So that's what it's like Chris has to add his documentation changes and I thought that like before, like I was also contributing to other open source projects. And when I saw like, when I started to again read the code basis of different big big open source projects, I came to an understanding that I should not be easy with documentation because because it causes a lot of problems to newcomers actually. So I decided to give a brief about all the things that are happening in a in a class so that people are easily able to understand because if if I show this like project and stuff to a third person guy who is in my institute studying computer science. He'll be shocked as hell and what the guys what this guy is trying to do. So it's just the most user friendly thing. Good. I can add a bit more documentation once Chris starts also adding but it's my son five. I should be worried about my son two and three first. Well, I agreed that milestone five. Milestone five is certainly less less important than the the earlier milestones right those those earlier milestones are are the real value of the project. So, very good. Just like testing interactive testing is in progress. I'll give it I so I will drop I will drop off and disappear beginning Monday morning my time and won't be won't reappear again probably until next Saturday or later I'm going to go into the mountains and relax. Which mountain actually you're going to. It's it's near a place called Bear Lake. So it's just a little lake in northern Utah in terms of what you would think we will my wife and I will drive eight hours and meet with my brothers and their spouses and we'll have a lot of fun. I actually saw a lot of YouTube videos on Utah. So yeah, it's actually very beautiful face. I saw cars driving and like a lot of mountains there. But yeah, it's a very beautiful place. All right, any other things we need to cover. Yeah, so like some some some general things like what's happening. So, my camera code has increased. And I'm like, I also wanted to ask like this, the goal summer of code will be ending like the coding phase will be ending till 28. So, I am skeptical about it that I'll be able to fix that all those tests till the 28. So what do you think about it because I am quite. Even if I fix a lot of tests, I think some of them will be like left. Like the action resolver because like it is absolutely difficult to like section resolver. It's that bad. I and I understand and I think that's, that's okay you have we we can never guarantee ultimate success of every change we start in the project that is not a problem I think you've done a great job of on your efforts. I think the progress you can make is greatly appreciated and we just keep going so the end of the project August 28 does not end. The interaction in the code base with Chris and me and eventually the Basel and others so so I think you're just fine if some of the tests aren't passing at the end we declare they're not passing. We're at I don't think there's any shame in that I think you've done an excellent job of getting us this far, and we would love to if we possibly can push it all the way before the end of the project, so that it's at least merged to the project branch, but let's let's keep working on it and see. Yeah, that's fine. One more thing, like, before, like, the GSOC will be completed till 20 other coding phase will be completed, and the complete GSOC will be till I think like mid of September or like something like that I like and some presentations right. Yes, go ahead. Before that, can I, because I'm getting an opportunity to like apply to Linux foundation mentorship. So can I apply into that because like, I'm getting the opportunity. I won't be able to get the opportunity to apply in the spring term and all, because I'll be having all like all my exams in there, and I have some other plans for that. So I'll be kind of messed up. So I'll have to distribute my time a bit, not much time but yeah a bit of time to that also. No problem. The real is so final week of standard coding ends August 28. So, so you are you, your, your responsibility to the project ends August 28 in terms of coding. I believe there's an expectation that you'll do a final evaluation yourself. And then sometime in September, a 15 minute present demonstration during the online meetup. So at once we're at August 28, your time commitment is very small. Yeah, and the Linux foundation mentorship starts from, I think, third or fifth September. So I think I should be fine if I do that. Okay, yeah, if, if, yeah, good luck. I'm kind of managing my time that I remember I said that because I started contributing to different code by I really got shocked like oh it is difficult, but when you know the code will not difficult. I was, I was contributing to Thanos and so well, like it's a CNCF project and it's a very prometheus and Thanos, it's a very good project, and I did some two three PRs on that like around 400 500 lines. And I think it's going positively, but yeah it was. And the first time you see a code base it's difficult. So that's why I thought, maybe I should describe the code base. Great, very good. Good. All right. Any other topics we need to discuss. And I think I'll still be there with the community because like, like GitLab plugin gets stabilized a bit, not that it gets into the production right. So I think I'll stay there for a bit more. And if I think after that, the community should not need me much. I'll be fine after that. If you are welcome to continue as long as you're interested in the community, we would love to have you, but I also understand you've got a university degree to work on you've got other things you need to do and that's, that's perfectly fair. No, like, I'm like, what will I do is like, if the plugin and like the project and what will I do in the community that's the, that's the more major question that I have interest up like upon interest Jenkins and cloud breeze are like, they're very major communities right, it's a very, very big community. And there are a lot of things to discover like what's happening with the UX side what's happening in the infraside and there's a lot of things to discover. So it's not about the interest it's about what will I do. Oh, I can, I can give you that's a that's a that's a there are there are so many things that you choose where you're interested and there's work to do there. If you'd like to learn more about get there's lots to learn there if you'd like to learn more about about test automation, lots to learn there if you'd like to learn more about UI UI technologies and how do we deal with user interfaces in a project as mature as as Jenkins is lots to learn there so you, you pick any area of interest and I'm confident we can find a way to apply your interest into the Jenkins project. I'm confident of it. There are so many things we have to do. I actually wanted to see how big open source projects actually work because I tried some open source projects with a small like the ones I'm contributing they're also really really big like Prometheus everybody knows it. It's a star of monitoring and observability everywhere. So yeah, it's just fun getting involved in open source, and I think I will regret not doing data structures and algorithms good. And that's okay you learn something there maybe data structures and algorithms is a very useful course good. That's great. Yeah, just if if you're interested in Hacktoberfest for instance so beginning October one will have a 31 day event in the Jenkins project where you could have an opportunity to act more as a mentor than as a as a coder if you'd like to try a mentoring experience Hacktoberfest October one to October 31 will be something like that. And so there are all sorts of opportunities to help. Yeah, you're right about it like mentorship is also good thing right like these are contributors also become mentors like Chris Chris did the same thing right. Exactly. Right. And, and that's what that's what diraj Joda did do diraj sing Joda did the same thing he he was a mentored student last year and this year he's acted as a mentor mentor contributor and this year he's acted as a mentor. And, and it's, it's a good thing to. It's a good thing for you also professionally because eventually you'll be get into a career where you'll probably end up mentoring other people and practicing how to mentor is a good is a good thing to learn how to do. Right, that's like maybe into some like communities project or some more difficult projects, I will move out from the good luck plugin because if I do get up again for a long amount of time I'll get bored. And that's not the thing which I want. And that and that's a good, a good approach it's you want to choose something that is interesting to you. So it may be, I'm interested in Java 21. I'm interested in JavaScript frameworks I'm interested whatever things you find interesting. Then, then I suspect we can find ways to meet your interest in the Jenkins project because it's so broad and so deep there's so many things happening in it. All right. Anything else harsh before we end for today. No, I think it's fine. All right.