Hello, thanks to everyone for joining this meetup. Today we will be talking about contributing to Jenkins and specifically we'll talk about outreach programs like Google Summer of Code. So, the target audience for this meetup is basically anybody who is interested in contributing to Jenkins, contributing code, documentation, helping to organize events, et cetera, et cetera. And if you're a student, there is Google Summer of Code starting soon, so we will talk specifically about that. Okay, today we have three presenters. My name is Alec Narshev. We also have Mark Wei and Shvelin Damba on the call. All of us experienced Google Summer of Code mentors. We're organizing a lot of things and contributing to the Jenkins project in various capacity. Yeah, maybe we'll have other contributors who will join us today. Let's see. But just in case we have somebody on the call, everyone is welcome to talk about their projects. So today we will do a brief introduction about Jenkins, about the technical stack being used in the project, and provide some guidelines about contributing to the community. And then we will talk about Google Summer of Code. So, if this is your first time on Jenkins online meetup, so the main idea that it's basically a meetup organized by contributors, and we organize it for users and for contributors. You're welcome to ask any kind of questions. We will be doing some live demos. The browser is almost nonstop, so there is no formal presentation, and everyone is welcome to participate. So, during the presentation, feel free to ask questions using the Zoom call name. And after the presentation, we will have an open discussion, so basically we will stop the recording, and we will grant everyone voice permissions so that you can ask questions. After the meetup, we also have a GitHub chat for newcomer contributors. We will talk about it later, but you're welcome to ask any questions today after the meetup. Okay, just a quick introduction to Jenkins. I assume that the most of the participants on this call know what Jenkins is, but I will still do a really, really brief introduction. Jenkins is an automation server and framework. It's widely used for any automation purposes. For example, you can basically automate everything here with Jenkins, launch your scripts there, make building, testing, and delivery of your projects, and Jenkins is the most popular in continuous integration and continuous delivery area. This is one of the most popular tools, and it's also open source, so you can compute the Jenkins itself to its plugins. You have more than 700 plugins for different purposes, and we have a huge community. For example, last year, we had more than 5,000 contributors to the project. And yeah, this is a pretty big number. Okay, so how does Jenkins work? Jenkins is an extensible system. Personally, I call it framework. It has plugins which provide integration with different tools, which provide support for different control flows and infrastructure. You can connect your build machines, which can be based on Linux, Windows, other systems, and for the most of existing build tools, so there are plugins and there is support for Jenkins. So you can automate pretty much everything with that. And when I say everything, it's not just about software. For example, I started using Jenkins when I was doing hardware development. There is a lot of people using Jenkins for various kinds of automation. For example, accounting, smart systems at home, various kinds of automation. If you join a company, most likely there will be Jenkins somewhere, it will be useful for various kinds of automation. Okay, so what does a typical Jenkins Python represent? Basically, if you work with software, with hardware, or with any kind of build systems, you have source code, starting software control management system. Jenkins checks out the source code, then prepares environment, runs the build, does some analysis, for example, static analysis or verification of your program, then runs tests, publishes reports, build artifacts, and sends notifications. In Jenkins, actually, this flow is completely flexible. It has general purpose languages support, but it also has pipeline DSL based on Groovy, and you can implement various flows. But yeah, this is just a common one. Later, Mark will show a quick demo of how Jenkins looks like in reality, so I'll go forward. Okay, and yeah, I always said that we had more than 5,000 contributors, there was hundreds of plugin releases, and there is a lot of users coming from different companies, because Jenkins is widely used in all kinds of automation. And it just provides you some reference for project size. So, Jenkins is a part of the continuous delivery foundation. And there is another plant there, organization called the nature of computing foundation, and among these two organizations, Jenkins is the second biggest project of Kubernetes. So, yes, it's pretty big. So, interested to find Jenkins online, there are two main GitHub organizations. We use GitHub as a main social coding platform. So Jenkins is the main organization where we store Jenkins core libraries and the majority of plugins. And you can see that there are just 2400 repositories there, so the project is pretty big. And another organization is Jenkins Infra, it's basically used for projects internal infrastructure because we need to build Jenkins, test all the plugins, etc. We also have a website and a lot of other infrastructure components, which we host on our own. And hence, you have a pretty big infrastructure component as well. We also have GitHub organizations, but these are two main ones. For Jenkins, of course, we have various technologies inside. The Jenkins core itself is based on Java, but we actually have a lot of front-end written in JavaScript, we also use a lot of Prunia. Even in the main repository, you can see that the distribution is like that. And don't trust these numbers because a lot of things come from dependencies. So, actually, there is a lot of JavaScript right now in the code. Then we have Docker packaging, we also have Kubernetes packaging, we have Helm charts, we have native installers, for example, for Windows for operating systems. And also, we have our website, which is like it on Jenkins Infra. And all the website we have on Jenkins.io is actually implemented as a documentation as code. So the entire structure and all the documentation we have on the website. And other companies are basically written either ASCII.com or down. And the engine of this site is written in Ruby. So it's AeroStruck and some of our components. So these are just a few key technologies we have. And actually, we have a lot more in different areas. And we can talk about it later if you want to see in detail. But in the case of Jenkins, if you want to contribute, actually you can find the knowledge of stacks for pretty much every component. Because Jenkins is either used to automate and builds for particular technologies there, or it has some components written in there. So, yeah, there is quite a lot of technologies there and whatever is your profile, you may find something interesting for you in the Jenkins case system. So I did a quick introduction about what we have inside. Again, we will have a lot of time for Q&A, for this particular questions. So don't hesitate to ask them. If you want to see more details, there is a presentation from me and Mark from the son of 99 years. It's about contributing to Jenkins and you can find a lot of materials there and specific examples and links on the peer technology basis. So you can find it. You can use it as a reference information to find where to start. Okay, and this we could have a really big demo or yes, that'd be great. Okay, let's do the demo first. So, so I'm going to go ahead and share my screen and just show some of the things that Jenkins automates for me. So what you see here is, is a Jenkins server that I maintain. And this Jenkins server for me is helping me do things that are interesting to me. And we encourage you to do the same find a way to use Jenkins in ways that benefit you. So in my case, I maintain Jenkins, a Jenkins plugin or two. And as part of that, I build it locally here and I like to see, oh, how does it look. And so here's some work that I've got in progress and I'm going to look at the, the blue ocean interface to see how this built most recently. And these kinds of images to show me, just like Oleg described, check out, build, and in this case archive, and yes, here are my test results. They give me a hint what's happening in the, in the project. When a test fails, I can go investigate further to see in details. What was the output like there. Jenkins is a great help for my specific needs because I can tune it to do what I need to do. And so when I have a question a challenge or a problem with software, I'll typically create a Jenkins job and use that Jenkins job to help me do that work. If you're a student at the university, you might find a way to run a local Jenkins just long enough to do some, some initial study or some, some development time and let Jenkins watch your work, run your tests in the background, and show you the results. There are, there are plugins for Jenkins that allow you to see, for example, we use, we use Jenkins plugins that allow us to see static analysis output or to see the results of, of coverage analysis. So here I'm using an older plugin to help me see how is the coverage report for this particular plugin. Those kinds of hints help me in my development. And Jenkins can help you in yours. I don't use an code coverage API. I am not yet see and shame on me I have to, oh like, oh like notes that shame on me I should be using the newer, the newer tools, although I think I am using the newer tools. For instance, in the pipeline here when I look at this, the pipeline here with coverage it, I believe is showing all we could show CI Jenkins that I owe with the new tools. Yeah, why I asked is because one of our projects in 2019 was devoted to creating new code coverage engine called coverage API, which includes quite complete internal site but also provides a complete new front end for the based on JavaScript. And yeah, it was created by one of our Google summer of course students. So you're going to go to some reports if you go and you make a good point that there are, there are quite, we've had amazing results from Google summer of code contributions right so for example, the checks API that was was added last year during Google summer of code is now used by all of us on CI Jenkins.io. Thanks to that Google summer of code project. So it's, it's exciting to watch student projects be used. I just did some numbers yesterday and last year's last year's work by Rashab on the get plugin has is now been deployed at over 85,000 installations. I was working on commercial software I was proud to hit 1000. And yet here he shop as a student. His work is now in 85,000 installations worldwide. This is a great chance to contribute in a way that helps a bunch of people in in very interesting ways. Thank you. So should we place it is how to contribute. Yes, let's do. Okay. Yeah, I'll share my screen again. Okay, this year. Okay, so if you want to contribute to Jenkins, there is a lot of opportunities. We have seen 2400 components. Huge community. And you may ask how to get started because it might be hard to find something country to contribute to. And in order to help you create it. An entry point now website change service slash participate. And actually it's an entry point for any kind of contribution. So if you want to get started, just go to this page. For example, if you want to write code if you want to help these positions documentation or do some design work. And you can find more communities. And you can just click here and you can find more description documentation which says how to find the repository is how to do basic contributions including plugin developer Jenkins code infrastructure. It also provides a links various issues. For example, here you can find the newcomer friend dishes in Jenkins Jira, or in GitHub issues. So currently use two types of vision triggers in the project. You can see that there are just 50 issues on GitHub market as good first issue, but there are several hundreds of issues on Jenkins Jira. So right now we should be around 200 because yeah, we had a lot of issues before the previous half of our first, but we still want to add more. So these are starting points and basically the same information is available for the types of contributions. For example, so like before you exit from there we've got a question are you okay if I disrupt you but the question for right now I think the question is the question is Is she there. No. Okay, so, so like the question is, I've got Java and Kubernetes skills. How can I contribute where do I start so maybe you could take us on a tour here of some of the kinds of things that that would let's do. So yeah, obviously it's about code. And so for Java basically the most of Jenkins ecosystem is written in Java Jenkins core is Java the most of plugins using Java. We use various technologies text. And if you want certain job basically just go to Jenkins CI and pretty much every repository, you'll have some Java code. So there's a lot of different complex components, for example inside the Jenkins core initialization graphs, we also have our own web framework at the moment. And there is also a lot of different plugins. So when you want to start this job, usually recommend to take a plugin because it has significantly less code some plugins just include a few thousands of code lines. And this is just a good starting point for you as a contributor. I'm just looking at the list. So yeah, there are some plugins. You can just navigate to any plugin. And plugins you can usually find issues. So they're like if you don't get issues or in Jenkins JIRA. And you can just, for example, take a look at health on the tissues. It's one way the maintainers looking for external contributions. For example, support for skipping the status checks or whatever. And pretty much the same is available in many other components. Some of the components also have extensive contributing guidelines. For example, for Jenkins, if you need to get here, it has its own contributing documentation just because Jenkins core has a lot of specific tools, etc. And you can go through these guidelines, not to get started with your environment, the build project and run it locally. So this is a good entry point. For Kubernetes, for Kubernetes we have multiple plugins integrated with Kubernetes. So how to find it, you can just go to plugins Jenkins Ion. So if you're on the main site, it's just one click. So Jenkins Ion, you click plugins, you get to the plugin site. And you can just look for Kubernetes plugins. One of the ways is just for Kubernetes in the search line. And what do we get? We get both plugins but actually there is a lot more related to Kubernetes because not all plugins have Kubernetes in the main. So if you search for Kubernetes plugins, then you get all the plugins. I did something wrong. Actually more. Anyway, we have Kubernetes is basically provisioning agents inside Kubernetes so that you can run on the one payloads. For example, if you need Python, if you need specific tools, you can just invoke a task on a container with providing these tools. For example, you can use credentials for management, client API, CLI, etc. So these plugins heavily integrated with Kubernetes and if you're experienced in both Java and Kubernetes, you can start from that. Also, we have a lot of components specifically for Kubernetes. For example, we have Helm charts, which are currently a part of the Jenkins project. It used to be official repository before it was the work for Helm 3. So now we have Helm chart right inside the repository, as well as we have Docker images, which also used for deployments in Kubernetes. So you can find them here. You can take one of these repositories and try it out and the Jenkins works quite fine with Kubernetes. And last year as a part of Google Season of Dogs, we also did some documentation about using Jenkins in Kubernetes. So if you go to our documentation, there should be even a section now. Check installing Jenkins or like that's the, that's the first entry point for Kubernetes. Yes. And this is certainly a great place for people to get experience with Jenkins on Kubernetes and to help us as we further strengthen and enrich the documentation. And if you want to help with improving documentation, for example, working on better searchability, on better layouts, look and feel, all of these kinds of contributions are also welcome. If you want to write more documentation, because for example, you have a main Kubernetes repository, you have Helm charts, you also have for example, two operators. So basically it's additional tools, which allow to extend the Kubernetes API and the provision Jenkins instances, so there are even four operators for that you can take a look at one of them. Yeah, these operators are within a goal. So if you're interested, you can just take a look and contribute them. That is also contributing by them. For example, in this project, which explains how to get started and how to contribute. So if you're interested in Kubernetes system, just start from here and you will find a lot of information. Now we've got some additional questions. Oleg, are you okay if I keep bringing more questions? Fine. So another question was, if I want to work on an issue, should I assign it to myself or what's the recommended workflow to, and I assume what that's really inferring is so that I don't trample on someone else or surprise someone with work on something they had already started. Yeah, it's a common question. Actually, there are two approaches. So one approach is for GitHub, for GitHub, you cannot assign an issue to yourself, because you don't have permission in this repository normally, if you don't maintain it or contribute or who got permissions to do that. So in this case, you cannot assign it to yourself, but you can just send a message. For example, you can say I'm working on it. And that's it. It will be some indication and later when you create a pull request, you can reference this issue and it will be automatically referenced. So it's what you can do when you use GitHub issues. If you take an issue in Jenkins Jira. So let's take a look. In Jenkins Jira, the layout is quite different because we have one Jira for a few southern components. So there you can see that, for example, you want to take an issue and work on that in the Jenkins code. So here, if you register it on Jenkins Jira, you can assign it to yourself. And this is what we recommend to do. For example, yeah, there is an issue which I created yesterday. So I assigned it to myself because I wanted to do that. And a big step progress. And then I'm working on this issue. So basically it's fine. So depending on the task tracking system, the process is a bit different. If I'm on Jira, it's log into Jira and I assume I can, if I don't already have an account, I can go to accounts dot Jenkins that I owe to get myself an account. And then I assign it to myself right inside Jenkins Jira. Yeah, that's right. Thank you. Okay. So then there is a question, is it a good idea to create plugins which run as Docker containers with the directory mounted. So this is actually a good question because we had discussions about this mode quite a lot. So it was called container API plugin or something like that, which would allow such time for France. And if you're interested in this project, let me know because it's something which would be definitely interested, interesting for the community. Right now, we have some plugins utilizing Docker API. So for example, we have plugins like Docker commands, which provide API which can provision containers. There is also, for example, Docker plugin which provides agents on a demand, which can use specific environment. You can have various Docker steps, you can just write a Docker image in Docker pipeline. But if you want a plugin which suddenly uses containers under the hood, and there are some plugins doing that but there is no generic API for that. And if you're interested to work on that. It's a good idea. It definitely makes sense to have some such API. So if the plugin seems to be deprecated and not working, is it a good idea to create a new plugin for the same problem statement. So for that question, there are actually two ways. So if the plugin hadn't been recovered due to various reasons, it's an option to create a new plugin. For example, we had Perforce plugin and now we have P4 plugin. Of course, there were other such examples when there were plugins which basically provided that you write all the functionality. But there is other ways. So if plugin is not maintained. For example, we have some plugins up for adoption. It doesn't work like that. I will take one of my plugins which is formal plugins which is definitely up for adoption. So here you can see that there is this plugin is up for adoption. If you see something like that, then you basically can use our guidance and just adopt the plugin instead of rewriting that. For example, fix the defects, etc., and get it working. If the plugin is de-published, we de-publish some plugins because of security reasons, but the code is still available on GitHub. For example, recently we de-published the team foundation server plugin due to binding issues because some of the components you are violating the open source license requirements. So we had to de-publish this plugin and we haven't fixed it yet. So it's an example of plugin which is not available in the update center. But as long as it's within JGPIS organization, you can adopt this plugin if you want to improve it or if you want to get it restored in the update center. So for TFS plugin we already have contributors working on restoring that. But yeah, there are other plugins which have been de-published for a while. So I like your comment on if a plugin should I create a new copy of it, fork it or contribute to it directly. I'm assuming there the preference is to contribute to it directly and offer to adopt it the way you suggested that if it's not being maintained, adopt it. So when it's not maintained, the only way to recover it is to adopt it. You have a process for that. So even if maintaining some response, we can transfer ownership with some conditions. And if the plugin is active, the recommendation is to fork it and then to submit a pull request. And even if you want to adopt the plugin, maybe you want to start from forking it, suggesting some requests because they also good justification for actually adopting the plugin. Something goes wrong. So usually, in my case, I also work through forks, even if I have direct access to many plugins. So my recommendation would be to actually push your code to fork and then make full request because it keeps the main repository. From work and progress activities and it will help other contributors. And I like the fork work model, the working model with a fork because yeah tidiness like you said it also helps allows me to see the see the results discard them and not have not have contaminated the primary repository with my failed experiments. Okay. So there is a question about setting up Jenkins. So, yeah, I set up Jenkins in a boom to have a busy boxer, which couldn't be able to solve. So if you shift windows, we would create any problem in testing. So, regarding that, your Jenkins support multiple platforms, including windows, for example, I'm currently happy windows user and Jenkins for specific today including a look at if you know, in windows if needed including the computer smart if needed. So you can use windows for development as well. For specific platforms we have installation guidance as well. Yeah, I mean, I'm not sure what happens with the busy box specifically but you can find a solution guidelines for different platforms in documentation and if it doesn't work, just let us know because we will be able to provide something very good guidelines or extend them if something is missing. Yeah, and like, oh, like, I am a happy windows user. I use windows. I have windows experience. It certainly does have differences compared to other operating systems, but most testing you'll find works just great on windows and yeah you have to remember to set things like be sure your path is configured be sure you have the right tools, the usual things. Okay. That's right. So we have something like 30 minutes left, I suggest to proceed and if you have more questions, please submit them using Konee and we will answer them as we go. Okay, so regarding contributing as we discussed there are multiple ways to start contributing depending on technology depending on the goal you can use different approaches and if you need any assistance, if you have any questions, we also have a channel specifically indicated for newcomer contributors. So, if you go here there is a newcomer guitar channel, which I already showed in the beginning. And yeah, this is a chat you can use for any kind of questions when you start contributing. And we will be able to help you to find the proper channel if needed, or just provide a quick answer there for any specific type of contribution you can find guidelines here. And if something is missing, again, please don't hesitate to ask, because our documentation is also driven by the community doesn't mean that it's always perfect. And we will appreciate any questions because we can adjust the communication as we go, or you could just submit a patch based on the conversation. It will be totally valid contribution as well. Speaking of contributions. Yeah, basically any pull request counts. So it's not just about quote jinx is a huge ecosystem. You have a lot of documentation as code. We also work on creating various materials like blog posts presentations. There is also a lot of artwork, artwork and design to be done. So any kind of systems with the project definitely helps. And it's also not just about pull requests because if you help with organizing meetups if you help this just analyzing issues being submitted by users providing some feedback sharing your experiences. All of that helps the jinx community and we will shake any kind of help. So, there are some references, if you, you can just click there if you look at the presentation, which we shared. And yeah, I will go forward. So, yeah, that's it for current contributions. So one thing I wanted to say that basically size of the contribution doesn't matter. So if you just start with computing, you can basically take a look at the documentation, take a look. If you see any type or et cetera, you can just quickly fix that. For example, in the most of our documentation pages, we have improved this page button you click that and it basically just opens the page on GitHub so you can just make a small fix if you see a type and whatever and just do it in a few clicks from the work in case you just need an account. Pretty much the same for plugins, the most of the documentation is also located on GitHub. So you can just go to plug inside and again, the documentation links example. So this plugin, yeah, this plugin uses GitHub. And we can just go there and see all the documentation basically as a review. We also use Viki for some projects but we may create the most of the plugins. And if a plugin is not being created actually helping to use migrating documentation is also one of the ways to contribute. And that's for that somewhere in the repositories. Okay. Okay, so there is a question about CDF Slack space. So for CDF Slack space, just to provide a quick answer why it's a question. Google Summer of Code and this year we participate in Google Summer of Code together with the Confusing Delivery Foundation. I'll hit some relevant. And the guidelines recommend the joining CDF Slack channel. So in Jenkins we mostly use Gitter or RC for some channels. But yeah, the Confusing Delivery Foundation uses Slack. Right now there are problems with login. So if you experience any issues, please speak us in Gitter and we will try to help you so that you can get access to Slack as well. Okay. So should we speak about outreach programs? There is no questions left. I think we've covered the questions and so I think outreach programs is a good thing. Many of many of those who are attending or interested in Google Summer of Code or one of the other outreach programs so this is a great time to talk about them. Okay. So the Jenkins project is continuously looking for contributors. We participate in many mentorship programs including, you can see that there is a jambotron on the front page. So we have she called Africa Contributor starting basically this week. Also we have Google Summer of Code and we have many other activities. For example, we are doing some online hackathons periodically. We regularly participate in October first. We also have our own core program, which we can run on a base-based LFX mentorship. So the project we can organize our own mentorship programs, the students, the students. There is an interesting project. For example, if there are more project applications, then we can go through Google Summer of Code if there are any other reasons. We have a program on our own. But yeah, the key program for us is of course Google Summer of Code and this is a good timing to talk about that because the deadline for applications is on April 13th, if I recall correctly. There are still some time applications. And yeah, I plan to do a big summary of Google Summer of Code. So for Google Summer of Code Jenkins, which starts participating in 2016. This is our fifth year in Google Summer of Code. So this year we have 10 project ideas addressing different projects. You can find all the information on our website because over the years we... Sorry for the disruption. I think your mic may be a little soft. So should I speak louder? There you go. Yes, that would be great. At least I was having a little bit of difficulty hearing. Maybe others or not. I'm a little older than most of the crowd here. So yeah, we'll check the recording. Okay, so I will just speak louder. So over the years we have invested a lot of time in documenting GSOC, providing guidelines to students, to mentors. So if you go to our website, you can find a lot of information there. So the main page, of course, is project ideas because all students expect to make their own proposal. And to help with it, we provide project ideas based on several areas. So for example, this year we offer quite diverse list of project ideas. Just to go through the automatic specification generator so that you can generate open API specifications for STPIs, integration with the different external tools. For example, cloud events, also extended support for grid credentials, providing... Working on the Custom Genetics Distribution Builder Service. It's a follow up to the previous Google Summer of Code when we created a foundation service. Then, for example, providing security validator for the internet separator, improving plug-in installation manager tool, which is also a previous Google Summer of Code project. Improving JNK remote control. It's a network manager used in Jenkins and the improvement of the metering for this component. Also providing support for tecton pipelines in Jenkins in improving one of the existing plug-ins. And also improving step documentation, working in a new semantic version in plug-in. And these are just an example. So if you're interested in another project, for example, there was a question about rating plug-ins so there's containers. So using plug-ins as containers, this would be a good idea for Google Summer of Code as well. So if you're interested in a project which is not listed here, it's still totally possible. So please reach out to us and we could discuss this project idea and see whether we could find mentors and whether we could host this project. So what else?  For example, application guidelines, expectations from students. Again, Google already provides a great documentation for Jenkins users. So please, not for Jenkins users or participants, please use it as a starting documentation. But in the case of Jenkins, we also expand some practices. For example, we do regular online meetups. We invite students to present their special interest groups. We help students with some gardening, with knowledge transfers. And you have a lot of information here which basically expands the guidelines provided by Google. So take a look there, you can find a lot of information. Again, this year we participate under the April of Continuous Delivery Foundation. So if you go to the Summer of Code website, if you look for the Jenkins organization, this year you won't be able to find it. But instead, if you just enter Jenkins in the search box, you actually can find two projects. One is Continuous Delivery Foundation, where you have Jenkins, and another one is free and open-source silicon foundation, where you also have huge Jenkins-related project ideas that we see here. So for CD Foundation, you can just navigate links. You can see basically the blinding for Continuous Delivery Foundation, which will also reference you for Jenkins materials here. And when you apply it, you can use the foundation so that we can work with you as potential mentors and select projects. Okay, just to highlight a few things about the Google Summer of Code in Jenkins, before we expand information about project ideas. So again, our main goal is to provide the best possible experience for students and mentors. We should target having as many project ideas as possible. Usually we target something like five projects. So over the past two years, we actually had seven. And yeah, the idea is to basically focus on projects which really make difference for the Jenkins community. So it's new features highly anticipated by users or architecture changes, which are needed for ensuring Jenkins evolution in the future. And there is also a lot of opportunities to do some dominant specific things. For example, cloud native technologies, embedded hardware, we have automation engineers in the community working in different areas. And if you want to integrate Jenkins with a particular technology, et cetera, or tool we can help. So it's one of our opportunities. And what we also practice is actually a cross-organization project. For example, for Tecton, Tecton is also friend of the project and the continuous development foundation umbrella cloud events is a part of CNCF. For such cross-organization projects, we will likely be able to provide mentors from both communities, which could be a great experience because actually you can work not in one but in two communities at once. And yeah, as I said, we provide a lot of investment in community bonding, knowledge transfers, helping students. We provide trainings for mentors so that they know how to operate because we have some of the new members every year. And there is a lot of things like online demos, et cetera. And in previous years, when it was possible, we were also providing travel transfers for successful projects. I'm not sure about this year, but in principle, it's also possible. I mean, just a shout out to our students from the previous year. So last year, we had seven projects and all seven of you are successful. And yeah, thanks a lot to the students. And yeah, for example, two years ago, we were able to sponsor all students so that they were able to visit our JenkinsFold conference in Mies, I believe. Yeah, it was Mies and San Francisco. And you can find a lot of information on our GSOC website. So then we have some time. So I suggest that Mark and Shovey could help talk about their experience and about their project ideas. So Shovey, would you like to talk about how it was for you? Yeah, absolutely. So for us, specifically me, I had mentored in the machine learning plugin for Jenkins last year. And the experience was quite unique because we were building the plugin from scratch. So either with open source, you usually always have either you'll be building a project from scratch or a project idea. So it could be like a Jenkins plugin for that matter, or you might be working on improving something. So whenever it comes to creating a new plugin from scratch, you have a lot of time to manipulate of how you want it to be structured. So a lot of our time during the community bonding period when we had started out was seeing what all features should be there in the machine learning plugin. Because generally, machine learning tasks are more related to research and not really related to deployment. So the main task of the machine learning plugin was to create build steps, Jenkins build steps for each of the processing that takes place in any kind of machine learning based pipeline. So for example, it could be pre-processing of the data, it could be the training as well. So all of that involved the Jenkins plugin. So we actually looked at which all particular technologies within machine learning can be used like let's say TensorBoard or let's say Python notebooks that are used, which all programming language can be support. So we had support for Python, then R as well. So you can have such kind of things happening. So overall the experience as a mentor is really great because we got really amazing project ideas because we really wanted students to go there and interact with the mentors. And that is what I'll just give as my suggestion to everyone is during this period from today till the end of 13th of April, which is the last day, do share your draft proposals because Jenkins is very, very active and the mentors are extremely active. So you can get your proposals reviewed through emails if you're going through the mailing list. And if anyone has any doubts, you can always reach out on GitHub or also on the mailing list as well. So it's always good to get your project ideas reviewed if you're having like a draft proposal because that helps in receiving some valuable information or valuable points from the mentors who will be able to probably guide you if there is something that is more, let's say if your proposal is a bit too generic and if you should add let's say code samples or you should be adding some kind of architectural diagrams in your project. So all of those valuable tips can you know you can receive to make your proposal better because ultimately whatever contributions that you make and the amount of interactions that you have with the mentors and your overall proposal that you submit like as the final proposal. These are the main three driving points for getting selected for any kind of organization and it's not just specific to Jenkins, but yeah like those are the three points. So I would say that you know like if you are interested in one of the projects for this year of Jenkins, you can start looking at the projects, start contributing a little like you know start interacting with the mentors if you have any doubts reach out and you can start building a very small draft proposal that probably includes just the project idea what you think you can implement or do you understand from the project and explain that and pitch it to the mentors and they can probably guide you if you are lacking somewhere or if you have any doubts to the proposal. I was interested in your comment that the machine learning experience was not a deployment kind of thing. Could you go back to that just a little bit so tell us a little bit more about what it was like in doing that exploration. There was some learning that was happening during the community bonding phase some things that you had to explore further. So, like as mentors and as like the student who was selected logi was a student who selected for the machine learning plugin. So, like, so like in the project idea that we had given we had explained that you know, in any kind of a machine learning based project that we do usually as compared to standard software development project, you have, you know, your bills, your CICD workflows that are very well optimized and like writing test cases for your project. It's very pretty much optimized for if you're like creating like a Java project or let's say a Moons stack based project. But when it comes to like creating projects in the machine learning specifically if you're using notebooks like the Apache Zeppelin notebook or the Python notebook, you cannot have that kind of a CICD workflow for, you know, for a machine learning based notebook if you have, right. But if you want to do that and if you want to let's say integrate that with the Jenkins so that each of those steps, because machine learning has different pipelines, right. So it starts from cleaning up the data then doing pre processing, then doing the model training model deployment and then finding other results. So if you want all of those to get, you know, derived as, let's say, as the Jenkins build steps and how do you actually want to display the results. So that is something that we were doing a lot of, you know, research on as even as mentors that, okay, which all different type of notebooks should we go ahead like should we only look at the Python notebooks can be also integrated Zeppelin as well, which is from Apache and then with all programming languages can we look at and and we actually, you know, looked at two to three different example machine learning based pipelines that we actually tried to integrate within the plugin. So that was like, that is where when you're building a new plugin or it can be like for any other project, right. So that you have to do a lot of research and you're more sort of open to, you know, better ideas or try to implement even new things and that is what we also, you know, ask the students that if what whatever you feel like you can probably include in this plugin and what you like you know understand from this plugin you can include that in your proposal. So those are the things that were taken care of and were given a lot of importance. Thank you. Thanks. Oh, like I see I see a question. Is it okay if we disrupt for one of the questions that's in the, in the chat so are in the q amp a is Jenkins looking for cloud platform integrations is the question and now my thought immediately came to not only are we looking for cloud platform integrations were actively actively desiring further cloud platform integrations. We've even got a very specific need right now that the Azure platform plugins need some adoption right so and I suspect we've got it for others as well so if you're interested in Azure or AWS or Google cloud. There are plugins for each of those. And, and you can see ways to help the project and yes, AWS is an excellent example. The Azure plugins a number of them I believe are if not already marked for adoption coming up for adoption shortly. So yes, there are lots of things that we could we where we would be delighted to have people helping with with additional adoption. Yeah. So, for that, yeah, there is a lot of plugins. And yeah, there is natural life cycle plugins because maintainers join the community work on the plugins, as you probably know, in the most of the companies including Google, Microsoft, etc. The average employment time of a single engineer is around two years. And actually it means that the average time of maintainer in the community is also close to this date. Yeah, there is some calculation for sure. And it means that many plugins eventually get available for become available for adoption. We always invite individual and company contributors to step up and help these maintainers and especially if you use these plugins for your own cases and if you use plugins in your environments, if you see that plugin is up for adoption, if you want to fix something, if you want to help the community with maintenance, please contact us and we will be happy to help, because it basically helps everyone. There are many plugins which are used by 10,000 of users and we should continuously need some time to be invested, not that much time, but still having connected maintainers is very helpful for the plugin ecosystem. And Oleg's point about, well, I had the flawed perception early on in my journey into Jenkins that I somehow needed to be some sort of superhero to maintain a plugin that, oh, I was probably not good enough or my skills were inadequate or I would make some catastrophic mistake and I've since learned that it's much, much more valuable to be a contributor and help in some way with the plugin than to sit back and feel like I was inadequate. So, absolutely, there are many, many places where you can contribute, where you can add some little bit and discover your own interest and grow and develop your interests and help Jenkins with its maintenance of plugins and core code. Yeah, and also it's a good opportunity to try out new technologies, because even if you see maintenance, actually the most many plugins use quite new technologies there, so there are some plugins already using Quarkus, for example, as a framework. There is a lot of adoption for different common libraries, there is a lot of modern plugins, including, for example, CodeCover, API, WarningSingee, which use quite new Java technologies, they're based on React, a lot of standard libraries, so if you want to learn new technologies, Jenkins could be a good opportunity and even if you talk about this plugin website, actually it's also a project hosted by Jenkins, this project is also based on JavaScript, React and the Gatsby as a framework. So, if you're interested you can also contribute to that and actually it got improved a lot over the past two years and there is still a lot of opportunities here and there, for example, improving layouts, doing more integrations, for example, using visualizing, it has issues of visualizing releases from changing sendee, which is not supported at the moment, so also it's a good opportunity to contribute and you don't have to be expert on this technology at all. Yeah, I love your highlighting of the plugin site and it is, this is maintained, one person does most of the maintenance on it and that one person does JavaScript, right, and that is, it's an impressive result that Gavin has been able to do with his work on the plugin site. If you're interested in JavaScript, that plugin site is an amazing place to contribute. He recently integrated an entirely different search engine, significant improvements and yet, Gavin I'm sure still feels like he would love to have additional help and more people to assist if you'd like to have some experience working with a production scale, production-sized, data-driven site. This is a really beautiful piece of work. Okay, so there is also a question about Jenkins X, so what is Jenkins X and how, whether it's maintained by the same team. So for that, the question runs is that Jenkins X has started as a part of Jenkins, so it was a sub-project, basically listed here, but when, over years it evolved into a separate project, so currently it's a separate project also under the continuous lift foundation.  Jenkins is a graduated project. Jenkins X is incubating project, but in the community, we still have a lot of communications with Jenkins X. There are multiple reasons for that. Firstly, Jenkins X uses Jenkins as one of the build elements. Currently, there is Jenkins X3 preparing to release with more support for Jenkins, and there is also a lot of opportunities for communities to communicate because it's a really friendly relationship for us. We share some contributor summits. We also meet at various continuous lift foundation meetings, so basically Jenkins X, just to answer the question specifically, no, it's not maintained by the same team. It's not even maintained by the same organization, but they still quite good relations between the projects and there is a lot of opportunities for sharing experiences and reusing components. Now we've got, we have one more question, a question on from asking, hey, we don't have any machine learning plugin projects this year for Google Summer of Code. Could, would that be acceptable if someone were to propose, send it submit a project proposal for a machine learning exercise this year? Oleg or Shive, do you want to comment to that? I definitely can. So what we post here are the project ideas, how we collect them, basically we invite potential mentors to submit their proposals, and that's how we collect the list of project ideas. So for these ideas we have a list of potential mentors who are interested to mentor a project in some conditions, but it doesn't mean that we wouldn't be able to accept other projects, though in this case there is a recommendation to reach out to the community earlier, because JSOC project may happen only if there are mentors for the project, and as Orca means we need some time to find potential mentors to establish a contact between the mentor and the students so that we can actually make the project happen. So if you have original project idea, anything related to Jenkins is totally welcome. We definitely put some preference and we help original project ideas. At the same time, yes, we need some time so that we can actually help with this project to happen. And JSOC has a pretty limited time frame, so if you have an idea it's basically better to reach out to us today or tomorrow so that we could help. At the same time, we are not limited by just Google Summer of Code, we have opportunity to run other outreach programs, and basically as a contributor you can join us at any moment. You can just send a message to the developer and please make your proposal and there will be people who would be interested to mentor you. Yeah, there are other questions, like students, but mentoring is possible. Yeah, because like open sources, you know, throughout the year, it's everyday. Like if you're still interested, like even though let's say if you have some kind of a project idea that is related to machine learning or any other topic and if it's not selected for JSOC you can still, you know, actually take up that project and the community members will always be there to, you know, if they like the idea, if there's some kind of refinements and if they want to take it up, like open sources always active. So we need to wait for a particular program to actually get started with that. I have to reinforce Oleg's observation that we're interested in any project ideas. The crucial thing is we can't successfully do one without mentors. And so early discussion is very healthy and that early discussion will then help us decide can we provide mentors for that idea. And then we provide mentors for that concept. So absolutely, if you're interested in machine learning, begin the discussions on it. At this point, the things that you see in our draft project ideas are things that we as as known mentors were interested in and happy to discuss them further. That's right. I think I could potentially be a mentor this year and maybe she would be interested to be a mentor. I'm sure Oleg has a project in TensorFlow. Depends. So we can find contributors for sure. Because what I feel is that with Jenkins, like the interaction with machine learning is still pretty much limited. I think it was the first time that there was a step taken towards that. So yeah, I mean if someone has an idea, feel free to reach out. If you have some ideas to make the current ML plugin better, or like if you have some other idea. There is actually a question about how to propose a new project. And we directly shade on a mailing list on guitar. Yes, and it's actually the recommended approach. So in the Jenkins project, we highly recommend students to discuss their project proposals publicly, because it helps to get more feedback. It helps us to find mentors and to have a live discussion. So for example, there are two channels. If you go to any project, let's go to let's switch to 2029. So here, for example, if you talk about cloud events, plugin for Jenkins, here you can see that there are references. So for example, this project idea is under the April of cloud native special interest group in Jenkins. There are channels which are specifically related to this special interest group. I wouldn't say that it's very active now, but it needs every week. And for example, here you can find a chat, you can just drop your proposal here. There is also many keys, which also works. And for example, here's a proposal submitted by one of the students on the review at the moment. Yeah, you can do the same for other project ideas. If you cannot find a specific chat, then there are also foundation channels. So, for example, here we have special Gitter chat for Jenkins participants and also special meeting please. So these could be two channels you could use for a generic proposal and then again, if you ask, they will be able to point you to particular mentors or channels when it's relevant. So I think that there's another question by innocent. It's, is it possible that all proposed projects for this year has already been taken and if that is the case, how would interested students who have not gotten project idea get into these. Okay, so Google Summer of Coat is a competitive program. What it means that usually we get much more applications than we can accept. So these are the ideas we get multiple proposals. Firstly, it doesn't block you from applying. We do not make any assignments until the application phase is over. Yeah, of course, there might be students who are working on this project idea for several months for the application, etc. It might be quite a challenge to provide to make a proposal of a similar quality if you are just starting, but it basically depends on the project idea and on the area. So if you're interested in some area, you can make proposal. Even if there is a student and if you don't want to compete, you can propose project idea which is again along the lines of what we published, but which doesn't collide with other proposals. It's also an option sometimes. So for example, hey, we talk about it credentials binding and probably you would work on the first credentials binding and there is no integration. For example, here's a project cloud events. Instead of cloud events, you could propose integration with a field. It's another event framework which is also open source. Such proposals could also happen. Again, better to make it earlier so that we can find mentors. But yeah, there is no such situation that all project slots are taken because right now we don't even know what other project, what is the number of project slots we are going to apply to. It really depends on the applications. Okay. So, even there is no questions, just a few closing quotes and then we can switch to the offline mode. Or should we didn't talk about those. Those I think, oh, like it's perfectly fine if we skip over those because I think we've got lots of good interest and we could always discuss them during the open open question session we don't need to take the time on those. So yeah, then if you're interested about specific project ideas or if you have more questions, please stay online. We will stop the recording but after that we will just grant everyone voice permissions so that you can ask questions directly without using 20. Yeah, you can also have some slides with entries here but you can find more information on the project idea pages and all our project ideas pages have links to new camera friendly issues. They also have quick start guidance. So if you want to get started this information should help you because we expect every published project to have this information. And you're wondering if you ask a question. So we have accepted ideas and we have draft project ideas. So what draft means that this project idea doesn't fully meet the requirements, for example, it might be missing a section, or whatever, but it's a project idea. So if you still can create proposal for this project ideas, it might just require some research discussion is matters, but you're totally welcome to make proposals for these ideas as well. And basically for any other genics related idea, which is not even used here. Okay, that's it from me, and thanks a lot for participating in this meetup. Thank you for the recording. If you have any questions after the meetup is use our Gitter channels. So again, if you just want to contribute to Jenkins, not really to Google Summer of Code, then there is a newcomer contributors channel. And there is JSOC special interest group for specifically for Google Summer of Code. So these are two main interest points which you can use. And then I'll stop the recording and again, thanks everyone.


