 head. So Harshit, why don't you first introduce yourself to us and let's go through some ideas on, hey, what does community bonding mean, et cetera? So as you all know, my name is Harshit and I am an Indian student pursuing my bachelor's degree from Punjabi University in computer application. Great, excellent. And so Rishabh, you want to introduce yourself next? Justin, then I'll take a few sentences. Okay, Harshit, I am Rishabh. I am a back-end developer. I've been working for almost an year now. I was a GSOC student last year for the same plugin, Git plugin. My project was related to performance improvement. Mark and Justin were my mentors. And I had a very great experience with them, great learning experience. I hope you have the same hair for this year. And Justin, you want to go next? Yeah, Justin, we're good. I'm a little bit of a chameleon. I guess my current, I've done front end back end. And I guess I'm more CICD these days. But I have a lot of time on working through Jenkins project and stuff like that. I've opened source and plugins and helped submit some PRs to existing plugins. This will be my third GSOC for Jenkins. And yeah, it's good times. Like the Echo Rishabh, last year was excellent. And it was great working with the two of you. And looking forward to working with you also, Harshit. Thanks, Justin. And I'm Mark Wait. I'm a long-time Jenkins user. I've been one of the maintainers of the Jenkins Git plugin and Git client plugin for probably six or seven years and been involved with Jenkins longer than that. Discovered that you don't have to be brilliant to help with important plugins. And you don't have to be especially great as a programmer. But it's wonderful to be part of a community that lets me do things and learn things and grow. So I've only done one Google of summer code previously. And that was with Rishabh last year. So we'll look to learn together and grow together and have good experiences together. So next thought on my mind was to remind us what the community bonding period is and what it describes here on the Google summer of code side is that it's the period of time between when accepted students are announced and the time these students are expected to start coding. So this time is an excellent way to introduce students to the community, get them on the right mailing list, working with their mentors on their timeline for the summer, etc. So I think of this as planning and preparation and getting to know each other and identifying processes we should use. Rishabh, maybe you can share some of the things we learned from our last time of places where community bonding wasn't as perfect as we would have liked or things you say, oh, let's be sure we don't forget to do this during community bonding. Yes, that'd be great. So for me, when I started community bonding was more about I would say being comfortable with the mentors and establishing, I would say an open communication channel with them being comfortable asking doubts and understanding. And I mostly spent my time actually since my project was more research based, I was spending my time doing that during the community bonding period and my assumption was that I cannot make a good design proposal or I would say a design plan for my project because I don't I just don't know what I'm going to code right now because I don't my in my specific case it was imperative that my research shows something which will actually give us the blueprint of what we want to code. So because of that, I did not I would say use the community bonding period to foresee or plan how my development experience is going to my development plan is going to be for the rest of the GSaw and that I would say got us into some issues and later stages. So what I would suggest is planning is definitely a major part of the community bonding period. First is yes, I would say the priority would be set like be comfortable with the mentors with the community, try to understand the code base if you already I'm sure you must have looked at some part of it if you have doubts ask that regularly you can you can ask anything from everything don't hesitate and then I would say plan. Planning is ready essential at this stage might seem like you know we could the proposal we've sent or you've sent at the at this stage might might you know you could start with that but I would suggest discuss now that you have more time the mentors are going to give you more time you should discuss that extensively and come up you know with a feasible plan for the summer. A design document is is I would say the preferable preferable way to go that makes sense. Yeah, so I've started a I realized that I hadn't started meeting notes for this session so I'm going to share a screen with with meeting notes on it and let's go through and we'll just I've already captured some of the things that that Rishabh had noted let's go through that and we'll we'll talk about it together let's see so sharing screen now great all right so right can everybody see my screen okay okay so the project plan oh go ahead. Oh enough and I was just I was going to say oh should we create some minutes you did it. Okay sorry yes that's that's that's this is me trying to get get on the ball here okay so what we could do is I think Rishabh already highlighted a good thing we could review the project plan and have our should talk through the project plan as already identified so that we could just have a conversation about it discuss it here that that might be one very good thing to then allow harsher to form a deeper plan or answer questions one of the things that Rishabh noted also was identifying the work to be done during the project and for me this one is particularly complicated in testing and validation because of the the many different places that we've got a many different things we've got to check so I was thinking we talk about implementation and talk about testing both are there other topics that any of you would like to put on the list as for today I and I apologize I have a hard stop in an hour actually a hard stop in about 40 minutes because I've got another meeting that starts 45 minutes from now. I have an idea I can just look at you validate it so I think I did not read at the time I was starting I did not know the development life cycle of you know creating a feature coding it and then testing it and then finally pushing it to production I I don't know if it's feasible but would it be possible that we give harsher a small task which can be a feature or could be I'm sure he is fixed some bugs but the point is that if he's able to code that plan code test and deploy it or maybe he would understand how much time he has to keep while he's planning for a feature a simple feature to go into production because that is something I I would say I underestimated while I was planning and I thought that okay this is simple to code I'll do it and then it goes to production I'll test it as well with some unit tests I did not realize that the testing is extensive and it's considerable because we have a huge audience for the plugin that that's a that's a good idea so harsher had submitted a he'd submitted a fix for Jenkins 38 699 in PR 1064 and and that one harsher you can you can probably talk to that better than anybody all of the things that you went through to get to get to finally having an implementation to having an implementation there that oh yes this does what we expected etc okay so that issue was regarding the the deletion of the files that was caused due to the plugin we WS cleanup plugin right exactly and and but there were there were complications if I remember correctly in that one when when exploring okay what do we what do we do with it how do we fix this how do we test it at least for me there were a number of things I had to do in investigating it to see oh what's going on it's because so derived from 692 so so it's I think reshops got a good suggestion should we should we put you on should we identify something where hey as a first time contributor take this other thing also through to all the way to production or are you already comfortable harsher that that you think you've got a handle on how the workflow operates in the Jenkins community no I'm not that comfortable I mean I need to understand a bit about the Jenkins architecture also and the plugin development structure good okay all right so then then that that may be a better choice than then that's a good thing to to be doing in addition to the planning I like that very good okay Reshop were there any any specific tasks that you had in mind as you think about things that helped you learn or or prepare better were there specific things that you thought oh hey this was a good class of issue or this was a good type of issue so as far as I remember correctly during the community bonding period I was working on working on some bugs I remember so for me the most I learned why the the source code for git plugin I learned mostly while creating unit tests for some of the cases so the bugs I was fixing I think I would have to look through them but the point is that the mostly my learning experience on the exploration phase with like git plugin source code was during solving friendly issues and writing unit test cases for them yeah I would say I'd say that's how I referenced the Jenkins architecture I I think there was a limited it's I think it's a huge thing coming to but I I think I I learned as as much context would require for me to do my project I would say and yeah I think I would need to think more about that Mark what were the issues which actually helped me I could probably list some of them which helped me because I specifically remember that writing unit tests was very helpful because I got to know in certain a git 90 years I actually looked through the code a lot because of that also if like I would like to add something so the issue that I'm currently facing in the planning phase the web need is the UI implementation that how I will be how will the user interact with the the code I mean the feature that I am providing in the pipeline job ah okay good all right well so so that that is a how will the user interact interact with the credentials binding inside a pipeline job okay good all right and there's a few good guides of plugin development too I wonder and I could link those to you if that's helpful but those might help you kind of figure out some of these things if you haven't seen them before you perhaps you have I know docs don't always tell the whole story so sometimes getting your hands dirty is helpful so yeah so there is I mean we there's certainly the let's see where is it the Jenkins tutorial on in the developer guide there's this tutorial as as one of the steps and then there's the archetypes repository as a different approach it will introduce you to a number of the different controls that are available in a in in the UI let's see so no not that we want the archetypes there we go this one so this one has and how do you do how do you get started by if you wanted to create a brand new plugin now I don't think in this case we're creating a brand new plugin although that's that may be possible oh yes right very good choice the forms section is very much focused on UI yes yeah and then I dropped another plugin development page I don't know if it's linked to from that other tutorial but that's also a really good one okay so let's grab that one which was this one oh yes okay very good all right and then of course if you have questions like feel free to ask us and we might be able to point you to other specific things too this will help you avoid a little bit of going too far into the rabbit hole right and I just remembered Mark you shared two very good documentations with me related to SCMAPI consumer guide and SCMAPI implementation guide those were and now but now because Harshit's work is actually not around the SCMAPI I'm not sure that that will actually help him as much as we might have wanted it to because Harshit's ish Harshit's task is to work in the credentials binding and to create the environment such that it can we can use credentials binding with command line git so SCMAPI actually I think is probably not going to be involved for him I'm not even sure that he'll be inside the git plugin that that may be but the the piece that was that I'm expecting is yeah now now credentials binding for me is is going to be a an interesting area because I'm not nearly as experienced in that as I am in in sort of the nuts and bolts of the git plugin itself okay so so I think I've heard suggestions here Harshit you had asked the question how will the user interact with the credentials binding inside a pipeline job right and and there is if we look at Jenkins on this side if we look at the pipeline steps reference credentials binding this was the is at least how the original idea was modeled that the user would do a with credentials and then the argument would be some sort of a git thing here a git username password and and I think that was also in your project plan that that's how you envision it are you still okay with that as as the idea of how we approach it yes this is fine that the code snippet generator will be used in the pipeline script and the you are based on the the credential ID and the all that all the other works such as username password will be taken care in the back end drivers great okay very good okay so now so tell me more about your question then how will the user interact with the credentials binding are you in because I was assuming it's just it's they would work with it like well as you were just describing using the pipeline syntax generator and here they would choose with credentials with credentials whoops where is my with oh now that's interesting do I not even have the credentials binding plugin installed oh there it is okay good all right and then use a binding and I'm I was assuming that a new binding would be added here and conceptually like this one so the username variable might be a secret and secret password oops and it does not have anything oh that's interesting okay why doesn't my well so let's use private key now I'm fascinated why do my credentials not appear here interesting yeah except that they are all or at least a number of them are okay so I don't understand why this is doing what it's doing but I was assuming this would be the user experience ignoring the fact that I'm surprised that my that that I don't have credentials ID is is this matching what you were expecting harsher or is there something else that yeah but I thought like the this snippet would be generated by the user in the in the pipeline job rather than going to a snippet like the pipeline syntax and generating it separately it would be generated on the page itself and so so by that I think you mean I could go to a specific pipeline job and inside that pipeline jobs yeah inside that pipeline job let's use a smaller one this one I might say I open up this job and here I go pipeline syntax for the same thing is that what you were thinking okay it's okay for you to or would you like to share your screen and show us show us what you had in mind because I think it's good for us to talk to each other and understand each other about where you're envisioning going and how we might how we might get it that would that would be great if you can if you want to bring that in we can have you share your screen and you can talk us through the kinds of things that you're envisioning let me stop sharing so I will be joining the meeting now I will be joining later and you can you can actually join from two different computers you don't even have to leave the current one that's working oh okay one second so Rishabh while while Harshad is getting connected I realized that last year when we launched community bonding I had a much better agenda ready and maybe we ought to go grab that that agenda thing and talk about if any of those ideas make any sense sorry that I wasn't as well prepared this time as I should have been so here was here was what I are you sharing I'm not yet oh I should shouldn't I because until Harshad's ready with the second we can be staring at this so here were some of the things that we had suggested before update biography and I think that's already been done actually I think Harshad has submitted let's okay let's see if I can see yes okay so that one is done good and last year we had said hey convert the project plan into a uh an adoc that we could put on Jenkins.io did did you find that helpful when we did that last year I mean we're going to need it eventually it'll have to be in the google summer of code let's see how do we do it we put it here this way last year and I think yeah I think we'll need something like that so we would yeah we should do because it's I think it's a precursor to writing blogs after each phase we will do that in adoc right project right so I think it will be a good exercise yeah and then then we had the suggestion progressive milestones and and that that feels like a really good thing you were guiding on how how we didn't do that as well last last year as we should have so uh Parichet did at the time he did share a design document what he did and so it was very with me the difficult thing was that it was the research part of it and not knowing what we were going to develop made it difficult for me to create a design document at that time right and I think well and I think that I think that Harshad's tasks are are much less recess research loaded than yours were right we don't have a question about which which implementation path should we take at least not nearly the same level as as we had with yours because yours it was run a bunch of benchmarks perform a bunch of a bunch of performance tests before deciding what we could even do okay let's see now um that's an interesting we don't really have an upcoming release of the get plugin to test and these things yeah I don't think and if I remember correctly I that one might be but see I'm not sure that unit tests for the get client are as useful to to harsh it as they would have been to you just because credentials binding will have a different experience for him yes and I think maybe better that he spends time on I think two things first would be to understand the code in second exploring designing the creating the design document I think through that process we would get a lot of doubts and concerns and a direction agreed okay and this one I think JIRA getting comfortable with JIRA is is going to be important because the credentials binding plugin and the get plugin both track their issues in JIRA now I'm assuming that the harsh it I'm I'm just going on I'm I should be less disruptive here are you ready to take over and share your screen yes okay good excuse my being you forgive me you need to just be comfortable saying mark stop talking is it visible right it is thank you so I was thinking to put that in the configuration configure part in the right right here in the board like the user will have the checkbox use like with the name get credential binding and when we they will check it they can generate the snippet based on the and they select the credentials and use directly in here but I didn't thought about that what you just showed me so that's also nice yeah so go ahead and just you would have that kind of block either in pipeline script here or it would be in git as opposed to it being like kind of a checkbox yeah that that was the thing I was confused about like how we can put that checkbox through git's plugin yeah and I think Justin's right that I think we actually don't don't need it to be a checkbox on the job because if you go down further to the pipeline syntax here there if you on the far right the try sample pipeline if you click and choose one of the drop downs there either hello world or so it looks like the down arrow is on the far right edge and oddly enough very small I don't know why it's so small but click the down arrow that yeah just write a little further to the right on your mouse and you'll click that arrow it's it's a button that's super super narrow on your screen for some reason yeah that's weird I've never seen it that small right is this a mac os is this what what's your what's your machine you're running it's one two oh interesting okay so maybe you need to shrink the the text with a control minus no but it's not increasing huh I'd yeah that's that's really quite interesting which and this is I assume google chrome no firefox oh interesting well I just installed firefox today now you've inspired me to check to see if mine should behave the same can you bring it to 100% if you click on try sample pipeline does it do anything yes see mine is mine is a full width drop down and for some reason your drop down the the gray button on the right of the words try sample pipeline is much narrower than it is on mine even on my firefox and so if you click the try sample pipeline box there it doesn't drop anything down does it no it's dropping it it is dropping it's my new drop oh okay so all it's just is we just have a visual problem okay because to us all we see is the words try sample pipeline with nothing dropping down but you're seeing when you click it it drops down and it shows hello world and github plus maven and scripted pipeline yeah so hello world okay so now if you click the pipeline syntax link there at the bottom it will take you out to that page where you could now generate a sample and now on sample step click with credentials this is reminding me when when I created the project idea I probably should have created a video to go with it because so when you click sample step and look down through the alphabetical list one of them will be with credentials and of course none of the rest of us can see it because we're not seeing your drop-down menus but when you click that with credentials row it will change to take provide prompt for arguments for with credentials oh oh except of course this assumes you've got the credentials binding plugin installed could you go to manage plugins i installed it yesterday but i don't know if i installed it i guess i haven't installed it yes it's perfect and now do a download now and and we'll want to do a restart yes and we'll want to have you update your Jenkins eventually but it's like a little checkbox down there that you can check and it'll restart Jenkins whenever uh it's loaded yeah there we go yeah so basically like those snippets are helpful for putting them into that that box that we saw or putting them in git oh i think a lot of people end up having this in git and then git is just pulling the pipeline stuff but this is a simpler way of looking at this without having to know all that other stuff for now perfect ssh user private key is a good choice or username and password separated those are any one of those is fine any one of those two are fine i've not added the credential yet in this i'm sorry you say that again how should i missed it i have not added the credentials oh yeah you have this you see the same surprising thing that i see so don't worry about that it's harmless for now i suspect there's a bug in the credentials binding plugin that it should be showing us something there and it's not so type in a name for the username variable uh you could call it my username or bob or fred or whatever i think it might not show anything that dropped down if it doesn't have any credentials that qualify yeah except that at least for me i had lots of credentials that qualified and it still didn't show them yeah but but okay now if you click the generate pipeline script that is what you would cut and paste into the into that pipeline definition box that we had earlier so if you do the hello world and now right after echo hello world or yeah replace it put it paste in that with credentials that you just did yeah and and that's that's the editing experience that i was assuming is okay we work here because because then like justin said ultimately the user puts this into a git repository into a jenkins file and they they use it from the jenkins file yeah this is fine actually my idea is a bit more so the good news is is that simplifies things for you because uh some of the plumbing and stuff is kind of handled for you um so some of the pipeline integration guide stuff will help you figure out how you can get this to work um and what this ends up doing is there's there's some stuff that you can do across both pipeline jobs but as well as with regular freestyle jobs where people do have all those checkboxes and drop downs and all that stuff um typically the freestyle jobs are where you you would see more like drop downs and things like that and people would use the credentials binding plugin in those kinds of jobs but pipeline jobs typically is all all pipeline all the time for the most part in fact some of those checkboxes and stuff end up being populated by pipeline stuff in here after you've run a job for a weird reason so there's options to put some of this stuff and codify it into pipelines and then it ends up showing up in some of those checkboxes but the best majority of options will be in this script or in git so harshee are are you okay with that as as an idea as a way to approach it are you willing to explore that further and and better understand it yeah this is more simplified than mine but it is perfect do you would it help to look at how this looks for a freestyle job too let's see i wasn't sure does the credentials binding we hadn't actually intended to use allow credentials binding or this particular technique is specific to pipeline so i wasn't even worried about freestyle jobs i mean i does credentials binding operate in in freestyle yeah yep oh okay most every well i think the best majority of things you can do across them if they're if they're set up that way um oh yeah i think there should be an option in here to do a credential binding okay so now now you've got me inspired where would i find a and a match for credentials okay i don't see anything that looks like in a freestyle job i could use credentials so Justin maybe we could have you share your screen and show how that might work in in a freestyle project because that that's a that's a surprise to me i was my mental model hadn't hadn't didn't even have a place for it to be done in freestyle now i'm going to be embarrassed i don't have Jenkins on my computer oh no that's okay no problem so so if you're would you be willing to would you be willing to tutor me and i'll share mine and you can guide me on what to click i'm happy to share yeah yeah no worries okay so harsher are you okay if i stop the sharing with you for now yeah okay so i'm going to share my screen and following harsher's pattern here is my firefox and this is a brand new creep oops let's make it a readable size brand new created freestyle job whoops here we go okay so i think your analog you're looking for in here is in a build step okay so a build step and i'm probably looking for something that calls itself um a something about credentials binding or is it um try and just do an execute so like execute shell yeah or maybe inject environment variables if this one doesn't show yeah so it advanced okay in advanced okay maybe not okay so how about we could do uh inject environment variables although this i could i could be incorrect you're um trying to think what that is i can i can look into that and see if i can find it and then maybe next time okay yeah let's let's put a put an item there to be sure that we have a discussion about all right so um action items very possible i'm confusing this with uh on other things i'll look into that so if it's not possible for a freestyle job then how would they use a robot um performing authenticated gate operations they won't actually that's that was my assumption from the outset is if you if you want to use authenticated command line gate operations you must use pipeline so so my working assumption from the all and from the very beginning was this is only available through um this project would only do only add authenticated gate operations to pipeline and and it's actually described there in the in at least in the original project idea that this is truly limited to pipeline and i yeah assumption i was just saying that i assumed that functionality where is all of the project the ways of building a job would be same i would give the same functionality just the way of doing it has changed and made things easier with pipeline jobs but freestyle would cover all of things that's not true okay yeah well so and that was that's much bigger than the scope that project idea had had envisioned so so it certainly could be done i just don't know then we've then we've truly got the problem that harsh it was describing how does how do we add a user interface that allows the user of a freestyle job to interact with an authenticated gate operation yeah i think maybe we prioritize this one lower or two because it's given the scope conversation so i can do the research there uh that's why i arrived at hold us there but but then the question i have is that if we're not looking into that because of the scope pieces but um in our current user base how many people are creating freestyle jobs do we have an over over 50 of all jobs now are pipeline i am so proud of that it's taken a few years to get there and the number of pipeline jobs is growing much much faster than the number of freestyle jobs friends don't let friends create freestyle jobs but what justin said friends don't let friends create freestyle jobs that's right that means that uh it's safe to assume that this would be reaching to the majority of the users well and and the users that it doesn't reach are already satisfied with what freestyle does for them this is this is intentionally focused on people who want more capability in pipeline than pipeline can give right now so i apologize we're reaching the end of my time um rishabh had suggested it would be easier for him if we met one hour later harsher would it be okay with you if we met one hour later and my next question is could we meet again tomorrow at this this time plus one hour so basically right now tomorrow night so that we could before i leave on vacation we could have at least had two sessions together my college classes start by 13 oh okay so it needs this needs to be earlier so that we get you because it's it's almost 8 30 now isn't it for you yeah okay so then and then we really do need to do it at this earlier hour so rishabh are you okay doing it at this earlier hour for now yeah i should not be okay and is tomorrow okay for you yes it is okay and are she likewise yes okay so i will schedule us a session for tomorrow and we'll continue i'll also up is it okay for justin oh yes sorry justin i didn't check with you yeah i'll i think it should be fine great all right if not i don't want to speed progress great okay so um tomorrow same time and talk to everyone tomorrow then thank you and sorry for the the quick end thanks very much harsher it's so great to have you on the project looking forward to to what we're going to do together thank you talk to everyone tomorrow thank you very much