Introduction – Nikita Pandey from Oriental Institute of Science & Technology, Bhopal

Hello everyone! I’m Nikita Pandey, a B.Tech CSE(AIML) student exploring open-source and excited to contribute to Jenkins for GSoC 2026.

I have experience in Java, React, and backend development, and I’m currently exploring Jenkins architecture and plugin development.

I would be very grateful if someone could guide me towards a beginner-friendly issue or a good first plugin to explore. I’d love to start contributing actively this week and learn from the community!

Also, if any contributors here are currently working on something interesting, I’d be happy to collaborate or test features. Thank you.

1 Like

Hi,

Right now I’m playing a bit to explain error plugin. @MarkEWaite recently sent a really nice change that was merged. There are few improvements there to be written and the plugin is using some ai concepts so it’s quite let’s say interesting. All depends in you are interesting in this.

Hi Michael,
Thank you so much for responding!
Yes, I’m definitely interested in contributing to the error plugin.
I’m comfortable with Java, SQL, and MERN stack, and I’m currently learning more about Jenkins architecture and plugin development.
I would love to explore the improvements you mentioned.
Could you please guide me on how to get started — maybe a link to the repository, issues list, or any setup instructions?
Looking forward to contributing!
Thank you,
Nikita Pandey

Hi

I give some idea to explore:

  • Investigate if is possible to add the line numbers approx where the build fail in the explanation. I rather fail because console seems not have such API
  • Add a simple API to extract the explain message. This can be used for purpose notification like slack or mattermost
  • Fine a way to implement x projects so the give explanation is not global
  • Try to see if is possible to have integrated in pipeline graph view plugin

Hi Michael, Thank you for the detailed guidance!

I’ll start exploring the error plugin and look into the points you mentioned, especially:

  • Checking if we can approximate the failing line numbers in the build explanation

  • Reviewing how an API can be added to extract the explanation message for notifications (Slack/Mattermost)

  • Understanding ways to scope explanations per-project instead of globally

  • Exploring possibilities for integration with the pipeline graph view plugin

I’ll set up the plugin locally and begin investigating these areas.
If I have questions or need clarification during exploration, can I reach out here?

Thanks again for helping me get started!

Nikita Pandey.

1 Like

Hi Michael,

Quick update—I have completed the first item you suggested.

:check_mark: Added detection of the failing log line
:check_mark: Included 2 lines before and after for better context
:check_mark: Line numbers are now displayed in the Error Explanation view
:check_mark: Jelly view updated to show the highlighted region clearly

Let me know if you’d like any adjustments.
I’m ready to move to the next task—now I am starting with the API endpoint for extracting the explanation.

Thanks again for your guidance!

Hi

Have you sent the pull request?

Michael

Hi Michael,
I have created PR #59 for the “line number extraction” feature.

Please let me know if you’d like me to modify the branch, add tests, or cover any edge cases.
Thanks! — Nikita

Hi,
Thanks for pointing out the alignment issue!

I’ve now updated the code to follow the correct indentation and replaced the System.out.println() with LOGGER.fine() to match Jenkins plugin standards.

Let me know if anything else needs improvement!

Nikita

What I suggest if someone request a fix on initial patch is to squash the fix because it’s not yet submitted. Some maintainer keep the original patches sequence and some squash anyway but is definitely faster to review One patch then two. Am I right?

Thank you for the clarification!
I’m squashing the commits into a single patch and will update the PR in a moment.

Thank you both for the reviews and the clarifications.
I will revert the unintended change in index.jelly, replace System.out with LOGGER, fix the indentation, and squash the commits into a single clean patch.
I’ll update the PR soon.

I think here the explainError pipeline step could just return the explanation. So you can do

def explanation = explainError()
slackSend(message: explanation, ...)

Yes the idea to return on the same is right.

Not sure what you mean. Is it because it uses a PageDecorator that is injected to every page? My latest change Directly view existing explanation by mawinter69 · Pull Request #57 · jenkinsci/explain-error-plugin · GitHub already prevents that anything is added to the page when not on a console page

You want to allow using AI in jenkins for result by projects. I think that should not be enabled by default, or even will be better to have it enabled only if the pipeline require it. Suppose you have 200 pipeline and customer/access plugin and allow some specific customer to access this feature. For instance in my infrastracture I have 3-4 companies that have a different visibility of jenkins space and right. It’s a way to fine grained the use of AI. Is somenthing that you think that be usefull?

That could be done in multiple ways. E.g. via a job or folder property to enable it selectively. Or by adding a new permission to be able to allow AI usage on user level.

Hi Michael, I’ve squashed all the commits into a single clean patch as you suggested. The PR is now updated with one commit that includes all the fixes. Thanks for the guidance on maintaining a clean commit history! Ready for the next review.

Thanks for the clarification!
You’re right, since Jenkins doesn’t support direct linking to console log lines and run.getLog(maxLines) only provides a tail snippet, the extracted line numbers represent positions within that snippet, not the full log.

I’ll update the PR to:

Prefix the line numbers clearly as snippet lines (e.g., [Snippet Line X])

Avoid implying clickable links

Keep the extraction logic simple and aligned with current plugin behavior

Let me push the update shortly. Thanks for the guidance!

Hello Sir,
I wanted to get your validation, as I was a little bit confused. I would be very grateful if you could help. Just let me know these are the exact steps we are trying to build:
Whenever a pipeline fails in Jenkins, the plugin should:

  1. Extract the relevant part of the log

  2. Send it to an AI model

  3. Return a useful explanation of the failure

Right now, the Explain Error plugin already sends logs to AI — but we have to improve how failure information is extracted and exposed, so that:

  • The Jenkins UI shows the AI-based error explanation

  • Jenkins pipelines can access that explanation programmatically

How is the Gerrit ChatGPT Plugin related
You are working on the Gerrit ChatGPT Plugin — an AI integration that explains code reviews.
We want both projects — Jenkins Explain Error and Gerrit ChatGPT Plugin — to share AI principles and improvements, not the exact code.
The AI being trained in the Gerrit plugin is focused on code review.
But for the Jenkins plugin, the AI will focus on error logs / build failures.
So:


Plugin
|
Use of AI
|

  • | - |

    Gerrit ChatGPT Plugin
    |
    Explains code diffs and reviews
    |

    Jenkins Explain Error Plugin
    |
    Explains pipeline/build failures
    |

They complement each other.

You hinted this during the conversation:

Add a simple API to extract the explain message. This can be used for notifications like Slack or Mattermost.

Meaning:
We need a function like this in the Jenkins plugin:


def explanation = explainError()
slackSend(message: explanation)

So pipeline developers can use the error explanation outside the Jenkins UI.
1. Finish line-number improvement
2. Add an API that returns the AI explanation

  • For pipelines to access (explainError())

  • For future features like Slack notification.

3. Make the AI explanations more useful

  • Use log context intelligently

  • Highlight root cause

  • Suggest fixes if AI can

Later (not now), the plugin can:

  • Link to line numbers using the line numbers plugin

  • Show improved UI panels