This study aimed to develop an Android-based interactive multimedia application to enhance critical thinking skills in junior high school students. The results showed that the application had a medium effect on students' critical thinking skills with an overall score of 88.25% on the expert judgment rubric. Additionally, students reported an average score of 84.56% on the questionnaire indicating that they found the application useful for enhancing their critical thinking skills. This article was authored by Salma Almira Hamdani, E.K.A. Kaya Prima, Rika Rafika Agustin, and others.


10 English Idioms from Sports from EspressoEnglish.net We love sports in the US and we have many idiomatic expressions in English that come from sports. You'll learn 10 of these expressions today. 1. Drop the ball Drop the ball means to make a mistake, especially when you fail to do one of your responsibilities. This expression comes from baseball, where dropping the ball is an error. For example, I was counting on Pete to finish his part of the project, but he completely dropped the ball. This means he didn't finish his part of the project. He failed to complete his responsibility. 2. Run interference Run interference means to help someone by resolving problems for them or in their place. This expression comes from American football, where other players on the same team run interference by helping to protect the player with the ball. Here's an example. It's hard to rent an apartment in Stockholm unless you have a real estate agent run interference for you. In other words, it's hard to do this alone, so you need a real estate agent to help solve the problems for you. The agent will run interference for you. 3. Take a shot at or give it your best shot The expression take a shot means to try something, and give it your best shot means to try your best. In basketball, as well as soccer, hockey, and several other sports, a shot is an attempt to put the ball into the basket or goal. So, take a shot more generally means to try, to make an attempt. For example, I can't solve this math problem. Do you want to take a shot at it? I'm not sure if I passed the test, but at least I gave it my best shot. 4. Show someone the ropes This idiom means to teach someone how to do tasks or processes. This expression comes from sailing, where you need to know how to manage the ropes in order to control the boat. For example, it's my first week on the job, so the manager is showing me the ropes. 5. Jump the gun The idiom jump the gun means to do something too early or too soon before the correct time. This idiomatic expression comes from the fact that a gun is used to give the starting signal for races, so a person who starts before the signal is given is said to jump the gun. Here's an example. They jumped the gun and started selling products before receiving their business license. It means they started selling too early, before the right time. 6. Hit your stride To hit your stride means to achieve a good, continuous level of performance. Stride is a word that refers to the steps taken while walking or running, and when a horse hits its stride in the race, it means the horse maintains a good speed in a comfortable way. Here's an example. Our company's sales were weak in the beginning, but we really hit our stride after we launched our second product. 7. A can of worms This idiom comes from fishing, where worms are used as bait to help catch the fish. The idiom a can of worms means a difficult, complex, or unpredictable problem, or multiple problems. For example, the political situation in that country is a real can of worms. Saying something as a can of worms means it's complex and very difficult to resolve. 8. One-two punch The idiom one-two punch means a combination of two things that are especially powerful or effective. This expression comes from boxing, where hitting the opponent twice with one punch and then another punch is very powerful. One-two punch can be used for both positive and negative situations. For example, the one-two punch of excellent food and delicious drinks makes this the best restaurant in town. That's a positive example of a one-two punch. Here's a negative one. Losing his job and his house in the same month was the one-two punch that sent him into depression, so those are two powerful negative things. 9.  In tennis, the area where the game is played is called a court, and if the ball is in your side of the court, it means you need to hit it to continue the game. For example, I've offered her $15,000 for her car, the balls in her court now. That means it's her responsibility to make the decision about whether or not she will sell the car. 10. Par for the course Par for the course means something normal and expected. The area where golf is played is called a course, and the word par refers to the average number of tries necessary to put the ball in the hole. So that's why par for the course means something average, normal, and expected in a certain situation. For example, of course the classes for your master's degree are difficult. That's par for the course. It is expected that doing a master's degree would involve taking difficult classes. You can discover hundreds of new idiomatic expressions in my English idioms course. I'll teach you the common idioms that are used in everyday spoken English. Just click on the link in the video for more information and to take a free sample lesson.