Submind YouTube summaries
Thumbnail for 2026-07-02 GSoC 2026 Midterm Presentations

2026-07-02 GSoC 2026 Midterm Presentations

Watch on YouTube

Video summary

The Jenkins Google Summer of Code 2026 midterm presentations marked the program's tenth year, featuring a record five project slots led by hosts Shinwas and Chris Shivai. Five contributors showcased diverse initiatives aimed at enhancing Jenkins' capabilities through artificial intelligence, security improvements, and infrastructure modernization. Daniel Muhammad introduced an AI agent plugin designed to assist users in troubleshooting builds and configuring the system via a chatbot sidebar; this tool leverages a React frontend, PostgreSQL for history tracking, and vector databases like Qdrant for retrieving documentation from various sources using RAG techniques. Complementing this, Malika Janjiri presented a project focused on strengthening and evaluating Jenkins' chatbot through an "LLM as a Judge" continuous integration pipeline that automatically assesses pull request quality using DeepEval metrics and is currently exploring GraphRAG for relationship-based queries while developing agents to diagnose pipeline failures from sanitized logs. Further advancing security and usability, Muhammad Fahim detailed efforts to enable Outlook SMTP with OAuth2 for the Email Extender plugin, a move intended to support modern identity providers like Google Workspace and Microsoft Entra ID by separating token retrieval from SMTP authentication. While facing challenges related to API limitations in fetching OAuth scopes, the project plans to focus on documentation, adding a "send test email" feature, and resolving credential API constraints. On the infrastructure side, Pratik Man unveiled the Plugin Modernizer Stats Visualization project, which utilizes GitHub Actions to aggregate metadata into a JSON report for a static dashboard that visualizes success rates, monthly trends, and progress per plugin or recipe, thereby simplifying navigation of the large metadata repository. Additionally, Vatsal discussed retooling the stories.jenkins.io website from Gatsby to a React-based architecture using Vite to migrate away from unmaintained dependencies and fix inconsistencies across hundreds of YAML story files. The presentation on the website modernization highlighted specific features such as dynamic routing, Leaflet map integration for viewing global contributions by country or industry, and the replacement of Decap CMS with GitHub Actions for submission workflows. The team acknowledged challenges in replacing the GraphQL data layer with direct YAML parsing due to sensitivity to file errors and outlined future work including configuring custom GitHub Actions for submission workflows, improving UI/UX responsiveness, ensuring stability, and updating documentation. During the Q&A session, it was confirmed that a prototype exists for the Vite migration, with a contingency plan to migrate to a newer framework should Vite become unmaintained in the future. The session concluded with heartfelt acknowledgments to mentors Kristen Jamud and Rajiv for their invaluable guidance throughout these projects. Collectively, these presentations underscored Jenkins' commitment to innovation, blending advanced AI technologies with practical tooling improvements and robust infrastructure updates. The diverse range of topics, from integrating sophisticated LLM agents into the core user experience to modernizing web architectures and enhancing plugin security, reflects a vibrant community actively shaping the future of the open-source platform. As the program moves forward, these initiatives promise to deliver significant enhancements that will make Jenkins more accessible, secure, and intelligent for developers worldwide.
Read the full video transcript
Okay. All right. Good morning, good afternoon, and good evening everyone. Thank you for joining the Jenkins online meetup. Today's session is Jenkins in Google Summer of Code Midterm project status and demos. My name is Shinwas and I'm one of the organ organization admin for Jenkins this year along with Chris Shivai. I'll be walking you through the full introduction today and then I'll hand the things over to our GSO contributors who are really the main event and our mentors are also on this call and will help out with the questions as we go on and yeah quick word on the Jenkins online meetup itself. It's a communitydriven virtual platform. The goal is to inform, transfer knowledge and share all things Jenkins case study, success stories, whatever useful to the community and we are always looking for speakers. So if you have got a story worth telling, reach out through the link visible on this slide and a few housekeeping notes before we dive in. This session is being recorded and we'll share the link afterwards. If you have any questions, drop them in the Zoom chat as we go on and we'll try to answer them live at the end of each project. And if we run out of the time there, we'll hold a broad Q&A at the end if you have ample amount of time. You can also find us on the Jenkins Gox Matrix channel or on the community discourse after the event as well. And of course, yeah, our code of contact conduct applies throughout. Treat each other with respect and kindness. And so here's what we have got for the today. A short introduction to GOC and Jenkins involvement in it. Then project demos from our GOC contributors and 12 minutes each including questions and we'll close the close with our open Q&A as well. And this is for anyone new here. Google Summer of Code is one of Google's flagship program. It matches opensource organizations and their project ideas with mentors and contributors. Organizations propose project ideas and community members volunteer as mentors as you know and then contributors apply with their own plans for tackling our project over all the summer and after evaluation one contributor is selected per project and Google confirm the final slot count for each organization and this year makes Jenkins 10th year participating in Google summer of code which says a lot about how consistently strong this program has been for us. We had five project slots this year same as the last year. That's a record. I mean it tells you a GOC sees Jenkins as a genuinely good organization to work with because our mentors put in the effort and our contributors deliver real last work. A lot of power g projects are still actively used it today as well and you can find the full list of this year's ideas and link to previous year project on the g page at jenkis.io as well and finally let me introduce this year five contributors Daniel Muhammad Pratik Malikun and Versalwama. You'll be hearing directly from each of them shortly, so I won't steal their tender. Just know that each of them has been heads down all summer on some genuinely useful additions to these Jenkins. And of course, none of these happens without our mentors. So a quick shout out to our organization admins Chris Shay and myself as well and our mentors who's been putting in the weekly things the code reviews the late night slack answers are Alex Valentine Rajiv Banto Chammud Chiag Gawani Shrther and finally Ranak thank you all this program simply doesn't run without you And with that, let's get into the project presentation from our GSO contributors. If you want to follow along or dig into the details afterwards, all these project pages are linked in the U provided the link visible in the slide. And our first project today is EI chart to guide user workflow presented by Daniel. And Daniel over to you. And whenever you want to change the slide, let me know. I'll change the slide. >> Okay. >> And Daniel, over to you. >> Hi everyone. I'm Daniel and um you can go next in new slide. And um I'm a Italian computer science student at the University of Camarino. I'm a passionate developer and I from this year I started contributing to Jenkins and I'm very happy to be part of this great family. Um you can go next. My project is about creating a plugin and as every plug-in in in Jenkins each uh each plug-in solves a problem and for for this case this my my plug-in has aim to help the users to troubleshoot builds and faulty pipelines and also help beginners in discovering and configuring jackins. So uh I decided to create a a plug-in which integrates an a agent and uh specifically a chatbot which uh so the user can interact with this with this chatbot and the user will be assisted in maybe solving problems. So maybe troubleshoot a failed bid or also maybe there's a problem in the pipeline and also if the user is a starter the chatbot will be uh very helpful also for for them and you can go next. We can see here the architecture of the plug-in. Actually, we have a front end which is actually a sidebar, a set panel. So, where the user can interact with the chatbot and it is built in a React plus framework and our our front end interacts with a Jag controller which is which acts as a proxy between the front end and our back end where our core logic lives. And in the back end there will be host the agent and the back end will also be connect to the to a posgql which is a database where we'll be stored the chat history and there will be also a quadrant database which is a vector database and it's very helpful because uh it give us a native aid retriever which will be helpful for retrieving our actual vectors. So the data that will that the chatbot will use for to in order to answer to the user and also there will be the chance to use a specific local model with so open source models or open weight or maybe if the user prefer will be also possible to use third party LMS you can go next. So starting with the Jenkins data which will be stored in the kand database we will have four different different types of source of data. The first one is the Jenkins documentation. The after the plugins documentation which is actually the documentation of each specific plug-in existing in Jenkins. Al also we will have the discourse topics which are all the most useful uh topics actually stored in in Jenkins discourse and also we'll uh get the most famous uh Jenkins uh Reddit threads and uh after collecting this data the data will uh go in a pip pipeline which will be preprocessed. So we will uh keep only the most useful data. For example, for this the discourse topics, we will get just the uh topics which have actually a concrete solution. So which are really useful for uh users and the data will be format and also chunked and at the end embedded and stored in the vector B. Um you can go next. So we say that our plug-in is actually actually as an agent which helps the user and there will be an agent loop. So where we will have our router LLM which uh read the question that user has made and we'll decide if there's enough information to answer it. If there are not, it will be able to use some specific tools to get together more information. For example, uh one of these specific tools will be the ad driver which will search in the qu could vector DB and we get the most related data to user question. We have also other information for example getting the contest the Jenkins context information which are the data for of the specific Jenkins instance that the user is running. For example, if the user is currently watching a field build, uh when the user make a question, he can attach the context and the chatbot will read the context and also use that in order to give a useful uh response. You can go next. The chat is opened by clicking a button at the bottom right and uh you can go next. So it show the actual chat UI and there will be a a common chatbot UI where the user will be able to make specific question and in in at the bottom right we have the attach button context. Um so the user uh by clicking that will attach the context and the it will be stored in the back end after being vectorized. Obviously you can go next. Yeah, this is the actual button. Uh you can go next. Regarding the testing and clean and clean code, uh I'm using a specific link and formatters for for example black for formatting the Python uh back end code. And I'm implementing unit and integration test for both the uh plug-in itself and the back end. in Python and for testing the land graph and agentic logic I'm using I will use ragas framework which will evaluate the faithfulness context recall and answer relevance of each uh specific um loop of the agent. So after uh specific output of uh uh of the agent and we it will obviously use a a golden data set which will be used to test this specific agent. Um you can go next. Uh for now I'm I've already implemented the context. I've already implemented the data retrieval logic and also the front end UI as as you have seen and I'm I will work in the next weeks to the context data retrieval and the the agent core logic the specific tools which will be given to the agent and at the end the testing so using the regas evaluation framework uh you can go next okay so if uh anyone has a question I'm happy to hear. And before I want to thank my mentors which are Chris Stern, Shiva Lamba and Shira Gupta and they have been really helpful this weeks these past weeks and I want to thanks them for being so. So if you have any question I'm happy to hear. >> That's awesome. Daniel, you are on the time as well. So, so everyone we have 1 minute for if you have any questions feel free to add it in the chat as well and feel free to unmute yourself and ask the questions if you have any. Okay, so we can move to the next one. So the next up on the line is continue powered chatbot for quick access to jenin resources. So Malika Jun over to you. Yeah thank you. So hello everyone I am Malika Janjiri and my project is continue AI powered chatbot for quick access to Jenkins resources and my mentors are Bhuturi Burvanto and Gioani. So this project continues the previous work on the Jenkins chatbot. The main goal is to make the chatbot stronger, easier to maintain and evaluate. In this presentation, I'll cover what I have delivered so far, what I'm currently working on and what I'll be doing next. So before proceeding further, sorry, previous slide. Here's a little about me. I'm Malik Janji. I'm a B computer science student at Danasal College Engineering Bangalore. I am interested in DevOps, a IML and opensource software. Next slide please. Yeah. So coming to the delivered work, the main deliverable so far is LLM as a judge CI pipeline. The problem is that chatbot quality cannot be judged only by reading code. A pull request may look correct during review, but the chatbot's actual answer can still become worse. It may miss useful Jenkins context, give a weaker answer, or hallucinate unsupported information. The solution is to evaluate chatbot changes using the fixed golden data set generated output and deep judge metrics inside CI. So instead of only depending on manual testing, the pipelines gives maintainers a repeatable way to check chatbot quality during pull request review. The outcome is a PR level result. This gives maintainers a quality signal that helps them understand whether a change is safe, useful or needs more review. Now coming to how the pipeline works. The flow starts with the retrieval artifact cache check. So if the cache is already present, the pipeline skips the build step and directly continues to response generation. If the cache is not present, it builds the retrieval artifacts first. After that, the chatbot generates responses using the golden data set. Then deep acts as the judge and evaluates those generated responses using this elected metrics. Finally, the pipeline produces PR result. Next slide, please. Yeah. So, let's take a look at how the golden data set used for the evaluation pipeline looks like. As you can see, we have four main fields. Input out expected output, retrieval context, and metadata. So, the input is a Jenkins related user question. As in this case, how do I configure the Git plug-in with credentials? This is the question passed to the LLM during response generation. The expected output field is the reference answer used for judging. This field represents what a good answer should contain. The retrieval context field. The retrieval context field contains the supporting chunks used for evaluation. These chunks provide the evidence needed to support the answer. Finally, additional metadata stores tracking information like question ID and source documentations. This helps identify and debug specific evaluation items later. Next slide please. Yeah. So now coming to the evaluation metrics. The three main metrics are faithfulness, answer relevancy and contextual recall. So faithfulness checks whether the generated answer is supported by the context. It is important because even if an answer sounds correct, it should not make claims that are not grounded in Jenkins context. This metric helps catch hallucination and unsupported claims. Answer relevancy checks whether the output actually answers the user's question. An answer may be technically correct, but if it does not answer what the user asked, it is still not useful. In other words, it keeps the chatbot focused on answering what was actually asked. Contextual recall. It checks whether the retrieved context contains the information needed to produce the expected or answer. If contextual recall is low, it usually means that the retriever did not bring enough useful evidence. This is where retrieval side of the chatbot gets evaluated. Together, these metrics help identify where the failure is. Sometimes retrieval context is weak, other times the context is good but the model still gives weak or unsupported answer. Now coming to the metrics on the right side, the current benchmark threshold is 0.85. This means 0.85 is the minimum benchmark we expect the metrics to hit and it is not a forced improvement target for every run. The current scores are above this benchmark with contextual recall around 0.92 and faithfulness and answer relevancy around.88. Overall the delivered work gives a structured and measurable way to uh review chatboard quality. Next slide please. So now coming to what I'm currently working on at this stage I'm working on graph rack for hybrid retrieval. The current retrieval system works well for normal documentation question when where the answers can be found from relevant text chunks. But some questions are uh relationship based. For example, a user may ask uh what plug-in depends on this plug-in. So at that time uh for those question normal vector retrieval may not be enough because the answer depends on how the entities are connected. That is where graph helps. The important point is that graph is not replacing the existing retrieval system. It is just being added as an additional retrieval path. Normal documentation questions can continue using the existing retrieval flow and relationship heavy question can use a graph based evidence along with normal retrieval context. The diagram shows the architecture from left to right. On the on the left, the flow starts with input files. These include plug-in names and plug-in documentation chunks. From these inputs, the graph layer extracts relationship. A simple way to understand this relationship is entity relationship entity. For example, plug-in A depends on plug-in B. These extracted relationship become triples and the triples are used to build the plug-in graph. The next part shows that the generated graph files. These include plug-in graph, extracted triples, rejected triples. We need to know what relationships were accepted, what was rejected, and whether the graph is reliable enough to use during retrieval. Then the integration section connects the graph into the existing chatbot flow. When the graph context is useful, it can be appended to the normal retrieval context. This way, the chatbot can answer using both normal text evidence and graph-based relationship evidence. Finally, testing and evaluation section checks whether graph rag improves relationship based question without hurting normal documentation style question. Next slide, please. Now coming to our upcoming work, I'll be completing the implementation of two features. Graphra as I discussed in the earlier slide and the second feature the log analysis diagnosis agent. I have divided graph into phases with each phase incrementally building toward completion and then the first phase is the graph build phase. The this gives the pro sorry this gives the project the base layer needed for graph based retrieval. The second phase is graph retrieval. This involves detecting important entities in user query, finding related graph connection and ranking these result. The third phase is integration and evaluation. The graph retrieval will be connected into the existing chatbot flow with fallback behavior. After completing graph flag rack, I will be moving to feature number three which is diagnosis agent. This feature focuses on Jenkins pipeline failure analysis. The diagnosis agent will help identify the key failure section and explain what likely went wrong. As we all know, Jenkins locks can become very large and users may not immediately know which part actually caused the failure. The diagnosis agent works as follows. It finds the error section, strips it and passes it to the sanitizer. The log sanitizer scans the logs for environment values or secrets and masks them before sending them as a prompt to the LLM. The second part is making the feature accessible from the Jenkins UI through a plan jelly button. Upon pipeline failures, users can click this button and the logs are stripped, masked, and sent as a prompt to LLM. This makes failure analysis safer and easier for a Jenkins user to access. Next slide, please. To summarize, the main deliver work is LLMs as JCI pipeline. I'm currently working on Graphrack and will be implementing diagnosis agent. I would also like to thank my mentors for their guidance, support, and feedback throughout this project. That concludes my presentation. I'm happy to take questions. >> Yeah. Yeah. That's some Malik Arjun. So, we have a one minute for the Q&A for Malik Arjun. So, guys, if you have any questions, please feel free to ask. Okay. If there are any questions, you can feel free to add it in the chat. We can pick up those questions later as well. And being said that, next we'll be going through Jenkins email notifications using Outlook SMTP with OAT and Muhammad Fahim. Over to you. >> Yep. Thank you. So, hey everyone. I'm Mohammed Fahim and I'll be walking you through my G-Soft 2026 project which is Jenkins email notifications using Outlook SMTP with OT and my mentors for this project are Alex and Kristen. So next slide please. So here's how I structure this. I'll talk a little bit about me, the motivation behind the project, our main project goals, uh some background on how Inex works, our implementation, a demo, our testing strategy and then the challenges in future work. So next slide please. So a little bit about me. I'm a computer science student at VIT Chennai based in India and this is my first time contributing to open source at this game. So I really enjoyed getting to work with the Jenkins community and my contact info is up here if anybody would like to follow up after this. So next slide please. So uh about the project. So what is the actual problem that we're solving? So, email exe currently only supports authenticating to SMTP servers using plain username and password. And that's a problem because both Google and Microsoft are actively phasing out basic authentication in favor of oath. So, while personal accounts may still support basic o for Google Workspace or other enterprise environments, there may not be any other way. So, next slide please. So for our project goals, we set four main goals for our first coding pace, which is going to be to get a working oath uh SMTP authentication flow in place. Uh make it easy to plug in multiple different oath providers. So not just for outlook. Uh keep solid test coverage on anything new that we add and make sure that the configuration experience for the end users uh stays simple. So next slide please. So uh before our implementation, here's a quick rundown of how the email exe plugin actually works. So it is a Jenkins plugin that is used to send customizable email notifications for your jobs. So it gives users a lot more fine grain control over their email logic. For example, you can configure different triggers for when your email should be sent such as if a build gets fixed, aborted, uh etc. It also supports uh custom jelly and groovy templates that can access the gem uh Jenkins API so that we can include build information directly in our emails. And uh the key point is that email exe doesn't manage credentials on its own. It does that with the help of the Jenkins credential plug-in which is a pretty standard way Jenkins handles secrets such as passwords and tokens. And this is great because credentials are stored centrally using the Jenkins credential store and it's what we built on top of using the oath credential interface. So the diagram below shows the existing flow. Whenever a build finishes, email extriggers have fired and if so, it resolves the recipients for that trigger. It builds the email and then it creates a mail session object which contains all the SMTP properties such as timeout as well as the authenticator which decides how authentication should take place. After which we execute the present script, connect to the SMTP server, send the mail and run our postcript. So next slide. Moving on to our implementation. The core idea was to separate the two responsibilities which is retrieving an oath token and using that token to authenticate over SMTP. So token retrieval was delegated to the credential plugins which implement the oath credential API. So email ex's only job is to consume whatever the provider would return. So from the users perspective in the bottom left they would configure an oath credential for their Google workspace or Entra account in the Jenkins credential store and then they would selected for email exe in the system config page and on the plug-in side whenever an email would need to be sent it would Java mail would create uh email exe would create a Java mail session and register an authenticator call back and whenever authentication is required Java mail would invoke that call back where we have our logic for authentication and how that works is we inspect the runtime type of the configured credential and branch from there. So if it's a standard username password credential, we simply convert the secret store back to a string. And if it's a standard username or two credential, we call the underlying implementation of get access token in order to retrieve it. So once we have a token, our authenticator hands it back to Java mail which already has XO2 support. So we don't need to worry about how the tokens encoded or performing the handshake. We just have to set the right session properties which is XO2 in our case. So all the provider specific oath logic lives outside MXT inside the individual credential plugins for the token such as managing caching handling token refresh all of that. So they're all self-contained as their own independent plugins. So if another plug-in wanted to use oath they can do so. So at the moment we still have to explicitly handle each provider such as Google and Microsoft on the email exe due to limitations in the current uh current O credentials API which I'll come back to when I discuss the challenges. So next slide. So uh here's some screenshots to walk through the flow. So we are in the system config page for Jenkins and under email exe we're going to be setting up a mail account user. So how we would do this is we would click on the add credentials button from where we can see the different credentials such as Google service account and Microsoft enter ID credentials. So these are the credential types from the provider. So we can select for example Google service account and in that we can fill in our required details and create it and once we're done with that we will select it under the config page and moving to the next slide. So for a particular job we would configure a new post build action for it and here we wouldn't need to do any extra configuration for oath. So the user can just set up their email logic their triggers and scripts and when the build gets triggered uh o the email exe plugin will know which o mechanism to use from the credential selected itself and send a successful email. So uh next slide please. So uh for testing, email exe has been around for quite some time. So it has a good testing foundation using JUnit 5, the test harness and mojito. Uh so Mojito was really useful for us because some of the dependencies that we're interacting with are Jenkins extension points. So rather than creating our own test implementations or trying to config them using the Jenkins test, we could just mock them directly and control exactly how they responded, which made it easy to verify things such as our retry logic. We also added green mail as a dependency since email extra mail before that which couldn't catch SMTP level failures since it intercepted any SMTP communication. So we were able to use this to verify that things such as authentication failures and incorrect credentials would actually surface the right errors in the bill log and not get silently swallowed. So uh next slide please. So thank you. So uh on to challenges and future work. So as I had mentioned, one of the main challenges we ran into was around how the oath credential plug-in exposes access tokens. So to retrieve a token, we have to pass in an oath to scope requirement object. Uh so this tells the credential which scopes the request and is also used for filtering credentials. The problem is that this class lives within the credential plug-in itself, which means that any plug-in that wants to fetch an oath token has to take a dependency to construct that requirement object. So there are some potential fixes for this. For example, we could define an interface in the API that could let the credential itself return the requirement object such as maybe a factory of some kind to create the requirement object from strings. However, this would require changes to the oath credentials plug-in which isn't maintained by my mentors. So getting changes reviewed is difficult, but it is definitely something that we'll be addressing in the future. So uh looking ahead, our main focus is going to be on getting our changes polished as well as providing documentation. So we'll be writing thorough documentation for how to set up credentials, how to configure email exe to use them, as well as a troubleshooting guide for common setup issues. We'd also like to add a send test email feature so that users will be able to validate their entire configuration with a single click instead of having to set up a test job or a build and debugging using that. So next slide, please. So that's going to be everything from my side. Uh before I close, I would like to thank my mentors, Alex and Chris Darn. They were always very quick to respond and were very nice to work with and gave me great guidance throughout the project. And yeah, I'll be happy to take any questions now. Thank you. >> Yeah, that's super awesome Muhammad and all the best for your future workflow. And we have two more minutes for the questions for Muhammad. If anyone have any questions feel free to ask for the Mahhamad we have a two more minutes for the questions. Okay, nevertheless if you have any questions feel free to add it in the chat. And moving to the next we have plug-in modernizer stats visualization by Pratik Man and Pratik Man over to you. >> Yeah, thank you. Next slide. >> Okay. Hi everyone. So myself Pratik Man, I am contributing to plug-in moderniz stats visualization project and my mentors are Valentine, Chris, Sridar and Ron. Next slide. So bit about myself. I am a final year BCK student in VIT program and currently internet rad. I am passionate about the opensource software and cloud native technologies. My journey started with the plug-in modernizer tool in October 2025 during the hectober phase and grateful to be the part of the community and if you want to explore more about my opensource contribution then you can check it out on my data next slide. So this is agenda. First I will go you through the plug-in modernizer tool. Then the existing scenario for the metadata storage. Then about my project, why we need it. Then the progress till now. Then short a short demo. Then about the future plans and Q value. Next slide. So about the plug-in modernizer tool. So plug-in modernizer tool is an a tool which applies a open open rewrite recipes to modernize the plugins. So there are over 2,000 plus plugins in the genkins and keeping and updating it manually is a very big task. So plug-in modernizer tool automate it. Next slide. Next slide. Okay. So the existing scenario. So there was a metadata storage repo which stores the metadata created during the when the plug-in modernized to tool applies a recipe on a plug-in which includes the PRs the migration successes or not the PR is merge or not. So it's important because it helps to track the data and the work done till now by the plug-in modernizer too. So next slide. So going through the repo was very hectic task because it has many uh directories and folders. So a new idea come up which is an plug-in model stats visualization which is basically a static visualization site which consume the metadata during its build time and presents the dashboard and per plug-in reports and per GCP reports. So workflow is basically the whole metadata repository is aggregated into a single report which is a JSON file through the GitHub actions and which is deployed through a GitHub pages and then this report is fetched during the build time and a static UI side is deployed on it on the top of it and the UI site includes the three parts. the dashboard which shows the overall stats of the plug-in modernizer. Second is the plug-in page which shows all the plug-in list and per plug-in details and same as the recipe page total recipes and per recipe progress. Next slide. So the progress till now. So I have created a GitHub actions which consolidated a raw metadata into a single report and a GitHub action deploys the report in via a GitHub pages and a dashboard containing all the stats and the navbar on the top of it and there is a separate GitHub actions to deploy the UI side which can be seen which can be seen on the plug-in model and the stat. So till now I have done the initial base and adding some test case for the dashboard page and the currently the plug-in list and per plug-in reports status is in progress and next plan would be the recipe page. Next slide. >> So for the demo >> should I share my screen? >> Yeah. Okay. I'll be stop sharing my screen and then you can start sharing yours. Let me stop sharing mine. Okay, I guess you can share it now. Okay. >> So, are you able to see the screen? >> Yes, we can. Oh, so this is an metadata plug-in modernizer repo which is the track of the overall work done till now by the plug-in modernizer tool. But when we have to display the explore this repo or explore any plug-in for how the metadata tool uh modernizer tool has work on it. So we need to manually check each plug-in and each recipe reports which are in the JSON format in this report which is a very difficult task. So the idea of the plug-in mod stats is to display all this data through an UI site. So we have a GitHub action which aggregate all the data from this metadata repository into a single JSON file. You can see it here. So it contains all the recipes, all the recipes which includes the plug-in modernizer tool and all the plugins on which the tool has applied the recipes and on this JSON uh report.json JSON file we have built a UI site so which shows the overall status and all the recipes applied then the migration pipeline according to which the monthwise distribution according the success and failure of the tool. So let's see this is the dashboard page and currently the plugins and recipe page are in the progress. Okay, I'll be sharing my screen now. Yes, now you can. Okay. And the future plan is the completing the plug-in page and starting with the recipe page and adding more test cases parallely to improve the and also the improving documentation ensuring stability and future mentability and writing a blog about my midterm journal. Next slide. So yeah, this was the overall status and I was thankful thankful to my mentors for guiding me and also special thank you to to the infra team for giving me the guidance about the report.json and the GitHub pages to deploy. So I am free for any question also. Thank you. >> Yeah, that's so good Pratik. So anyone have any questions for Pratik? Yeah, Mark, I can see your handwriting. >> Could you share the URL to your GitHub page? And were there any things where you found, oh, this is really surprising what we learned from it? So, I'd like to see the URL. And then were there things that oh, I didn't expect that? Pratik, you're muted. Okay. So, I have sent the link of the UI site in the chat. You can open the link I have shared in the chat. >> Yes. And I was able to open it just great. Thank you. >> Okay. So, so the main purpose was s the timeline graph. So, it was not previously implemented. I implemented that and by seeing the stats according to the month wise. So, how this month there are the these are the success rate and this is the failure rate. Then next month this is the success rate and this is failure rate. So overall result was as the month is growing as we are growing moving forward the failure rate is declining. So as we move forward the plug-in modernize the tool success rate is increasing. So that was the exciting to me about the progress of the tool >> now. So for me, I look at the graph on recipe performance setup Jenkins file seems to have a surprising failure rate. Any insights there or is that something you didn't investigate? And that didn't investigate is perfectly fine. >> Yeah, I didn't investigate it till now, but making the visibility of the plug-in moder tool is my main task. So you get a question about that the setup genin files have setup genin file recipe has the more failure. So that was the purpose of this >> right. So the fact that we can see it is a success. >> Yeah >> the the fact that that data is presented to us is really great. Thank you. >> Perhaps I can answer on uh that one. Um, by experience, the setup Jenkins file is applied on very outdated plugins that sometimes don't even compile. So that's yeah quite difficult to uh to automate. uh what would be useful is uh if we have the the information for example about the last commit. If we can uh see a correlation between the last commit the date and the and the recipe and if we have this information we would see that uh those recipe are apply on very outdated plugin that might cause the the recipe to uh to fail. Well, and and it's it's the the graph shows one crucial point. 600 attempted plugins is a dramatic attempt, right? So that's that's what one quarter over 25% of all plugins. Nicely done. Yeah, happy to see that the UI site is helping the genkins community to see the overall progress of the tool. Yeah, that's it. Thank you. >> Yeah, thank you Mark. Thank you Valentine for adding your insights on the success rate. And next moving forward for the last for the day we have what's retool jenkins.io IO success stories with WhatsApp bar and WhatsApp over to you. >> Um thank you. So I am Watsil. Can you please uh do the next slide please? >> Okay. So I am Watsil and I'll be working on R2 Jenkinsio success story website as a GC contributor and my mentors are Kristen, Rajie and Jammud. Uh can we have next slide please? So this is how uh the presentation will go. So uh I'll be telling about myself and I will also be telling what genkins IO success story project is about and we'll be also covering what we'll be doing in this project and what is my current progress and we'll be also following up with a demo. Then we'll discuss about the challenges that I have faced or I'll be facing in future. Then we'll be discussing about the future work and we'll be taking some questions next. Okay. So uh let me tell you a bit about myself. So my name is Vatsula and currently I'm a final year B tech student at ABS engineering college Gazawad which is based in India. I am a passionate software developer. I like uh doing graphic designing and I am also a software uh I mean open source contributor. So I started contributing to genkins back in August 2025 and it has been a really very good journey. I have met a lot of good people and u very intelligent brains in here. So uh you can also check out my profiles uh which is my GitHub and LinkedIn. Next slide please. So uh what is stories.jenkins.io. So it is an uh official website of sharing success stories of genkins. So it showcases how the uh genkins has made changes in organizations how it has helped organization to make the CI/CD uh really very reliable and automate the software development and delivery. So currently like there are most more than uh 190 user stories which are shared all around the world uh to Jenkins. Next slide please. So uh this is the uh like introduction to the project. So this project uh actually aims to retool the genkins IO website success story from uh text which is Gatsby to uh react based architecture. So in order to like improve the developer experience performance etc. So uh why do we need to uh migrate away from Gatsby? So the reason is that uh Gatsby is not actively maintained right now and uh we are unable to move to the newer dependencies of um different npm packages because of which uh we are like failing uh getting some sort of unstability and we are not able to bump up the dependencies. Also uh let us talk about the key objectives of this project. We need to migrate from Gatsby to wheat as I have just mentioned. So uh we also need to uh fix the YAML files. There are approximately like 194 YAML files and there are inconsistencies, broken datas and uh like broken data we can say u like invalid punctuation and the structural problem etc. So we need to uh clean that up using uh some scripts. Also we need to redesign the story submission workflow which is currently using decap CMS and netify CMS. So we need to replace that with GitHub actions. And why do we need to do that? Because uh decap CMS and netify CMS is currently working as a content management system for stories.jenkenkins.io. But uh when it comes for a user to submit a new story then they are unable to do so because it requires some of like uh admin permissions. So we definitely definitely need to migrate away from it. So to have some new stories also we need to modernize the UIUX uh that we'll be doing in future and also we need to add up a testing layer and code quality tooling to ensure uh application stability. Next slide please. Okay. So uh here is our project progress what we have done up uh so far. So we have uh migrated the application from Gatsby to V. So uh which included like migrating the components uh their logic their structure from that of Gatsby to wheat and also we have set up the dynamic routing for 194 stories and for uh other pages as well and we are using uh vit SSD as a static site generation plug-in for vit which is uh improving our performance also we were using graphql data layer uh actually the Gatsby what it does it has a built-in graphql functionality so uh like we have migrated away from that. So we have decided to move forward with a different approach which is like diet yamel parsing using the beat features like metaglo and we are getting some expected results and also we have recreated the map functionality which is uh using leaflet integration. So this was the thing that I was talking about. We were unable to um bump up the dependency of leaflet and other uh npm packages because of which we were like getting some unstability. So also we need to uh maintain the performance factors and uh search engine optimization. Uh next slide please. Okay. So uh apart from the migration thing we have as mentioned we'll be doing the YAML fixes. So we have done these YAML fixes so far. So uh there were 194 user stories and out of them like 70% of them had like broken YL structure. So we had to clean that up. So we have audited and cleaned 194 YAML user uh stories. Uh most of them were done manually but we also did uh some build scripts and with the help of the scripts we cleaned some of the data which could be cleaned and we also removed some unknown and unused meta fields which uh were present in the uh user story files and also we have set up a yl lint in order to check for the structural problem in the yl file. So uh to have some consistency also we have used AGA and AGV format to ensure uh strict schema is being followed by all the user stories. So what AG will do it will check up for the fields uh if there is any unknown field then it will just uh return us a failure and can next slide please. So uh yeah so this is how uh this is the most basic structure I could think of that how our application is taking up the data. So we have uh YAML files from the source path. It is it is giving the raw AML to the data layer which is our util and uh the data layer is uh getting the raw YL and it is being converting to the JSON objects. So uh with the help of the JSON YAML npm package and it is like being fed to the web pages. Next slide please. Okay. Uh can I share my screen? Thank you. >> Yeah. Yeah. Now you can share your screen. >> Okay. Uh is my screen visible? >> Yes, it is. >> Okay. Uh so Okay. So, uh this is how our application looks like for now. This is the like initial phase. So, uh I would like to mention one thing that we'll be changing up the UI uh eventually in our uh UIUX phase. So this is how it looks like for now. So if you go to this page, we can see that we have user stories which are coming whose data is like coming from the YAML files and uh we have some u filters with which we can filter up the user stories and we also have some sort by functionality. Okay. If we are like opening one of the user stories then we can see how the user uh stories are structured. We have heading, we have subheadings and some of the metadata fields along with the user story image. Then we have body content of the uh which are coming directly from the YAML file. And then we have uh our testimonial component which is integrated in the story page itself. Uh apart from that we have also configured uh the uh footer actions like whenever we are clicking on any of the user story then it will redirect us to uh its source part with which we can like do any changes if we want to. then uh it can like create a PR right away. Apart from that, we have another functionality which is our uh map feature. So uh this is another feature that shows uh user stories all around the world which uh people have shared. So each pin you can see in here is a uh is a user user story which is shared. For example, we have a user story from India. when we click on it, we just get redirected to the actual user story that I just mentioned. And also if you don't want to um uh like choose a user story from the map, then you can also choose uh from the side panel. Uh if you click on a particular country, then it shows uh different user stories. If you click one of them, we get redirected uh redirected to the user story itself. Also, we have some filters uh according to the uh according to the industry. So if you click one of them then we get uh like the user story related to that industry. So uh this is what we have done. Okay let me stop sharing. Um can we have the slides please? Okay so uh what challenges I have faced and what I'll be facing. So uh I have replaced the graphql data layer. Uh so it was uh quite hectic task because YAML files parsing approach we were like moving with the YAML parsing directly. And uh there's a thing that uh YAML files are like sensitive and if there is one line code change or one line error in the YAML file then the whole application can break. So we had to handle that properly. Also uh the redesigning user story submission workflow that we will be doing in future. So we need to configure the custom GitHub action for that uh in order to get the expected results that uh and also for the redesigning the UI we need a lot of iterations that I think will be a hecky task as well. Next slide please. Okay. So uh future work as I mentioned that I'll be implementing and configuring the users to submission workflow using GitHub action. Also we need to improve the UIX and responsiveness adding test to ensure the application stability and I'll be continuing with the documentation of uh for guiding the users in order to submit the user story efficiently. Next slide please. Uh so uh are there any questions? Yeah, that's awesome. So, we have two more minutes for question for WhatsApp. If anyone have any questions, feel free to raise your hand, ask, unmute and do add it in the chat as well. >> So, Vatel Mark, wait here. Do you have do you have a prototype site running that we could link to and any any key things that you've seen where oh we ought to do this or that even better as we as we look forward the change from Gatsby to Vite seems to seems to be a smart one. What about when Vite becomes unmaintained etc. Um first of all yes I have a prototype it the version that I just shown uh was deployed one so I can share that as well in the chats and apart from that for your question that what if v gets maintained so for now uh if I taking the scenario that I don't think that it will happen but if in case that happens that we'll definitely be moving to a newer framework. >> Thank you. You're welcome. Also uh before uh going I would like to thank my mentors Kristen Jamud and Rajiv which are which have really been active and they have been guiding me so well and solving all of my problems whichever I had. So thank you for your guidance. Okay then I see no questions and thank you. Thank you. have a amazing friend. So guys, it is so wonderful to hear from all the mentors, contributors and the admins as well. And if you want to do check out more about what Jenkins is doing within the GOC or GOC within the Jenkins, there are so many resources for you or here in the slides. Feel free to check out that and being said that thank you everyone. Thank you for joining. Have a great day.