Skip to content

Commit f43d4e9

Browse files
authored
feat: add GSoC 2025 (#4700)
1 parent d8d916b commit f43d4e9

File tree

3 files changed

+312
-0
lines changed

3 files changed

+312
-0
lines changed

docs/kr.tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@
424424
</toc-element>
425425
<toc-element toc-title="Google Summer of Code">
426426
<toc-element toc-title="Overview" topic="gsoc-overview.md"/>
427+
<toc-element toc-title="GSoC 2025" topic="gsoc-2025.md"/>
427428
<toc-element toc-title="GSoC 2024" topic="gsoc-2024.md"/>
428429
<toc-element toc-title="GSoC 2023" topic="gsoc-2023.md"/>
429430
</toc-element>

docs/topics/gsoc-2025.md

Lines changed: 305 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,305 @@
1+
[//]: # (title: Google Summer of Code with Kotlin 2025)
2+
3+
This article contains the [list of project ideas](#project-ideas) for Google Summer of Code with Kotlin 2025,
4+
and [contributor guidelines](#kotlin-contributor-guidelines-for-google-summer-of-code-gsoc)
5+
6+
> Kotlin resources:
7+
> * [Kotlin GitHub repository](https://github.com/jetbrains/kotlin)
8+
> * [Kotlin Slack](https://surveys.jetbrains.com/s3/kotlin-slack-sign-up) and the [#gsoc](https://slack-chats.kotlinlang.org/c/gsoc) Slack channel
9+
>
10+
> If you got any questions, [contact us](mailto:[email protected]) via [email protected]
11+
>
12+
{style="note"}
13+
14+
## Kotlin contributor guidelines for Google Summer of Code (GSoC)
15+
16+
### Getting started
17+
18+
1. Check out the [GSoC FAQ](https://developers.google.com/open-source/gsoc/faq) and the [program announcement](https://summerofcode.withgoogle.com/).
19+
20+
2. Familiarize yourself with the Kotlin language:
21+
* The official [Kotlin website](https://kotlinlang.org/) is a great place to start.
22+
* Read the official [documentation](getting-started.md) to get a better understanding of the language.
23+
* Take a look at the Kotlin courses on [JetBrains Academy](https://lp.jetbrains.com/academy/learn-kotlin/) or the Android team's [Training options](https://developer.android.com/courses/).
24+
* Follow the [Kotlin X](https://twitter.com/kotlin) account to stay up to date on the latest news and developments.
25+
* Check out the [Kotlin YouTube channel](https://www.youtube.com/@Kotlin) for tutorials, tips, and the latest updates.
26+
27+
3. Get to know the Kotlin open source community:
28+
* Explore the general [Kotlin contribution guidelines](contribute.md).
29+
* [Join the Kotlin Slack channel](https://surveys.jetbrains.com/s3/kotlin-slack-sign-up) to connect with other developers and get help with any questions you may have.
30+
* [Join the #gsoc channel](https://slack-chats.kotlinlang.org/c/gsoc) to ask questions and get support from the GSoC team.
31+
32+
### How to apply
33+
34+
1. Check out the [project ideas](#project-ideas) and select the one you would like to work on.
35+
2. If you are not familiar with Kotlin, [read the introductory info on the Kotlin website](getting-started.md).
36+
3. Refer to the [GSoC contributor guidelines](https://google.github.io/gsocguides/student/writing-a-proposal).
37+
4. Apply via the [GSoC website](https://summerofcode.withgoogle.com/).
38+
* We suggest that you write a working code sample relevant to the proposed project. You can also show us any code sample that you are particularly proud of.
39+
* Describe why you are interested in Kotlin and your experience with it.
40+
* If you participate in open source projects, please reference your contribution history.
41+
* If you have a GitHub, Twitter account, blog, or portfolio of technical or scientific publications, please reference them as well.
42+
* Disclose any conflicts with the GSoC timeline due to other commitments, such as exams and vacations.
43+
44+
Thank you! We look forward to reading your applications!
45+
46+
## Project ideas
47+
48+
### Build Server Protocol: add Kotlin support [Medium, 175 hrs]
49+
50+
The Kotlin team wants to expand official Kotlin support not only for Gradle and Maven build systems,
51+
but any other build system as well and support them natively in JetBrains IDE with minimal effort.
52+
On the other hand, we also want to provide basic Kotlin support in non-JetBrains IDE –
53+
one part of such support is to be able to get Kotlin specific information from any build system supporting Kotlin.
54+
55+
The solution to these requirements could be a [Build Server Protocol](https://build-server-protocol.github.io) (BSP)
56+
that provides an abstraction layer between build system and IDE.
57+
58+
The goal of this project would be implementing a prototype which uses the BSP protocol to get all required for
59+
IDEA information from a user project to be able to work with Kotlin code in the project.
60+
To limit the scope of this prototype – user project will be using Gradle to build itself.
61+
62+
**Skills required (preferred)**
63+
64+
* Kotlin
65+
* Understanding how to write Gradle plugins
66+
* _Bonus_: understanding how to write IntelliJ IDEA plugins
67+
68+
**Possible mentor**
69+
70+
Yahor Berdnikau, and the JetBrains team
71+
72+
**Tasks for applicants**
73+
74+
* **Task #1**.
75+
Why are you interested in this project?
76+
77+
* **Task #2**.
78+
Practice assignment:
79+
create a Gradle plugin which exposes a specific task. This task should on the presence of
80+
Kotlin Gradle Plugin get all the Kotlin sources structure and output to the file. Having tests is a bonus
81+
82+
### Support Android and iOS targets in Kotlin Multiplatform for an existing Google service [Medium, 175 hrs]
83+
84+
This project aims to create an open-source Kotlin Multiplatform (KMP) library that supports an existing Google service
85+
on at least Android and iOS. This project will showcase best practices in creating KMP libraries for existing services,
86+
with a focus on appropriate production implementation (for example, proper API key management, allowing user-managed API keys,
87+
client throttling).
88+
89+
**Expected outcomes**
90+
91+
* A new Kotlin Multiplatform library with support for an existing Google service
92+
* Sample code and documentation
93+
94+
**Skills required (preferred)**
95+
96+
* Kotlin
97+
* Kotlin Multiplatform
98+
* Mobile development (Android and iOS)
99+
100+
**Possible mentor**
101+
102+
Matt Dyor, and the Google team
103+
104+
### Add Kotlin Multiplatform support in Bazel [Hard, 350 hrs]
105+
106+
Bazel's support for Kotlin is evolving, but proper Kotlin Multiplatform (KMP) integration remains a challenge.
107+
This project aims to improve [Bazel's KMP support](https://github.com/bazelbuild/rules_kotlin/issues/567)
108+
by addressing dependency resolution issues, enhancing `rules_kotlin` and `rules_jvm_external` compatibility,
109+
and enabling cross-platform builds.
110+
111+
Key improvements will focus on handling platform-specific dependencies (expect/actual mechanisms),
112+
improving Gradle metadata support, and ensuring a smoother developer experience for KMP in Bazel.
113+
114+
**Expected outcomes**
115+
116+
* Enhanced dependency resolution for Kotlin Multiplatform in Bazel
117+
* Improved integration with `rules_kotlin` and `rules_jvm_external`
118+
* A working KMP build setup in Bazel for seamless multiplatform development
119+
120+
**Skills required (preferred)**
121+
122+
* Kotlin Multiplatform and Gradle
123+
* Bazel build system
124+
* Dependency resolution strategies
125+
126+
**Possible mentor**
127+
128+
Shauvik Roy Choudhary, and the Uber team
129+
130+
### Kotlin Language Server (LSP) [Hard, 350 hrs]
131+
132+
The Language Server Protocol (LSP) is a widely adopted standard that enables code intelligence features such as autocompletion,
133+
go-to definition, and refactoring across different editors and IDEs. There is currently no official Kotlin LSP server.
134+
Uber has developed an internal Kotlin LSP, but a publicly maintained, community-driven implementation
135+
can support broader use cases, including code migration, AI-powered code assistance,
136+
and seamless integration into various development environments.
137+
138+
This project aims to develop a Kotlin LSP implementation, ensuring compatibility with key LSP features
139+
and broadening Kotlin's accessibility across development environments.
140+
141+
**Expected outcomes**
142+
143+
Develop a Kotlin LSP implementation
144+
145+
**Skills required (preferred)**
146+
147+
* Kotlin
148+
* Language Server Protocol (LSP)
149+
* Plugin or extension development for IDEs
150+
151+
**Possible mentor**
152+
153+
Shauvik Roy Choudhary, and the Uber team
154+
155+
### Maven Central publishing plugin for Gradle with new APIs [Medium, 175 hrs]
156+
157+
[Maven Central](https://central.sonatype.com/) is one of the most popular Maven repositories for publishing
158+
JVM-focused libraries and projects. It is actively used by Apache Maven or Gradle-based open-source projects,
159+
and based on Sonatype Nexus v2, pending migration to a newer version. There is ongoing migration of open source projects
160+
to a new Maven Central Instance, which has a very different API implementation and needs special support in the build tool plugins.
161+
Developing a Gradle plugin that is compatible with the new Maven Central publication APIs would help
162+
the library authors building with Gradle to have a smooth experience with the new process.
163+
164+
Currently, there are multiple implementations of Maven Central publishing plugins in Gradle,
165+
for example, the [Maven Publish Plugin](https://docs.gradle.org/current/userguide/publishing_maven.html)
166+
or the [New Maven Central Publishing](https://github.com/GradleUp/nmcp), which already tries to adopt the new APIs.
167+
A potential contributor, during the application or the community bonding phase, would need to review the implementations
168+
and suggest a plugin to be updated, or decide to build a new plugin or fork.
169+
The deliverables would include either a new version of an existing plugin for Maven Central publishing or a new plugin for Gradle.
170+
We anticipate the implementation to be in Kotlin or Java and to have proper test coverage and documentation.
171+
Additional deliverables may include Kotlin DSL extensions to simplify the use of the plugins and
172+
[Declarative Gradle](https://declarative.gradle.org/) extensions.
173+
174+
**Expected outcomes**
175+
176+
* Updated Maven Central publishing plugin or a new plugin
177+
178+
**Skills required (preferred)**
179+
180+
* Kotlin
181+
* Gradle
182+
* Maven Repositories
183+
184+
**Possible mentor**
185+
186+
Oleg Nenashev, and the Gradle team
187+
188+
### Improving Configuration Cache and lock contention in key Gradle plugins [Easy to Hard, 90 hrs to 350 hrs]
189+
190+
Gradle is working on [Isolated Projects](https://docs.gradle.org/current/userguide/isolated_projects.html) – a new feature
191+
that greatly extends the configuration cache to further improve performance, particularly the performance of
192+
Android Studio and IntelliJ IDEA sync. From the developer experience standpoint, it is one of the most expected features in Gradle.
193+
194+
One of the problems for Isolated projects is the lock contention in the Gradle core and plugins sometimes getting in the way of parallel execution.
195+
We would like to reduce the lock contention, especially in the key Gradle Build Tool plugins for Java, Kotlin, Android,
196+
and Kotlin Multiplatform ecosystems. Contributors are welcome to choose the deliverables, based on their interest and the desired project size.
197+
198+
Potential deliverables include but not limited to:
199+
* Embed the [Configuration Cache Report](https://github.com/gradle/configuration-cache-report) tool into the Gradle Profiler (or implement a GitHub Action for it)
200+
* Profile Gradle and a few popular Gradle plugins in various projects, with automation of the test suite on GHA
201+
* Determine potential areas and plugins where lock contention can be reduced, with or without Configuration Cache
202+
* While around, contribute to other areas of [Configuration Cache compatibility](https://github.com/gradle/gradle/issues/13490) in the target plugins
203+
* Implement some of the discovered improvements
204+
205+
**Expected outcomes**
206+
207+
Implementing extensibility features in the Kotlin DSL for Gradle and improving support for common project integrations
208+
209+
**Skills required (preferred)**
210+
211+
* Kotlin
212+
* Gradle
213+
* Java
214+
* Performance analysis
215+
* Profiling
216+
217+
**Possible mentor**
218+
219+
Oleg Nenashev, Laura Kassovic
220+
221+
### Gradle convention plugin for developing Jenkins plugins [Easy to Hard, 90 hrs to 350 hrs]
222+
223+
There are more than 50 Jenkins plugins that are implemented with Gradle.
224+
There is a [Gradle JPI plugin](https://github.com/jenkinsci/gradle-jpi-plugin),
225+
but it is not fully compliant with Jenkins hosting requirements, and needs an update.
226+
In this project idea, the aim would be to recover the Gradle developer flow for Jenkins, reach feature parity with the
227+
Apache Maven flow ([Parent POM](https://github.com/jenkinsci/plugin-pom),
228+
[Plugin Compatibility Tester](https://github.com/jenkinsci/plugin-compat-tester),
229+
[Jenkins Bill of Materials](https://github.com/jenkinsci/bom), and others),
230+
and to improve the developer experience for those who develop Jenkins plugins with Gradle.
231+
232+
Contributors are welcome to choose the deliverables, based on their interest and the desired project size.
233+
234+
Potential deliverables include but not limited to:
235+
* Refreshing the Gradle JPI plugin and making it compliant with hosting best practices
236+
* Migrating the Gradle JPI plugin codebase from Groovy to Kotlin
237+
* Implementing a new convention plugin for Jenkins Plugins that would cover the main features of Jenkins plugin Parent POM, with Kotlin and Kotlin DSL.
238+
This would include not just building the plugin, but also testing and static analysis according to Jenkins' best practices
239+
* Adopting the refreshed plugin and/or the convention plugin in the most popular Gradle plugin, including the Gradle Plugin itself
240+
* Integrating Gradle Plugins into Plugin Compatibility Tester and Bill of Materials
241+
* Documenting the updated Gradle development flow for Jenkins plugins
242+
243+
**Expected outcomes**
244+
245+
Updated Gradle JPI Plugin AND/OR new convention plugin for Jenkins, published on Jenkins Update Center and Gradle Plugin Portal
246+
247+
**Skills required (preferred)**
248+
249+
* Kotlin DSL
250+
* Kotlin
251+
* Gradle
252+
* Jenkins
253+
* Java
254+
255+
**Possible mentor**
256+
257+
Oleg Nenashev, Stefan Wolf
258+
259+
### Kotlin DSL and Declarative Gradle documentation samples test framework [Easy to Medium, 90 hrs to 175 hrs]
260+
261+
Many projects, including Gradle, have a lot of Kotlin DSL samples and code snippets (see the Gradle Docs for examples).
262+
Testing them against multiple versions poses certain challenges because the snippets often represent incomplete code
263+
for the sake of brevity. We would like to build a test framework that simplifies the verification of those samples
264+
within a unit test framework (Kotest or JUnit 5) on GitHub Actions or Teamcity. Later we would be interested in
265+
doing the same for [Declarative Gradle](https://declarative.gradle.org/) samples.
266+
267+
**Expected outcomes**
268+
269+
Implementing extensibility features in the Kotlin DSL for Gradle and improving support for common project integrations
270+
271+
**Skills required (preferred)**
272+
273+
* Kotlin
274+
* Gradle
275+
* Java
276+
* Static analysis
277+
278+
**Possible mentor**
279+
280+
Oleg Nenashev, Laura Kassovic
281+
282+
### IntelliJ Platform Gradle Plugin – Gradle Reporting and Parallel Verifications [Medium, 175 hrs]
283+
284+
The [IntelliJ Platform Gradle Plugin](https://github.com/JetBrains/intellij-platform-gradle-plugin),
285+
a plugin for the Gradle build system, simplifies configuring your environment for building, testing, verifying,
286+
and publishing plugins for IntelliJ-based IDEs. The plugin manages the build, test,
287+
and verification steps while keeping up with the constant changes introduced in the IntelliJ Platform.
288+
The IntelliJ Platform Gradle Plugin is used by JetBrains, third-party developers,
289+
and external companies to integrate their workflows with JetBrains tools.
290+
291+
**Expected outcomes**
292+
293+
* Introduce Gradle Reporting to provide detailed, configurable verification task reports.
294+
* Utilize Gradle Worker API to enable parallel execution of the verifyPlugin task against multiple IntelliJ Platform versions, reducing the task execution time.
295+
* Explore additional Gradle enhancements to further improve plugin development workflows.
296+
297+
**Skills required (preferred)**
298+
299+
* Kotlin
300+
* Gradle
301+
* IntelliJ Platform
302+
303+
**Possible mentor**
304+
305+
Jakub Chrzanowski, JetBrains

docs/topics/gsoc-overview.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ a global online program that introduces new contributors to open-source developm
55

66
Learn more about GSoC on the [official Google Summer of Code website](https://summerofcode.withgoogle.com/).
77

8+
## GSoC 2025: project ideas
9+
10+
The Kotlin Foundation has published a list of project ideas for Google Summer of Code 2025.
11+
If you're interested in contributing, check out the available projects and guidelines: [](gsoc-2025.md).
12+
13+
814
## Past GSoC projects with Kotlin
915

1016
You can explore past Google Summer of Code projects and ideas with Kotlin:

0 commit comments

Comments
 (0)