 Okay, I started the recording. So, just in case you're watching online, we are recording a first meeting about the STPI specification generator project. It's one of Google Summer of Code 2020 projects. Right now, we have a number of potential mentors and potential students on the call. Kristian will be driving this discussion, and we'll go our best to answer any questions by students. Kristian, the floor is yours. All right. So, oh, welcome everyone. Again, like I was saying, if I guess the first thing I'll start off with is anyone having anything directly specific to talk about for this? Because, yeah, like I figured. Oh, yes, hello. Did you have something you were going to say? Yes, yes, yes. Should I ask you a question? Oh, sure. Yes. So, last time when I asked the STPI, so like, like I mentioned about the says, says pause a GitHub link right in the Hudson packages. Yes. Okay. So, hello, hello, yes, I have gone, I have gone through that a GitHub link of says pause repository. So, how to use the for getting rest API calls? Oh, well, says pause is for notations. It's not for says pause calls. So, like we discussed with you in the chat, it allows you to capture a particular Yeah, really have difficulties here and here. But yeah, again, says pause is just for capturing connotations. Do you see my screen now? Good. Yeah, I'll sort of figure out how to get Yes, one of the libraries from bad. We actually have a couple more, but says pause is being used to factor many cases. And for example, if you go to Jenkins repository or to many plugin repositories, you can find a lot of notations like exported there. And here you can see that, for example, there is Take something easier. So there is a home my page Where you can go and just Details about your user. So And here you can see that there are some Information provided. So basically, when you go here, you can see that there is A name, authenticated, et cetera, of a user. And this is exported to notation. So how it works. I'll just open one of my Instances I don't have so many online instances, but this one should do the job. Okay, so here I just go to Who am I? Okay, I guess it's being co-wrote it. Just a second. Go to manage Jenkins, it should be available from the Now, okay, let's take a look at the code where it's not available. I believe if it's just because of Rotating code request Yeah, so it was just keys. So here you can see that I get some details like name It's authenticated authorities. So this information is not there being generated by Jenkins automatically There is page rendering for that. But there is rest API and this is get rest API where you can retrieve some additional information I click JSON API and here you can see some information So you can see that Basically, there is a bunch of groups being pulled from my GitHub account I believe that there is nothing secret in there. So there is a bunch of authorities I can use for security That is authenticated, et cetera. So this information is being generated by stepler. So this stepler It's just a framework Data binding and other things and it uses some notation processing to provide you this information So these export the notation so you get a process and export it to rest API. So as a developer, for example, if you wanted to Generate specification for this particular state. Okay, you could have gone through these annotations using says pause and This output of specification, but it works for that. It doesn't work for the use cases which we discussed Before the JSOF meetings. So, for example, if there is You see the strange blue things here. Yes. Yes Okay, so let's go just Job Java and here, for example, do Description or whatever Yeah, let's say do description. So this is a method which assets or serves The job description and here you can see that basically it's the single end point But depending on what you sent and get a post you will get different results. So forget it returns your information for post Just assets of information So we could go to a page invoke this endpoint and then get to this description and again It still qualifies as a part of rest API Jenkins. Oh There are some other annotations other use cases, but This part of the logic is quite complex and it may require a lot of analysis Or maybe redesign of how Jenkins annotations work because it might be acceptable for this project come up with a proposal Which says, okay, let's do annotations for all this rest API calls If you want to get them generated automatically, they will be additional requirements, but right now. Yeah, it's quite straightforward It's just being handled by step Many assumptions Means normally we have to assume right for Because there were no orientations for these type of functions methods, right? Yeah So how to proceed from says pause So we got we have to yeah again this is pause won't help you in this case You can't use it I Can use it, but only it is This was only capable of getting the extension points, right extension It's capable of doing we're getting Kenya notation, but it's not capable For example in Jenkins that are also option to set notations like get I'm not sure whether we have it in this file Yeah Just short Okay, so you can Process notations using says pause and if you explore a jinx rest API Documentation there is a bunch of them. For example for other things like one I presented with do something What you could do you could just process how steppler code overrides behaves because you can find a Lot of things You can just try finding that No guarantee it works It's just a test So Going to work as well Does this so but yeah, you can just go through this code so Let's just try looking for rest Again, I'm not sure what exactly I'm looking for so it may take some iterations Here for example, we can also see some additional code for example dispatcher code which are basically processes Request and mapping with them to objects so you can see how it's been handled there and Try to reverse engineer that and probably replace some bits of this code to specification generator but It might be just a second part of the project because just supporting get APIs using additions would be good first step Okay So if somebody wants a steppler deep dive, I need to prepare But yeah, they coated there so you can take a look Somebody has raised hand We're importing various libraries and dependency so Steppler is acting as a bridge like You know what I'm not getting why are we using this here? So step there is basically Bridge framework, so it translates Okay, the next attempt Anyway Yeah, there is no really reading in this repository But it's an engine which receives a request so it's HTTP or ps and it can map them to Java calls or vice versa So if you take a look for example a job here, we can see that let's say do submit Okay Delete Okay Again do description so here you can see that there is steppler request the player response and other methods So it implies that these methods are actually handled by steppler. So steppler basically Logic which receives a form submission or any kind of other HTTP request processes them and maps it to Java objects and to Endpoints in the Java code. So it does all the mapping which you could really expect for example from spring framework From Quarkus or other things now case it's steppler doing that because it's a historical piece of code That's the answer your question I have to search it, I don't think so I'm not clear yet I have to search it Okay, so you can review some information about request rope you can come up in Again, what I was all that we showing at the previous meeting there is a bunch of jabs and there are some jabs are related to steppler Especially one for for example steppler request the dispatcher filtering and fragmentation so this jab 218 can provide you some insights about how steppler works in terms of Common requests and filters so it can provide you some insights and provide links to other documentation Because yes steppler itself isn't documented as well as we would like Even I guess as far as project has made a hundred percent related that you can if you if you're doing research You can make well even ahead of time. You can make pull requests with documentation examples like to these repositories that can help with understanding and then Be able to help other people figure out what's going on with the stapler as well. Yeah, that's right So we can find more documentation in the developer mailing list But yeah, right now my suggestion would be to start from Get a piece because get a piece I'm only easy to understand and more easy to implement So if you do prototyping, it's better to start from there. Okay, any other sessions so Christian what would be your perception about this project? What would you like to be achieved? this regards to that right, so I think that For me, it's like I was kind of looking for something that would Be able to easily like there's a little bit one bottom for whenever you go to look for and Be basically a list of the different rest of the eyes within Jenkins really honestly hoping that we end up with something like Open API document that would at least, you know, be a little bit more digestible Easier to read for people who are kind of working with Anything like with Jenkins itself Because there are a lot of API's and there are that is kind of their powerful things you can do with them Especially if you start in some of the plug-ins, but it's very difficult to figure out where we all are so if there was just kind of a Maybe you are all based off of Jenkins where you could see what is installed and like what you guys are available And it's in an open API format. That would be a lot easier for people to understand what's going on I think if there was a way to that we could keep I can it's a note to difficult tasks But being able to also publish that somewhere on the website So people will be able to know that this is even an option for you to be able to do and to also then I Guess include it in the building of Jenkins documentation. That would be useful as well So I think it is easy to start with something that is at least local and we could Update our documentation to point to hey, there's this there's now this document that you can look at inside of your Jenkins HTTP respond like options are the codes how do you be able to use it? And then maybe eventually pop maybe like later on at least three or I don't know But you can be able to do it is figure out a way to be able to generate this and publish it to the website as well So it's just been easier of us So I'm just a screen share and one of the Results Authorization project It's a project created by our student a baby Sharma and as a part of this project he Created the repository on swagger hub for for the authorization and he you can see rest API calls supported by the plugin now Well, it has one of these weakness because it's Actually generated to monitor so there is no automation for that But if there was automation we should at least create skeletons It would be a good step and again, it can be done incrementally. So nobody requires you to create full specification The first step or During the entire project, so we need to start somewhere Exactly, but this document see how it just makes it so much easier to know what's going on with the plug-in But it since it's done manually it requires someone to continue to make sure the document is up to date So it can easily fall behind So being able to auto generate something even if we start off with just being able to get thinking to get That would be useful as well. It just this is a great example Something that makes it a little bit easier to be able to read to find out what's going on Good examples. I think it will really help People who want to be able to use the API's Or even to figure out that API's are an option because sometimes I don't even know people know that you can use API's to do everything for Jenkins Actually, one of the topics you can consider is when we generate the specifications because there are basically two ways One way is that you generate them in runtime. So when Jenkins runs We do it for several other projects where you can go, for example This agent inside also here, for example, you can get documentation for pipeline or documentation for Configurations code based on installed plugins. Most likely it will fail because there is Bug Day which you haven't fixed But yeah, this reference documentation specification, which is being generated on the flight depending on the plugin sets you use etc It's one of the ways to do that And same is basically used for example by pipeline because for pipeline again, you can Get to the communication generated another way which might be potentially interesting is generating it during the build time So when you build the plugin using whatever magic To again generate the rest API specification for a particular component And then we could have another model which combines this documentation for user For instance specific documentation. It might be not that trivial, but it's also doable So you can review one of these approaches. Yes All right, I think I went as well I think it would be easier to talk about in your proposal which one you'd like to focus on first and then maybe create a library that Folding the different places and that way it can be pre-used So basically turns up What you prefer if you like front end development exactly It's more on the Jenkins site you could do if you're like back in development Yeah, you can just take a plug-in. There is a plug-in called maybe an HPI plug-in, which basically includes the most of Jenkins specific made in functionality And for example, you could just add logic there or maybe as a library And again the great thing about that plug-in It's not a Jenkins plug-in. It's a plug-in for me then Yeah, design principles are more or less the same. It looks like everyone is completely confused Give me a bottle when this will look out So Any questions any additional information or pointers we could provide Yeah, again what we discussed in chats and g-soft meetings if you want to do a quick start with this project The easiest way is to just focus on get the APIs Maybe write a really really simple prototype which uses sys-pose and Pulse of this information Maybe in a text format or whatever so you don't need to generate open API But you can start from something and for example propose your first pull request put it towards the Jenkins code and we could start from there because Well, there are many ways to start but you again better API see if they must Okay, is a text format enough for full request or code or Do you expect code? Well, if you create a pull request, of course, it would be code how means I thought of MD file of Expressing the way So the trial would be okay. Well, you can just generate HTML and put it on the API docs So whatever you find convenient right now. Yeah, you just explore So whatever you explore if it's introduced towards your project proposal just do it Okay, I got the things how to do miss I have got a clear idea with with sys-pose and Stapler I have to go through the stapler to understand how it really it's working and to extract I want to do implementation so that I will get an idea of how s-pose is really working Okay, okay Or can I get okay, I will try to explore if I face any issues Okay So that's right, then you're saying for all other students who might be interested Just take a look at different limitations different approaches. And again, we try to keep all the information public We will be sharing the details and for example, if you want to collaborate between each other to somehow make projects Independent it's possible. So for example, if you want to collaborate and split it somehow or if you just want To do some prototyping and I don't want to step on each other's toes. It's also possible So again use public channels so that we can prevent that but again at the application phase It's not a big concern. So even if you propose to pull requests, which basically do the same it won't Impact anyone because you will just take a look at these two requests and take them into consideration Okay Yes, Pritik Sometimes like if our PR doesn't merge for an issue that we know for an issue or something we want to So what can we do then like we have to wait for PR to be worse or we just start contributing or Yeah, so in Jenkins, especially in Jenkins core and other general plugins a pull request cycle may be quite long because we need to verify the stability, etc And For you if a particular pull request is staged is already enough you can Move on to other area unless you're blocked you can keep exploring that and you can be getting to the same request So for example, if you take me probably not the best example, but you can see that there may be it doesn't work. I Made a cleanup. There's still there should be several several pull requests and you can do the same So as long as they are independent as long as they can be reviewed separately You can just keep submitting them and If you need help with the reviews, so just pick us and get your channels because you're sometimes pull requests Follow through the cracks. We try to improve the situation across the community But yeah, if you submit a pull request to random plug-in You may need to raise visibility So that you can help Right generally people are incredibly helpful And they want to you know work on the pull request and not let it sit around for a long time, but yes, like always which is on the channel or Ask on the developers mailing list and people are pretty responsive And yeah, if you have to pay your proposals actually trying to do some revisions could help Yeah Because yeah, we'll go our best to ensure that there is community about around this project and for this particular project I'm not concerned at all. We will have Dozen of stakeholders easily across the community interested in that maybe more but Yeah, again, just trying to do something. It's The best way to explore how it works Right, and I guess also if you like Olivia saying about the stakeholders if they have awareness early They can also help They'll be excited that someone's interested looking this and be able to you know Get involved a little bit earlier and another more people to ask questions to Share other perspectives Then we have to start submitting a proposal So you can take a look at the JSOC timeline So there is official timeline and it states that application period Opens on March 16th. So just in one week But this is the first day when you can officially submit your proposal through the JSOC website But it doesn't mean that you cannot work on your proposals now because what we usually recommend students to do is you create a proposal draft you can already know what information is expected because Google has a student guide and we also have a student guide on the Jenkins website So you can just to go to this page and you can see that There is information summarizing what we expect from student proposals Well, it's mostly built on the Google's student guide, but we have some additional Expectations so you can start drafting your proposal and you can just submit your draft through the main at least So you don't need to wait until March 16th If you already have something to propose and to discuss you just submit a document and people start reviewing that though, yeah, right now It may be iterations might belong but You'll be able to review all the proposals time there. Okay, any other questions? Yes So my question is like I'm new to Jenkins platform. So do I have to just go firstly go through What is Jenkins? No Jenkins platform be familiar with it and then start contributing or I should just go to the Github platform Github and Check to the PR sensor Well, if you are familiar with Jenkins it definitely makes sense to try it out So what we usually recommend you can just run Jenkins. For example in a Docker container or locally and You can just try automating some of your projects. I guess you have something In your universities, for example, maybe in projects with Java or something we see plus plus So you could just try using Jenkins to automate the build for your project is the first step So just to study it and its features And if you're gonna, oops, sorry to forward it I was thinking also to I was also thinking that sometimes with if you start to run Jenkins It might help put some of these you know projects that we've talked about in context as well So you might be able to see well stapler talks about you're constructing URLs inside of Jenkins. It's like alright So now if I create Some jobs I can click and see you know the URL being generated I can you can kind of start to see how things are built. So that might help as well. So yeah, I say You can see the folder infrastructure here I think it will help under some of these projects and it's a little bit more A little bit more confusing it might help clarify what they're doing That's right Things like Yeah, probably this is not the best instance So we have sieging say away, you know, try some rest APIs, but it heads up that a number of first API survey is blocked So it's probably not the best project, but if you have your own running instance, or if you find another public instance Because many projects like adopt open gdk a patch etc. They use to Jenkins So you can find a lot of public instances and explore how they're organized and what is Used Yeah Thanks to so much for the link Anything else for today? If I could go a little off topic Can I just throw it out there that I could add to your list of qi terms a similar discussion for the fingerprint Project You mean that is the cake The finger the cloud native or the thing a External story for being a print project Just you know similar conversation like this A meeting just okay. We're good to talk to nice Right. Yeah, I think we'd be really helpful to have the people who would be potential mentors in that I'm not as familiar with that project This is just You know Whether to my to-do list so sorry I'm really behind all my Projects of this week's because if you open a Jenkins change logs and it'll see us change logs. Can I see why? But yeah, I'll try to catch up tonight So also for the potential students on this call if you're still here and listening if you look in the zoom chat Sumit has put a link to setting up your development environment with Jenkins. It's a very good walk-through on setting that up So I wanted to make sure we call that out Anything else Just close the code and so there's no other questions So again, thanks to everybody for your time and for interesting the Jenkins project once you have applications Please speak us so we can have a nice subject. Thank you Thank y'all for bringing your questions. It's good. We're here to help you Thanks all Thank you, everybody. It was good to see you Martin. Let's see you too. Bye. Bye