 Welcome. This is Pipeline Help Project Meeting. It is the 14th of April. Thanks for being here. So I think what we want to do is take on are there any questions that you may have first or topics that you wanted to raise? For me, a question was how has the experience been going through the the initial preparation steps? And have you have you found problems? Have you had things that we should discuss here while we're together? None for me. I was able to scan through the first five steps with no major issue. I know the challenge of having these working with blue ocean. So I don't have been able to create pipelines, but just simple actions like maybe I call something. But yeah, I still I didn't get still the challenge I had was I didn't get enough resource material to help me work with the blue ocean. So that was like my major challenge. So yeah. Okay. Well, and there are there if you're interested in them, there are several maybe I should link to these Jenkins minute. Just let's see if I can find them. Yeah. So so the Jenkins minute video series was a series that was done some time ago that outlines various pieces of of blue ocean. So maybe that's one that you want to look you may want to refer to in case it helps it. Ultimately, I don't know that you really need it, Sophia, because just just having experienced that you've already got a lot of what you need that you've understood. Okay, there is such a thing as a pipeline. Here's how you would define one those those kinds of things. But if you are interested, let me paste a link to this. And then you can you can see those videos. And if I recall correctly, when you open one of them, I believe the others may be linked to it. So let's open it in YouTube and see if I'm right. No, I don't see the link. So I believe there's actually a playlist of these of these videos. So let me let me see if I can capture the playlist. And that way you've got the whole set of them. If you want to, they really are one or two minute video clips. So they're they're not a lot of effort to watch. And they can prompt, Oh, I could do that. Oh, I could do that without a lot of a lot of push ups without a lot of challenge for you. So let's see. See the Jenkins minute video series for examples. For me, at least they they were they're quite helpful in Oh, oh, I can do that. And oh, I can do this. And and those those kinds of ideas help me realize, Oh, I can do conditionals. I can do parallel stages. I can do things like that. So so hopefully that will help. Thank you very much. I appreciate it. And maybe let's see if I can. Maybe I can find the link now while we're all here together because I am quite sure that I've seen a Jenkins minute playlist. Mark, I actually just popped it into the chat. Oh, you do on the YouTube page. So I found the playlist links in the chat now. So that's available. Perfect. Thank you. Okay. So here is you. You are wonderful. Thank you very much. Okay. So I'm going to just put this in. We'll get that corrected in the document. That way, Sophia, you've got it and whoops, wrong one. We want to put it in the link. Very good. Okay. So what you'll see is over on the right here, there are nine different videos of Jenkins minute videos, each one truly one or two minutes long that talks about different features of of how to use Blue Ocean and how to use pipeline. Good. Any any other questions on that topic, Sophia, or topics that you'd like to ask about? None for now. I was able to create a pipeline for just one detail. And it's fun. I've not actually tried it with NodeJerys application. I actually just talked at I stopped at step seven. So yes, I was able to walk from one to seven on one myself. Excellent. Well, and and these these these in step eight are are actually quite a bit more complicated. They really take you through and a full end to end experience creating a Java application. This one or this one with NodeJS, if you're already familiar with Node, it actually you end up looking at a live site running on your own computer that is that is was built and created by a Jenkins process for you. So on port 3000 of your computer, you'll see you'll see a copy of the website visible and it's okay. It's a simple site, but the concept is, oh, wow, I've got Jenkins running and I've got Node running a website and I can see them both in my browser. Good. Excellent. Well, the other is if you find a problem here because you are you are bringing to us a potentially different platform than we may have originally developed the tutorials on. If you find a problem, raise a question in the Slack channels because you may actually have found a real problem that other users will be affected by. Okay. And don't be shy about telling us there's a problem. Sometimes people think, oh, it must be me that's making the mistake. No, no, almost always. It's the documentation that's making the mistake, not you. Great. Okay. So now those steps are good to get you started. This piece is the piece that I think you may find interesting after you get through the pipeline work because building a Jenkins plug-in is real development work. It's fundamental development work and that fundamental development work will prepare you for the code changes you'll need to be proposing as you find places that need more pipeline help. So encourage you to get to this spot as soon as you can. Afi, did you have any questions that you wanted to raise? Yes. So I had questions about the pipeline. I also go to the step seven. So yeah, I just had questions regarding creating the pipeline and finding, but I realized that Kevin sent the playlist. So I quickly went to check it out and I go back to the core. So that was really helpful. I will complete the rest of the steps after this and then I would go to the next part for the plug-in. Great. Very, very good. Okay. Now for each of you, one of my worries is that some of these things are quite demanding of internet bandwidth. For example, when you downloaded the Jenkins war file, were you able to download it in less than an hour? For example, because it's 70 megabytes, so it's quite a large thing. Is your internet bandwidth fast enough there that you can actually download Jenkins and not have to wait an hour? Yeah, it was pretty fast. I think the only thing was installing because you could either install it as a domain and then there was also another option, which was not really recommended. So that was the only thing. But like the bandwidth, it was very, very fast. It wasn't really an issue. Okay, good. So in general, you're not terribly harmed by slow bandwidth. You've got very reasonable bandwidth. Good. And Sophia is the same true for you. Your bandwidth is generally okay. And we may have lost Sophia temporarily. Okay. Great. So, Afi, was there anything else that you wanted to ask around your pipeline experience or that you wanted to share with us? Okay. So with regards to pipeline experience, was that for Sophia for me? For you. Okay. So, regards to that, it was quite easy to follow. I remember being confused as to which, like, does this LTS, like the long-term support version and another version of something, knowing which one to choose, but I guess if you have prior dev experience, you like know which one to choose and then there's steps to follow. And I think the only thing, changes are made with more like mini typos. When you open documents, I saw it made an edit. I don't know what I did, but I am sure it's probably an edit. I didn't really have much more like problems. The only thing I think I'd love to add is, like, the path for the installation of Jenkins. Like, if you don't want to use the domain user, like, okay, so for, for example, Windows, right, if you are supposed to install it, you have to go through certain steps, like five or six steps. And you have to actually find out on Stack Overflow in order to do that. Because you could get certain errors, right? It has to do with testing credentials. Yes, that part. So I wanted to propose, like, to add it in, if that's okay, other steps so that, like, people do not really have to struggle. Very good. Yeah, so, so this, and in this, this set of instructions, I think I made a mistake here that rather than just saying, hey, follow the installing instructions, I should have said specifically that since it is a development environment, if you're on Windows, it is easiest to use the war file rather than, than the Windows installer. And now that's, that's contrary to most of our experience, right? Most of us know that on Windows, I should use a Windows installer. But because of this being a development environment where you're going to start it and stop it, destroy it and recreate it all the time, it's usually best rather than using the Windows installer that, that you're correct has these, these complicated questions that you have to answer in terms of doing a production deployment on Windows. The Windows installer want, recommends settings for a production server, right? It's, it's offering, you know, separate credentials, separate accounts. And, and those things are important if you were running this for a group of 10 people or 100. But, but for your development environment, it'll actually get in your way. So separate credentials, separate accounts, separate directories, and all those things can, can actually be a, can, can be at OPS, can be an impediment, can slow things down. So was that, was that clear enough for you? Did you have a question there and why I'm suggesting that it would have been better if I'd advised you, hey, use the war file? Okay, it was actually resolved. I actually found like a way out. So that was something that I just wanted to add to the documents in case someone wanted to use a route that I used. So I didn't have to go through this same process again. Yes. Good, very good. And, and we would love to have that submission. Thanks very much. That would be great. Great. Okay. So now have either of you had a chance to look at the snippet generator yet? This is one that's quite important. And if you're okay, I wanted to take some time today to demonstrate it. And I was going to use the demonstration today just to highlight the kinds of problems you'll be helping us solve. So if the two of you are okay with that while we're recording, I'm going to, I'm going to take you through this, this experience and, and show you how bad some of the things are. And as we look at how bad they are, you're going to understand, oh, there's a lot for me to help improve in this area. Would you be okay if I did that as a demonstration? I would love that. Yes, that's totally fine. I'll love that too. Great. So I've got a, I've got a little Jenkins server that I run at home here. Oh, except it's offline. Well, that's not nice. Let's use the other one that's online. Okay. Here's my nice little Jenkins server that's online. And in this, there are, among other things, some jobs that use pipeline. So in this case, the get client plugin has a pipeline job in it that builds its master branch. Okay, this job then is, if I look at it's how it runs, I can see here's an example. If I click this one, and look at replay, it'll show me what it would run. And what it would run is this pipeline definition. And that is using these other things down here, etc, etc. Very, very, very elegant thing that it does, that I only wrote this very little bit of code up at the top and some other really smart people provided all the things I needed. Now, if I need to make changes to this, or if I'm creating a new job, for instance, I'm creating a brand new pipeline, I might do that by saying new item, a pipeline, and we're going to make it a pipeline. And soon I'm going to get to some hints down here. Here, I'm just going to have it for the for the short term, do a very simple little pipeline definition. All right, now I save that I've created this, it's not a terribly useful pipeline, we know it's not, it's going to tell us, hello world in the console output. Well, that didn't help very much. However, when I start, when I go back to edit that, to configure it, right below this script section is this hyperlink here pipeline syntax. And this pipeline syntax is the helper that will let me find ways to express the other things I want to do. So maybe I want, okay, I would like to check out some code from git. So I'm going to say checkout. And I want to use git and the thing I want to check out is I'm going to actually check out the git client plug-in source code. And I'm just going through this filling in the form. And here it's saying, okay, are there any additional things? I click this generate pipeline script button. And it tells me what I paste in. So now I go back here to this, this thing, paste it in. And I now have a working pipeline that's going to do a checkout. Now it's a lot easier for me to read if I do these kind of things. So what I just did is said, hey, I got hints by clicking the usual way I would define a Jenkins job. And it then shows me what I paste in here. Now when I save this and build it, it's going to first say hello world. And then after it says hello world, it's going to do the checkout. And so you'll see here, I got all the checkout. It did a whole bunch of work for me that just by my adding that checkout that I pasted in here with this little syntax helper. Now the challenge though is that I can now get help on these things. So I can, for instance, get help here that tells me what to do, get help here. That help is great. But if I go looking for help on the Jenkins site. So let's go to the Jenkins documentation site here. And I'm going to look for the pipeline help. Let's see how about checkout, SCM. That was the step I used. And now here is this online help page that is about this same thing that I just did. You remember I used checkout. But notice the amount of information that's here. Okay, maybe I know I've got to look here at get SCM. And there's a bunch of online help here. But when I look at other examples in this thing, it will have much less helpful information. It doesn't tell me. So for bizarre, an interesting UNIX based, typically UNIX based SCM system, it doesn't tell me hardly anything. Or if I look at the build step, this is sort of the the really glaring example. Oops, wrong one. Pipeline build step. This one, you'll see this long list of things that can be called. These are parameters. And now I read one and it says, oh, okay, run. That's all that it tells me. It's got a name, an ID, and a description, but no mention of what those things mean or how to use them or why you would use them. So this kind of, wow, why doesn't this help me more is where we want your help is you're going to discover exactly those kinds of things and say, hey, I can provide much better help than is already there by understanding this thing in the context of the pipeline and providing changes to the plugins that provide these things by giving them more help and more online information about them. Questions so far. Sorry to be scary and frightening, terrifying. It's by plugins. Is it the one on the other page that lists down like, for example, dot net Java plugins? Are those the plugins you're referring to? They are. Yes, that's correct. So Jenkins is extended by plugins. So here's the plugin site and, and for instance, that plugin that I used to do the checkout, it was a Git plugin. So I used this Git plugin to do checkout. And, and that is just implemented as a plugin. So this build step, if you, when you see this, this page, it has this nice helpful link right here, right below every one of these steps, it says view this plugin on the plugin site. So I can click that and here it takes me to, okay, now I want you to watch this. Let's go back. You see all of this material. And yet when we go forward, that's the total documentation for that plugin. That's not nearly enough, right? There's a lot more that we want that should be described there that will guide people and help them. So, so we know we've got a lot to do to do a better job of describing how to use, how to use these pipeline steps more effectively. So, Afi, did that answer your question? What's a plugin? Great. Okay. So, so here I was doing using using the syntax, the snippet generator and, and this, the things that I showed you here of using the snippet generator is already something that many users don't realize is available to them. So one of the important things that you'll do as you're helping add new pipeline help steps, as adding new new, adding pipeline help two steps, is you will recommend regularly that they use the snippet generator to help them. Because what we get is we get frequently complaints from users that they were reading this detailed document trying to figure out what to do instead of just going to the snippet generator and letting it help them. So they were, they were thinking, oh, I have to read this thing that looks like a programmer's reference manual, when instead what they can do is use the snippet generator and let it help them. As an example, let's take, let's take this add badge thing that's being offered right now. So if I look for add badge, here's the online help for add badge. Now, I confess there's an awful lot of add badge icon is a string, text is a string. There is no description anywhere here that tells you why you would add add a badge, how adding a badge would help you, what the meaning of the link is, what the meaning, but if I do that same thing here, okay, I want to add a badge that is, I'm going to be lazy, I'm going to add an info badge. The text should say info and the ID is some info, let's actually, let's do it this way, an info badge and an ID for badge. So there's, there's what I paste back into my pipeline. Okay, let's go back and do that. It's the same simple process. I'm going to paste this in there. And I'm going to put the badge right after I do the checkout. Okay, so first let's see where we're at. Here we are. Remember how this page looks, I'm going to do a build now. And it built, oh, look at this, see that little I, there's my info badge that I just added. And when I click it, it says, so again, I added that, but nowhere in that material did it suggest why you might, what you might do with an info badge or an error badge. And, and so one of the things you're, the two of you are going to help us, help us with is you're going to help us better help users as they learn, oh, I can do this with this thing. And so here we go. Let's do something really scary like H one, a large heading. This is going to be completely out of place. And, and we should all be ashamed of me for doing something in a recorded place like this, but we're going to do it just for fun. So I'm going to add another, another badge and this is going to make the page look terrible because it just put a large heading right there. All right. So, so that, but, but that's the kind of thing that we can do here. But we need to get that message to people who are, who are defining these pipelines. And right now, when they look at pipeline syntax help for badge, they get no help whatsoever. So what you might do is say, look, I'm going to go, you open up this plugin and this is the plugin. My goal is to add help to this plugin. And, and that's, that's a great goal because there are lots of ways that this plugin could be helped. Does that, does that be, does that give you a little better overview of, of where we're going with the pipeline help steps project? Yeah. So, so now the reason why we put this build the Jenkins plugin step into your starting, into your starting experience is because in order to submit a good pull request, for example, to the badge plugin, you're actually going to need to check out the badge plugin and build it. And you'll compile it locally on your computer and you'll use it in your Jenkins installation and you'll experiment with it there. You'll make changes, you'll propose, you'll, you'll commit those changes, you'll build them and see that you really are, they are visible to you. And having done that, then you'll be ready to submit a pull request that we can yet then use to discuss and see, hey, is how's that doing. So that's why this build a Jenkins plugin step is in there is because you're going to need this when we get into doing the project. And similarly, this task on modify existing pipeline help is, is a specific step. It shows you, hey, let's take exactly this thing. In this case, the example takes you through a specific plugin and you make a change to it and prove that you can see the change in your Jenkins installation. Fair enough. Yeah. Excellent. Any, any other questions for today? So those, the second step for this was Apache, right? I was wondering if you could just run it using some or quite a year. So the second step was to install your patch and even and sorry, I missed the last part of your question. So you wonder if and then I missed the last part due to some audio breakup. Okay. So I was wondering if you could just run it with the XAMP, like XAMP, or this is quite different because I went like through the steps and put it in my like my directory and all that. But I wasn't getting the desired outputs. I decided to like try again today, but an alternative is to run it with some like Apache. Ah, I see. Okay. I see what you're asking. So, so this, this thing is actually a build tool that happens to be provided by the Apache foundation. So it's not actually an Apache web server. Oh, okay. Okay. Okay. So I remember seeing Maven like when using Java, like in IntelliJ, you build with Maven, but I just wanted to be sure so that I didn't do anything wrong. Yeah. Yeah. No, you definitely did not. And so when you're in IntelliJ, this, this should be well behaved. The in, in this case, I had you do it outside of IntelliJ because sometimes IntelliJ makes things a little more complicated. So once we're sure that you've got it working inside or outside IntelliJ, then certainly you're welcome to, to work with it inside IntelliJ, or NetBeans, or Eclipse, any of the IDEs. Yeah. And IntelliJ is an excellent choice, very good choice. Thank you. Any other questions? I wonder maybe if, maybe what I should do is give you some links to see if I've got recordings from past sessions that we did last year, because that might help you. Then again, maybe not. I mean, truthfully, the most valuable thing is just take your time and go through these steps, because as you go through the steps, you'll, you'll find questions that matter to you, and we can then discuss those questions and, and get your answers to them. Okay. That's, that's great. So in case of anything, when building the Jenkins plugin, we'll put it inside the Sheikot Africa Slack channel here, so that people, you could reach out and then. Exactly. That's the perfect place to ask the questions, and we will happily, happily give you answers there. Absolutely. Um, Mark, I wanted to ask regarding the Jenkins pipeline help, you were, you gave an example for instance for the batch, and it's just really helpful. So you, in the documentation, there are actually no examples in the documentation, so I didn't know. Um, are we including something like example or probably just describing um, add in the description, or I really, um, wait a minute. Good question. So, so there is a strong preference for examples, because examples help the users, they like to cut and paste. So here in, in, let's, let me use a plugin that has some examples so that we can talk through why users care so much about examples. That's a, it's a very good question. So let's, this one, for instance, the get plugin starts with, oh, we're going to talk about some examples, how you use credentials binding, how do you use get credentials to perform a get operation. And so what this provides is an example that a user can cut and paste, and this example should work for them. So they, they will need to put in their credentials ID, but and if they've got a get tool, their get tool name, and then it will just work. And they like that very much, or if we go further on, we should see examples like, let's see if we can find it, check out SCM. Yeah, here we go. So for example, this is a usable sample to highlight, how can I do a checkout? And this thing up here at the top is my video that I recorded. So this one right here was my video recorded showing them how to use the pipeline syntax generator. So to the question, do we want to include examples? Absolutely. If we possibly can, people, one of the, one of the big complaints about Jenkins that I receive regularly about the Jenkins documentation is, hey, it doesn't have enough examples. And I'm going to, now I'm going to show you some comments that are, are kind of harsh. And I apologize if, if they're, they're indelicate or maybe even offensive, but they're targeted at me and others who have tried to write documentation. I'm going to show these to you. So these are the, these are comments we've collected since 2017. So four or five years now. And now let's, let's read what they say. Okay. So for instance, would be nice if the parameters had an explanation as to what they do, add a description of what each option does specifically. Okay. Tell us what the object returns. Many options are not documented. Parameters, usage should have at least one example like fail on error. This is a very, some better examples would be good. So asking for examples is the single most common request in this collection of people's feedback. So, so did that answer your question, Sophia? Oh, Afi, go ahead. You had raised your hand. Yeah, so I just saw the question I asked on rule 1273 about the local security policy. I just saw it there. Yeah, I just saw it. Exactly. Okay. So, so now does that, isn't that okay on the one hand that's terrifying because somebody else had exactly the same problem you had? Right. And, and so, so this is a great excuse for us to say, you know what, I, I could help this by describing that. Yeah. Thank you. So, so, yeah, this, this feedback, now there are times there are times this feedback is filled with expletives or profanity or people being very angry. And so please don't be offended by what you read read here. I just have to warn you in advance. Sometimes people have, by the time they give us feedback on this, they are very angry and they, they're expressing things like, could you not do this following thing? And so just, just don't, don't panic. It's anonymous feedback. We have no way to know who wrote it. We're fine with that. And, and if they sometimes get very grumpy with us, we, that's okay. We wish, we wish it were different, but we'll, we'll, we'll take their grumpiness and not worry too much. So, but, but the request for examples is, is the most common request in this list. And, and you'll notice the number of rows. Yes, there are 1200. Now almost 1300 items of feedback provided by users over the course of the last five years that we've captured. So, so there are lots of things we can improve here. See, it's occasionally we do get some that say very helpful, but most of the feedback is, is no, you're not being helpful. Give me more examples. Did that answer your question? Yeah, it does. Thank you. And hopefully not offend and not terrify. There are plenty of, plenty of places where we have opportunities to improve. Yeah. So this one, for instance, what are the return values from build step? This was one of the, the types of things that inspired this whole project of pipeline help. Because if you look in the, as you see in the documentation here, it uses the pipeline build step. And the reason it does that is because the pipeline build step is the, the one that has the most requests for give me more examples. And I think I can actually understand why, because when I'm using the build step, this, this again is lots of fun when I'm using the build step. So I'm going to go to the syntax generator here, and I'm going to choose build. And now, when I look at, oh, that's interesting. What can I do with this? How can I, how can it help me? And I look at the help. And now if I go looking at this step, or even the step reference here, this is where I get this terrifying list of an enormous number of things, most of which are woefully inadequate in their description. Sorry, what was that, Sophia? Oh, I think most of them are not at prep for. Right. Exactly. The, the, okay. I know there's a thing called agent parameter, but I have no idea what the name means or how, what the value means or how that affects anything. Right. Yes, there's a thing called a Boolean parameter that has a name and a value. Okay. But then what? So, so it's, it's that sort of thing. So if we say, how, how do I use this? When do I use this? Lots and lots of people ask, give me better help than better, better help and better guidance. Okay. And now, okay, here's a lot of help actually on wait for completion. So that's good. But then, okay, now what do I do with that? And so, yes, lots of, lots and lots of ways to improve. Any other questions or concerns? Actually, this is not really partaking to or what is causing. So I say, I started learning mid like got the opportunity. I took a Jenkins beginner's course. So I was actually used to the conventional UI, then I was I introduced myself to Blue Ocean just like two days ago. And trust me, it's a part of me prefer the conventional UI. Blue Ocean is beautiful, is very fine, but sometimes it's very difficult to navigate around it. So I just wanted to find out how, how often do you use it and how are you able to like switch from the conventional UI to Blue Ocean? Excellent, excellent. So I use Blue Ocean when I need to visualize a pipeline. I don't use it other than that. That is the primary use model. So I typically won't go into this interface. I typically open up an exact build and click open Blue Ocean, because I want to see this view. Everything else, I exit out back to the classic UI for this. So Sophia, your experience matches my behavior. There are places where I need to see that visualization. I'm going to open one now. Let's look at one where it's really important for me to see that. So I'm going to go to the ci.jenkins.io process that builds the Docker images. And here, if I look at the console log, if you look at this table view, it's, wow, that's huge. What's going on there? And it's very hard to visualize what's happening there. But if I open Blue Ocean, I can actually understand what's happening here, because I can visualize, oh, here it's testing Alma Linux running Java 11. And if I want to see the log, I click that, and then I scroll down here and I can read through the various steps that were used in testing Alma Linux. So in this case, Blue Ocean is very, very helpful. But if I want to see what's the next job or what's the most recent status for five or six jobs, I do it all from the classic, from the standard user interface. So your experience matches mine, and I think it matches most Jenkins users. Blue Ocean's primary use is to help me visualize pipelines. Everything else, it's nice that it does, but its primary purpose is to help me visualize pipelines. This is beautiful. I'm going to say that I actually love the visualizations because aside seeing how everything builds, I get to see like, from step, like one step to another, I get to see how things run. So I actually love the visualization. Absolutely. And that is very helpful, right? It's good for us to know, let's go grab one that's probably building now, because it takes a nice long, oh, nope, it's not building now. I was going to try to grab this one, because when it runs, it spends four hours running. We'll just start it building and let it run. But there are all sorts of, oh, I know, here's one. We can use a plug-in that I maintain, because it actually builds and runs pretty quickly. So my mistake, we want to be on Jenkins here. We need to go here. Okay, so here's this plug-in that I maintain. I'm going to build it, and what we can do while it's starting its build is let's go look at the other one. It shows me, Blue Ocean shows, hey, this thing tests on Linux running Java 11, on Linux running Java 17 with a newer version of Jenkins and on Windows. And now if I click this arrow to go to the next one, I can see how it's starting its run, and it's queued up to do work. So that, again, is really helpful for me. But if I need to do more detailed look, or for instance, if I want to see whether test failures, I'll usually just come here and look at the summary page, because it tells me things quickly and easily. So does that answer your question? It does, actually. Thank you. And congratulations on very rapidly getting to the same use model the rest of us have reached. So well done. That's great. Thank you. I think that covered all the topics that were on my mind. Any other topics for either of you? None for me. Yeah, at the moment, everything is touched on. So we'll just proceed with the other steps. This whole walkthrough just reminds me of Stache Blue and Jenkins running your program with the pipelines and seeing how everything builds. I've had a lot of experience today with that. So just trying to fix and see the trace logs, because I was having build fields, and this is just interesting. Right. And we hope that this will be helpful for you in your career, right? That this is not just for the Jenkins project, but this will help you as you go on as a developer further. So that's a great combination. We love it when open source helps, when we help open source and open source helps us. It's a great mix. So thanks very much. So in terms of our next meeting is this time okay for you? I know that, oh dear, that Nafisa would like to meet with us and she's not available after Dark. She's not available after sunset. So would it work for the two of you if we were to do this earlier in the day? Or do we need to do it this late in the evening for your time? Okay. So what time do you propose? If we could meet two or three hours earlier, would that be workable for you? Or is that? It'll be four to five or three to four, right? Hey, sorry, that's my time. That's GMT, TTC. Sophie, what about you? That'd be okay for you. Yes, that'll be okay for me. So if we moved it, and let me double check, I'm going to stop sharing my screen so I can check my work calendar as well, just a minute. Okay. All right, so because if we were to move this three hours earlier, one, so one, two, three, yeah, three hours, three hours earlier, maybe even better would be as much as four hours earlier. Is four hours earlier workable for the two of you? Is that too close to the end of your actual working day? It's actually before for me, but I can definitely create time, it's no problem. Well, so let's, if three hours earlier works good for you, let's do three hours earlier then. That way, because three, what time is it locally for you when it's three hours earlier from this? So that would be 3.30, 3.30 p.m. Oh, okay. Sorry for Sophie, it's before 3.30, right? Yeah. Is she right? Okay, good. So that's definitely, definitely prior to sunset. I mean, so that's great. So let's go three hours earlier. Kevin, does that work okay for you? That'll work for me, no problem. Great. So I will take the action to move us three hours earlier, and that way we can have Nafisa there as well, and we'll go forward. Excellent. And now if you find this is getting in the way of your working day, don't be shy. Say, hey, Mark, we need to be later. That's okay. I understand that we've got jobs and we want to be sure we meet our employer's needs, not just open source projects. Okay. Okay. All right, thank you. Thank you.