 Let's go to the cloud. Okay. It looks like we are recording now. Yep. All right, so let's get started. So, hi everyone, it is March 4, 2022. This is Jenkins Google summer of code office hours so on the agenda. We will cover questions from potential GSOC contributors will quickly highlights some due dates that's coming up soon. And then lastly we'll discuss application proposals. Are there anything else that we should add to the agenda. Okay. So, opening up to Q&A. So the first questions we have and beyond since you are on the line, we would love for you to unmute and ask your questions. Yes. Hello everyone. Hi. I just had a couple of questions. The first one being, I just wanted to understand the architecture that was behind the pipeline step documentation generator. Like how it works in order to fetch the documentation and what exactly does it go through in order to generate that documentation. If you could just give a brief overview of the architecture. Thank you. You are so lucky that is an excellent question and Kristen Whetstone as original author. Good. Sure. Hi. Glad you're interested in this type of this topic. So, how this works is it essentially like the pipeline step documentation generator is essentially a Jenkins plugin manager that runs without being run within Jenkins. So what it does is it, it's kind of, it starts up almost exactly how Jenkins starts up. When Jenkins starts, it starts a plugin manager and it looks in a folder for different HPI or JPI files. And then it basically unzips them, parses and pulls them into its own internal structure for being able to handle plugins. And that's exactly what the plugin step documentation generator does too. It basically goes to the update center, pulls down every single plugin that's already zipped up, and then extracts all of them into itself. And then now, since we have a plugin manager, we can now query that plugin manager for a bunch of different types of like information and the one that we're looking for specifically here is anything that's annotated with a pipeline, like as a pipeline step. So based on that, we can query it and then after we get our sub list of basically the classes that are the steps, then we kind of run through a kind of sort of interesting process of parsing all that information into an ASCII doc format. After you look at the, if you ever look at the pipeline step class, you can see that it has like certain fields for documentation or descriptions or inputs, and then it will be convert that into an ASCII doc. But yeah, it essentially runs as like a pipeline or sorry a plugin manager without Jenkins. Does that help or do you have any other questions about how that's working. Yeah, I understood that part and I just had one more doubt as, how does it eliminate redundant documentation, which you fetch. So for example, you could have the same documentation within two plugins right so the two, the same two plugins might have the same pipeline documentation, is it correct. Because it's unique classes so it will like, I think you're trying to say like a plugin or there's two plugins that have the same step defined. Yeah. Okay, okay, so fundamentally they'll be different because unless there's like some really I've never seen this happen in the Jenkins before, but you know it can only load the class of it will load a class right so like every single class is unique. So that will end up getting the information for each of the different plugins and then for it will process each plugin separately. So then it will take like all the play. So if you have, I guess the folders plugin or it's running something, it will generate all the documentation for the folders plugin and put it in its own sub ASCII doc into the folder. I've never seen an instance I don't know if there's any more experience here of two identical classes inside of Jenkins like some of the two plugins that have ended up creating the exact same class definition. But you don't have we don't have to really worry about that because the like a manager. So if that is, it's like a fundamental Jenkins saying that's going to be on this, like as we're just using whatever Jenkins is using, but you know I haven't seen an instance where they were too physically the same classes being loaded in to the plugin. So it would have to be like exactly the same. I've never seen that. Okay. Thank you. Yes, no problem. I have one follow up on the one follow up question on this. So you, you talked about a mock Jenkins that comes up in this whole process right. Yeah, so I was wondering like can we have another similar Jenkins mock setup with UI available as well. For, and I do for taking some screenshots so is that possible to generate a mock UI. That's like a question I'm not sure because what we what the basically the mock Jenkins is. It's just querying a whole bunch of pieces of information that are usually about like where it's running and like a certain has it loaded a certain and since Jenkins isn't actually running, it can't verify it. You know, it's like, no, clearly this stuff hasn't run yet because there's no Jenkins. I'm not sure that it will be able to pop up a the whole UI because it's pretty much just replacing calls that the plugin manager makes to like its own Jenkins. I'm sure maybe there'll be a way to kind of do that but I'm, I think it would require a lot of exploration out like else it. Unfortunately I can't solve it with this tool but maybe there is another sort of exploration that can be done with this type of mock. Yeah, I might offer a different tool dirage that in the in the Jenkins test harness. So there's a the the the framework that Jenkins plugins use to perform their tests. There is a test class called Jenkins rule that approximates a Jenkins controller, and it approximates it with some some sort of imperfect approximation for speed reasons. Recently, as in the last like six or nine maybe 12 months, there's been a new thing added called the real Jenkins rule, which actually forks a Jenkins war file. If I understand correctly and runs the tests inside a real Jenkins. No, no fakes, no, no anything it's real. And and that might be something that for your case where you're saying, I need the real thing, right because you, you truly want the absolute real thing to be running. And so you might consider using real Jenkins rule as one. Now, now the other is, because Jenkins is ultimately multi threaded and able to handle multiple concurrent requests. It would also be okay just to start a Jenkins got war file and connect to it from multiple concurrent processes and then stop the Jenkins war later. I don't know that you have to use one of these test frameworks because you're you're the project idea you're working from I think is the one where could we do automatic generation of documentation screenshots. And in order to do that, what you what you need is you need the thing to present a real Jenkins user interface Jenkins can present user interface to multiple people concurrently. And so, in your scenario you, you might be able to just run one Jenkins war and then run many threads that each thread opens a fake browser and captures the image from the from the browser. That would probably work better than what was happening here because again, yeah it's the kind of how we're faking out Jenkins is very much a, where are you in the startup process type deal and there's nothing there so we're trying to just kind of be like oh yes we're at the point where we can start setting up plugins. And so the plugin manager can run. That's what we're using that that's kind of how the this part works so I like the idea of using the Jenkins real rule to that's nice. And the pipeline step doc generator really doesn't need to execute pipelines. Exactly. It doesn't need to present a UI that's not its role and it's good that it's as lightweight as it is. Yes, because it's it is in fact loading hundreds of plugins while it's doing its work. Right and this is also another kind of maybe a caveat, I would not attempt to load every single plugin, like we have it running on in the CI system for Jenkins itself, because it requires a lot of. I've run into issues where like it runs into open file, you'll run out of open file handles, because it's just there's just so much there's so many plugins which is great for Jenkins, but not so great for your own computer so I would try to take a smaller snapshot like if you have maybe stand up your own local Jenkins you can use that the plugins, the default plugins that are coming with Jenkins, or any other combination of things you want to test but yeah I would not attempt to do to actually try to generate the documentation for everything because it. It's not. It's not fun to try to like to run out of open file handles on your computer so it's so this is very helpful. Thanks, Christian and Mark, I will go through the real Jenkins rule and Jenkins rule and test harness try to make sense of it. Excellent. Now, back to VHAN VHAN you had asked questions number one and two. I think we addressed one. I think there's still something on to do you want to give us some more details there or just to actually just take the phrasing as is. Yeah, I think there's not much to it, but just the phasing as it is. Okay, so your question is will there be separate channels for every project, there have been in the past, and if that's that's a preference or if the GSOC channel were to become too noisy for us we certainly can create separate channels. In the past, for instance, I think there was a separate channel for the, the get plugin that we used just for topics about get. And we've certainly got the docs channel that could be used for the pipeline step doc generated. That that would be an easy place to have that conversation. I believe Chris that there are getter channels specific to Jenkins file runner aren't there. I don't remember for sure but I thought there were. Okay, so, so I guess the answer is yes we can use separate channels if that will help. Did that beyond does that address your question or is that too, too nebulous and we need to be more precise. I think it addresses my question. Thank you. Okay. Okay, are there any other questions for our mentors. Okay, so we can move on and then if you have questions feel free to. Just a minute, Alyssa, it looks like Krushakesh just had a question. So I get stuck on solving an issue I get confused by different mentor opinions, and I'm not sure what is the right way of solving the issue. That's that's an excellent point and, and you'll see that kind of thing where what it hints is the mentors actually don't always know the right answer. At least I know I don't. I am absolutely confident I do not always know the right answer. And so, yeah, don't be don't be shy at saying hey this didn't work for me. If a mentor says something they're just, they're giving their best best estimate, and probably haven't done the detailed research themselves to prove that their suggestion is the right thing to do. That's, that's probably a terrible thing to say Krushakesh but I'm not. Many times I'm just making a good guess when I make my answers. Okay, thank you mark. No further questions okay I'm moving on so some upcoming due dates. I just want to highlight again, you know, check out the timeline, see what's upcoming and that are due so I put here some two items that are pretty much what we're in the process at the moment so March 7 to April 3 potential she saw contributors as application ideas with mentoring organizations. We are seeing a lot of activity and discussions and get her which is excellent we want to see that. And then of course April 4 is when your application period begins. So that takes me into the next item that we want to talk about is the application proposal. And here it's really it spells out all you need to do for to fill out your application. Right, so the two things that we want to emphasize is project proposal template. And Mark will go through a quick demo on how to use this. This is here for you to use as guidance. And the other thing we wanted to stress is that you need to be submitting your proposal for for the community to review. As soon as possible, because you know with more people looking at your proposal. It's likely that they will help to strengthen your proposal and then so that you can meet the Google's deadline. I have put here a couple samples for you to to review. There's three samples that I have put here. And basically, this is not the right link. I click on the wrong thing. There we go. So this was last year's proposal. Basically short email. Right. And but we will be using discourse instead of Google mail here. Basically, let us know what your proposal looks like share this with us and then you will get the community mentors to provide feedback and such. But there's three examples for you to to use. Okay. Mark, I will hand it over to you for the demo. Great. Thanks. So I'm going to go ahead and share my screen. Okay. And if we're lucky, you'll see now my screen with a great big terminal window. Can you confirm that? Yes. Okay, so put that away. Put that away. Put that away. Lots of putting away. Okay. So to the Jenkins homepage. And make it big enough to see some projects Google summer of code in Jenkins. Let's see. And here it was, you were had guided us information and application guidelines for contributors. Check out the ideas and open the project template. So here it is. Okay, so I'm now inside this project template and I want to do a file, make a copy. And I'm going to give it a name that works for me. So GSOC 2022 last name, wait, proposal name, I'm going to do mine for the get cash maintenance proposal because that's one that I've been active on. I'm not going to do it for any one of them, but let's take that one. Okay. So now I have an editable file in order to allow others to comment on it. I'm going to choose share in the top right corner there, change to anyone with the link. And I'm going to grant them comment or permission. So now when I copy this link and paste it. Maybe I'll just paste it here in the chat so the rest of you could open this and make comments on it, you could make suggestions and help me improve it. And then I'll start start editing here. So into the chat, where is our friendly local chat chat. So you're all welcome to open this Google doc that I've pasted pasted its link there. And I'm going to put it as get cash maintenance. I'm going to delete the template line and just start filling in information. Yes, this is me. And yes, I'm at mark dot Earl dot wait at Gmail dot com. I'll start working on this. Now what this means is Kristen and Chris and Alyssa and anyone can come in here and change and help and guide so my abstract, they may say pay your abstracts really weak and suggest a change like automate automatic get cash maintenance for Jenkins controllers and agents. Now I've got the opportunity. Oh, and look at this notice in the top right hand corner. I see four different people who've opened this and are ready to help me. So it's that simple. And somebody is highlighting project abstract. Well done. So to make this page a little more easy to read let's go full size. I just wanted to make sure that they were suggesting, and I could go copy that the text from the original project idea, and paste it in here. That's a great place to start, don't be shy about using other people's content other people's information to help your proposal be better. To do what I just said I would look at sub projects Google summer of code project ideas automatic get cash maintenance on the controller and might copy this background as the initial project description to good start. So that's, that's the beginning. And, and this is where it starts and then I would paste this URL so click the share button. Copy the link, and I would go to community dot Jenkins.io. And I'm going to do and let's see new topic. And it would be get cash maintenance project idea. I think we want these in G sock right, Alyssa. Yes, we do. Okay, so that's probably been community G sock. And now one of the things would love to have feedback on this project proposal for G sock. So adding proposal to the subject line. Oh yes right well right right. So something like this. And because it's no longer a project idea. It's really a proposal do it like that now one of the things I like about. What do you call it about community Jenkins.io is when I put the hyperlink on a separate line. I get this nice big block makes it very obvious to people they should click that thing. It's even more visible than a than a hyperlink so for me I find it very attractive to just put the whole thing on a single link on one line. That's the whole thing. And it gives me this nice big block on the right with the title and in it, etc. Any questions on that process now I'm not going to create this topic because it. I'm not actually looking I'm not ready to take requests yet for this document. So we've got we've got a record of how you submit what you do to create it and, and it would then be visible to others and they could then go in and make their comments on it. Oh, and there Chris thank you. This is a comment very good. Not seriousness that is how it works, just like what Alyssa showed earlier of the document that was from a previous year that was filled with many different comments the way the ideas came to be better and better was by candidates proposing their document, and then mentors and other candidates commenting on it trying to get better understanding trying to comprehend what what it should be how should it be expressed. Another safety check here is be sure after you've been through a few reviews, be sure you look at the official Google definitions to be absolutely sure that every detail that they've requested is covered. They are, they are and the mentors are quite serious that we need to be able to read effectively and follow directions. So I think what I had Alyssa any anything else that you wanted me to highlight anything else that we should show in this demo. No, I think we've covered everything we have the, you know, where you can find information we got the due dates we've got some samples we've got templates I think we've covered it. But we do have a question from dirage. Do companies allow their employees to participate in programs like GSOC. And I think the answer is, yes, so long as you're allowed so long as your company allows you to so long as your company allows you to contribute to open source. Some do not there are some companies commonly financial institution banks that may forbid you from contributing to open source, but most companies will allow open source contributions on personal time. And the time commitment for Google summer of code of roughly 20 hours a week is quite heavy if you're already working full time. So, so that may be something that you have to weigh in your mind do I really want to apply for this because the expectation is, you'll put in 15 to 20 hours a week for 12 weeks. And if you're already working a full time job 15 or 20 hours a week is an awful lot of extra time. And dirage, does that address your question. Yes, and makes store distance as well. Thanks a lot. Yeah, so so the licensing or the, the question, am I allowed to, am I allowed to contribute to open source for my current employer is a valid question it's when that each employer is different I've, I've worked for some years where where there was, it was quite involved to get permission to contribute to open source, and others where it was, it was trivial and they just said yes contribute to open source please don't do damage to our business when you do it. Thanks. All right. So I wanted to pause here. Chris in your experience, as you were applying to Google Summer of Code because you've done to Google Summer of Code projects were there any points of guidance you wanted to offer to people as we are closing the last few minutes here of of our office hours. Maybe like one point I really wanted to bring like bring up is to like take initiative. Don't rely too much on your mentors to tell you what to do, because like sometimes you may have like my mentors. I like that that's it. That's sort of reinforces the notion that the mentors, the mentors aren't are certainly not all knowing. We're learning and growing and developing and so taking initiative and proposing an idea is great and if the idea is flawed. It'll be discussed don't be shy try a different idea then. Yeah, I like that thank you. Okay. All right well Alyssa I think that's it. Thanks very much. Thank you everybody, I will post the recording in a few hours. We have raised hand. Okay. Yes, I miss it in the beginning, but I just had one more question regarding the pipe and step community was just about how I'm approaching the project. So currently what I'm doing is I'm studying the pipeline documentation as well as a user feedback that is attached with the project link. And realizing that I'm actually identifying an automatic loss, but not the flaws but probably the things that could be improved with the way we generate the documentation. Yeah, and currently I was unable to actually follow up much with the issues that were listed on the project page. So, what should I do should I be able to follow up with them and get to know how stuff works or should I just stick to my own part and just identify the best way to produce a documentation. Thank you. So, I think the ultimate goal is find the best way to produce the documentation but I'm, I'm not sure on the, you say you weren't able to follow the issues is that because the, the feedback was incomplete in the in that the feedback or was there something else I may have misunderstood there behind. The other issues I'm talking about the issues listed on the GR GitHub issues, those issues. Along with the project page idea. Okay, and there it's that they are incomplete they're insufficiently described as to understand how to duplicate them or something different. For me I couldn't find them relevant enough for this project idea. Oh, okay. And so many of them, many of them may not be related to the product project idea at all, correct, I see what you're saying. Yeah, you, you opened the Jenkins that I owe issue list, and you see 140 issues, and they are certainly not all or even the majority of them about pipeline steps, and therefore that's perplexing you were you were thinking, hey, these would be closer to the project I'm working on, then they actually are. I think I understand what you're saying. Yeah, so those that is all the issues for that site, not just the pipeline steps documentation issues. Okay, so like before working on an issue or starting to work on an issue should I just put it on the guitar side that I'm trying to work on this issue and should I go ahead with that. You can do that, although there's there's actually no risk to just starting on an issue and saying hey I'm working on this issue put a comment into the issue itself, I'm working on this issue. And that's enough you don't have to you don't even have to say it and get her just on the issue itself say I'm starting work on this issue as a comment. Usually within within 12 or 24 hours one of us will probably assign it to you then just to be absolutely clear but no problem if you just make a comment in the issue and say I'm working on this that's already good enough. You don't have to wait for anybody to say yes you can work on it you don't have to that we do not have the problem of too many people working on issues. That is, that is, I don't remember the last time we had that problem in open source project so it's almost always we don't have enough people working on it not that we have too many. Mr. Thanks a lot and sorry for the time today. Oh no that's all good. That's a great question. Thank you very much for taking the time to ask it. Thanks a bunch. Yeah. All right, if you have additional questions just pop it in getter and we'll get it answered. Thanks everybody. Thank you. Take care. Thank you everyone. Thank you. Bye.