Skip to content

Commit

Permalink
feat(gsoc): add 2025 proposed project ideas (#7669)
Browse files Browse the repository at this point in the history
* feat(gsoc): add 2025 proposed project ideas

* Apply suggestions from code review

Co-authored-by: Bruno Verachten <[email protected]>

---------

Co-authored-by: Bruno Verachten <[email protected]>
  • Loading branch information
krisstern and gounthar authored Nov 8, 2024
1 parent 0224ce4 commit 4389ecb
Show file tree
Hide file tree
Showing 12 changed files with 904 additions and 43 deletions.
158 changes: 156 additions & 2 deletions content/projects/gsoc/2024/index.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,158 @@
---
layout: redirect
redirect_url: /projects/gsoc
layout: project
title: "Jenkins in Google Summer of Code 2024"
description: "Landing page for the Google Summer of Code program in the Jenkins project"
section: projects
tags:
- gsoc
sig: gsoc
opengraph:
image: /images/gsoc/opengraph.png
links:
gitter: "jenkinsci_gsoc-sig:gitter.im"
meetings: "/projects/gsoc/#office-hours"
---

// image:/images/gsoc/jenkins-gsoc-logo_small.png[Jenkins GSoC, role=center, float=left]
link:https://developers.google.com/open-source/gsoc/[Google Summer of Code]
(GSoC) is a global, online program focused on bringing students and new contributors into open source software development. GSoC Contributors work with an open source organization on a 12+ weeks-long programming project under the guidance of dedicated mentors.

GSoC contributors accepted into the program receive a stipend and are sponsored by Google, to work on well-defined projects to improve or enhance the Jenkins project.
In exchange, numerous Jenkins community members volunteer as "mentors" for the selected GSoC contributors to help integrate them into the open source community and successfully complete their projects.

image:/images/gsoc/opengraph.png[Jenkins GSoC, role=center, float=center]

== GSoC 2024

We are participating in Google Summer of Code in 2024. +
// See our link:https://docs.google.com/document/d/1FYOBo12qz24Vxq0TxWuv9ElHH_rHP51ouMsPms4tTmw/edit?usp=sharing[Jenkins GSoC Mentoring Org Application Form].
Google has accepted us as a mentoring organization in Google Summer of Code 2024.

// Uncomment when application is worked on and submitted (Feb 2024)
//(link:./2024/application[Jenkins GSoC Organisation Application Form])

The selected projects are:

* link:/projects/gsoc/2024/projects/automating-rpu-for-jenkinsci-organization[Manage Jenkinsci GitHub Permissions as Code] with link:https://github.com/Alaurant[Danyang Zhao] as the GSoC contributor.

* link:/projects/gsoc/2024/projects/using-openrewrite-recipes-for-plugin-modernization-or-automation-plugin-build-metadata-updates[Using OpenRewrite Recipes for Plugin Modernization] with link:https://github.com/sridamul[Sridhar Sivakumar] as the GSoC contributor.

* link:/projects/gsoc/2024/projects/implementing-ui-for-jenkins-infra-statistics[Implementing UI for Jenkins Infra Statistics] with link:https://github.com/shlomomdahan[Shlomo Dahan] as the GSoC contributor.

* link:/projects/gsoc/2024/projects/enhancing-an-existing-llm-model-with-domain-specific-jenkins-knowledge[Enhancing an Existing LLM Model with Domain-specific Jenkins Knowledge] with link:https://github.com/nouralmulhem[Nour Almulhem] as the GSoC contributor.

* link:/projects/gsoc/2024/projects/improving-maintainability-of-rpu[Improve Maintainability for the Repository Permission Updater] with link:https://github.com/TheMeinerLP[Phillipp Glanz] as the GSoC contributor.

They were proposed and selected from these link:./project-ideas[project ideas].

// We have finalised a list of 9 project ideas.
// Add your ideas by submitting an ad-hoc pull request as explained in our previous link:/blog/2022/11/16/gsoc-2023/[GSoC blog post].

// The 2024 GSoC project ideas link:./2024/project-ideas[can be found here].

NOTE: Every year, there are changes in how GSoC is organized.
Jenkins GSoC documentation may be outdated in some places, please refer to the https://summerofcode.withgoogle.com/[official GSoC website] as a source of truth.
Our documentation will be updated over time to reflect the changes in the GSoC program, please report any issues you encounter via our GitHub issue tracker.

== GSoC Contributors

* link:/projects/gsoc/contributors[Information and application guidelines for GSoC contributors]
// * Online Meetup: Introduction to Jenkins in GSoC
// (link:https://bit.ly/3pbJFuC[slides],
// link:https://youtu.be/GDRTgEvIVBc[video])
* link:https://summerofcode.withgoogle.com/programs/2024/organizations/jenkins-wp[Jenkins organization page on the GSoC website]
* link:https://summerofcode.withgoogle.com/[Google Summer of Code portal]

== Mentors

Mentors are volunteers who help GSoC contributors to succeed in their projects.
If you are interested in contributing to GSoC as a mentor, and have had either some GSoC contributor experience or have done mentoring before, please do not hesitate to reach out to us.
We are always looking for new mentors to help us with the program.

* link:/projects/gsoc/mentors[Information for mentors]
* link:/projects/gsoc/proposing-project-ideas[HOWTO: Propose a project idea]
* link:/projects/gsoc/roles-and-responsibilities[Roles and Responsibilities]
* link:https://summerofcode.withgoogle.com/[Google Summer of Code portal]
* link:https://community.jenkins.io/c/contributing/gsoc-mentors/25[Mentor's Dedicated Discourse group]

== Org Admins

Org Admins are the people managing the GSoC program for the Jenkins Organization.
For 2024, our Org Admins are:

* Alyssa Tong
* Kris Stern
* Bruno Verachten
* Jean-Marc Meessen

The following checklists and documents describe the role:

* link:https://docs.google.com/document/d/1tShnTyka5fdBxaE0c93ptu-J_XTlSf3tKwJemhx5_nA/edit?usp=sharing[Org Admin runbook for the Jenkins project]
* link:https://developers.google.com/open-source/gsoc/help/oa-tips[Org Admin tips by Google]

== Contacts

* We use the link:/sigs/gsoc[GSoC SIG] for communications about GSoC.
Projects may also have their own mailing lists, chats, and meetings.
Please take a look at the details on each of the project pages.
* We use link:https://community.jenkins.io/c/contributing/gsoc/6[Discourse] for discussions.
This is the **recommended** channel for communications.
* There is also a link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[GSoC Gitter channel] for real-time communications, but it is better to use Discourse to request technical feedback or to have long-form discussions.
* For private matters such as communication difficulties with mentors, GSoC contributors, or Org Admins,
please use this mailto:[email protected][group email].

=== GSoC Discourse

Public communication channel: link:https://community.jenkins.io/c/contributing/gsoc/6[GSoC Discourse].

The purpose of GSoC Discourse is for all public communications on GSoC such as new mentor and new GSoC contributor introductions, project proposal questions and discussions, process and timeline related questions.

=== Chats

* link:https://app.gitter.im/#/room/#jenkinsci_gsoc-sig:gitter.im[GSoC Gitter channel] for organizational topics related to Jenkins in GSoC
* Project-specific chats, see project and project idea pages
* link:/chat/[Common developer chats] for technical topics

=== Office hours

Although we use Discourse as the main communication channel, we also have regular "office hours" video calls.
During these time slots Jenkins GSoC org admins and mentors are available for any GSoC-related questions.

* Schedule: Weekly 30 minutes meetings. Office hours will be held on Thursdays at 13:00 UTC.
Use the link:/event-calendar[Jenkins event calendar] to view the meeting time in your own time zone.
// * link:https://docs.google.com/document/d/1UykfAHpPYtSx-r_PQIRikz2QUrX1SG-ySriz20rVmE0/edit?usp=sharing[Agenda]
* Meetings are commonly recorded on-demand and posted link:https://www.youtube.com/playlist?list=PLN7ajX_VdyaODwGnSZzxjV6-6mqRfcoBe[here].

// This meeting will be used for Q&A with GSoC applicants/contributors and mentors before the announcement of accepted projects as well as during the GSoC program.
You can add the office hours to your calendar when you visit the link:/event-calendar[Jenkins event calendar].
// More slots may be added on-demand, e.g. for project-specific discussions.

In addition to these organization-wide meetings, each GSoC project has regular meetings during community bonding and coding phases.
Please take a look at the project pages for the schedule.

== Previous years

* link:/projects/gsoc/2023[GSoC 2023] - 4 student projects
* link:/projects/gsoc/2022[GSoC 2022] - 4 student projects
* link:/projects/gsoc/2021[GSoC 2021] - 5 student projects
* link:/projects/gsoc/2020[GSoC 2020] - 7 student projects
* link:/projects/gsoc/2019[GSoC 2019] - 7 student projects
* link:/projects/gsoc/2018[GSoC 2018] - 3 student projects
* link:/projects/gsoc/gsoc2017[GSoC 2017] - not accepted
* link:/projects/gsoc/gsoc2016[GSoC 2016] - 5 student projects
* link:https://wiki.jenkins.io/display/JENKINS/Google+Summer+of+Code+2009[GSoC 2009] - as Hudson, not accepted

== References, 2024

* link:./project-ideas[GSoC 2024 project ideas]
* link:https://summerofcode.withgoogle.com/programs/2024/organizations/jenkins-wp/[Jenkins page on the GSoC website]
* link:/blog/2024/02/23/gsoc2024-announcement/[Jenkins GSoC 2024 announcement]
* link:https://opensource.googleblog.com/2022/11/get-ready-for-google-summer-of-code-2023.html[Google GSoC 2024 announcement blog]

== References

You can find more information about GSoC in Jenkins below.

* link:/sigs/gsoc[Jenkins GSoC Special Interest Group]
* link:/sigs/advocacy-and-outreach/outreach-programs/[Other outreach programs in Jenkins]
* link:https://summerofcode.withgoogle.com/[Google Summer of Code portal]
4 changes: 4 additions & 0 deletions content/projects/gsoc/2025/index.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
layout: redirect
redirect_url: /projects/gsoc
---
161 changes: 161 additions & 0 deletions content/projects/gsoc/2025/project-ideas.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
---
layout: simplepage
title: "GSoC 2025 Project Ideas"
year: 2025
tags:
- gsoc
- gsoc2025
project: gsoc
opengraph:
image: /images/gsoc/opengraph.png
---

//The individual page's layout is located at /content/_layouts/gsocprojectidea.html.haml
:css
.pi_table {
width: 100%;
}
.pi_table_header {
text-align: center;
}
.pi_table_category {
width: 100px;
}
.pi_table_skills {
width: 175px;
}

%img{:title => "Jenkins GSoC", :src => expand_link("/images/gsoc/jenkins-gsoc-logo_small.png"), :style => "float:right", :width => "128"}


%p
= succeed '.' do
This page aggregates project ideas for Google Summer of Code
= page.year
= succeed '.' do
Refer to the Jenkins Google Summer of Code page
%a{:href => expand_link("/projects/gsoc/")}
for more information about this project and applications.
%p
Below you can find project ideas that have been proposed for this year.
New ideas may be proposed by interested mentors or GSoC contributors, such as new features in the core or "write a plugin for MY_TOOL_OR_SERVICE".
Project ideas without potential mentors will be considered, though applicants may need to work with the community and GSoC org admins to find mentors.
To add a new project idea, see:
= succeed '.' do
%a{:href => expand_link("/projects/gsoc/proposing-project-ideas/")}
proposing project ideas

%h3
Accepted ideas

%p
The following list contains the project ideas that fully match the Jenkins project idea standard.
The scope of these ideas is understood and we don't normally expect deep changes.
All ideas have quick-start guidelines and newbie-friendly issues referenced.
We welcome contributors to join the mentor teams and invite GSoC contributors to submit project proposal applications related to these ideas.

%table.pi_table.grid-all
%thead
%tr.pi_table_header
%th Project
%th Category
%th Skills to study/improve
%tbody
// TODO: parameterize year
- ideas = site.pages.select { |p| p.source_path =~ /\/content\/projects\/gsoc\/2025\/project-ideas\/[^\/]+.adoc/ }
- ideas.each do |item|
- if item.status == "published"
%tr
%td
%a{:href => item.url}
%strong
= item.title
%br
= succeed '.' do
= item.goal
%br
%b
Potential Mentor(s):
- item.mentors.each do |mentor|
= display_user_optional(mentor)
%td.pi_table_category
- if item.category
= item.category
- else
Undefined
%td.pi_table_skills
= item.skills.join(", ")

%h3
Draft project ideas

%p
In the following list, you can refer to draft project ideas, which are currently under review.
The scope of such ideas may change during the discussions, but the idea is accepted in principle.
You are welcome to comment on the draft and join the project as a mentor.
If you are a GSoC contributor, it is also fine to explore and apply to the draft project ideas.

%table.pi_table.grid-all
%thead
%tr.pi_table_header
%th Project
%th Category
%th Skills to study/improve
%tbody
// TODO: parameterize year
- ideas = site.pages.select { |p| p.source_path =~ /\/content\/projects\/gsoc\/2025\/project-ideas\/[^\/]+.adoc/ }
- ideas.each do |item|
- if item.status == "draft"
%tr
%td
%a{:href => item.url}
%strong
= item.title
%br
= succeed '.' do
= item.goal
%b
Potential Mentor(s):
- item.mentors.each do |mentor|
= display_user_optional(mentor)
%td.pi_table_category
- if item.category
= item.category
- else
Undefined
%td.pi_table_skills
= item.skills.join(", ")

// TODO parameterize year
- ideas = site.pages.select { |p| p.source_path =~ /\/content\/projects\/gsoc\/2025\/project-ideas\/[^\/]+.adoc/ }
- if ideas.length > 1
%h3
Ongoing discussion

%p.markdown
These proposals are suggestions from the mailing list, which have not been published as project ideas yet.
The feasibility is yet to be defined, and the idea may be dismissed depending on the feedback.
Everyone is welcome to participate in the discussion and join as a potential mentor.

%table.pi_table.grid-all
%thead
%tr.pi_table_header
%th Project
%th Category
%tbody
- ideas.each do |item|
- if item.status == "discussion"
%tr
%td
%a{:href => item.links.emailThread}
%strong
= item.title
%br
= succeed '.' do
= item.goal
%td.pi_table_category
- if item.category
= item.category
- else
Undefined
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
layout: gsocprojectidea
title: "Android and/or iOS tutorials in official documentation"
goal: "Adding Android and/or iOS tutorials for Jenkins in the official documentation"
category: Documentation
year: 2025
status: draft
sig: documentation
skills:
- Documentation
- Java
- YAML
- Android / iOS development
- Command line tools
mentors:
- "gounthar"
- "krisstern"
links:
meetings: /projects/gsoc/#office-hours
---

=== Background

Topics such as _how to proceed_, _what are the successful patterns_, and _what are the pitfalls_ are poorly documented.
It very often requires potential users and Jenkins Administrators to "reinvent the wheel".

==== iOS
The project idea is to have a clear status of what can be done with Jenkins for iOS app builds now.
There are only a few articles here and there about iOS.

==== Android
For Android development, some experiments are link:https://github.com/gounthar/MyFirstAndroidAppBuiltByJenkins[available] and were link:https://www.youtube.com/watch?v=fmTdT4Y-uCw&ab_channel=JeanQuinze[presented publicly].

The proof of concept could be docker-compose based.
It would work under Windows, Linux, Vagrant, macOS (x86 and ARM), and _mostly_ on Gitpod.
It should be easily transposable to a production environment.
The demo/proof-of-concept would be composed of a Jenkins controller (configured with JCasc), an Android agent, a generic Docker agent, an Android emulator, and an Android device farm (link:https://github.com/DeviceFarmer[STF]).

The idea is to have a more precise status of what can be done now with Jenkins.
We could then amend the existing link:/solutions/android/[Android documentation] and describe architectures for:

* Standalone Android projects
* Android apps building farms
* Android distro building (customized AOSP)


=== Skills to Study and Improve

- Jenkins technical architecture
- iOS application development
- CI principle and practice
- Android application development
- Docker


=== Project Size
175 - 350 hours


=== Project Difficulty Level

Intermediate


=== Expected outcomes

Details to be clarified interactively, together with the mentors, during the Contributor Application drafting phase.
Loading

0 comments on commit 4389ecb

Please sign in to comment.