You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/topics/gsoc-2025.md
+65-61Lines changed: 65 additions & 61 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -48,22 +48,22 @@ Thank you! We look forward to reading your applications!
48
48
### Build Server Protocol: add Kotlin support [Hard, 350 hrs]
49
49
50
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 Kotlinspecific information from any build system supporting Kotlin.
51
+
but any other build system as well and support them natively in JetBrains IDEs with minimal effort.
52
+
On the other hand, we also want to provide basic Kotlin support in non-JetBrains IDEs –
53
+
one part of such support is being able to get Kotlin-specific information from any build system supporting Kotlin.
54
54
55
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.
56
+
which provides an abstraction layer between the build system and IDE.
57
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.
58
+
The goal of this project would be implementing a prototype which uses the BSP protocol to get all the required
59
+
information for IntelliJ IDEA from a user project so that it will be possible to work with Kotlin code in the project.
60
+
To limit the scope of this prototype, the user project will use Gradle to build itself automatically.
61
61
62
-
**Skills required (preferred)**
62
+
**Preferred skills**
63
63
64
-
* Kotlin
65
-
* Understanding how to write Gradle plugins
66
-
*_Bonus_: understanding how to write IntelliJ IDEA plugins
64
+
*Knowledge of Kotlin
65
+
* Understanding of how to write Gradle plugins
66
+
*_Bonus_: understanding of how to write plugins for IntelliJ IDEA
67
67
68
68
**Possible mentors**
69
69
@@ -76,36 +76,36 @@ Yahor Berdnikau, Bálint Hegyi, and Reinhold Degenfellner
76
76
77
77
***Task #2**.
78
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
79
+
Create a Gradle plugin which exposes a specific task. This task should, in the presence of the Kotlin Gradle Plugin, retrieve all the Kotlin sources’ structures and output them.
80
+
Including tests would be a bonus.
81
81
82
82
### Support Android and iOS targets in Kotlin Multiplatform for an existing Google service [Medium, 175 hrs]
83
83
84
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).
85
+
on at least Android and iOS. It 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, user-managed API keys support,
87
+
and client throttling).
88
88
89
89
**Expected outcomes**
90
90
91
91
* A new Kotlin Multiplatform library with support for an existing Google service
92
92
* Sample code and documentation
93
93
94
-
**Skills required (preferred)**
94
+
**Preferred skills**
95
95
96
96
* Kotlin
97
97
* Kotlin Multiplatform
98
98
* Mobile development (Android and iOS)
99
99
100
-
**Possible mentor**
100
+
**Possible mentors**
101
101
102
102
Matt Dyor, and the Google team
103
103
104
104
### Add Kotlin Multiplatform support in Bazel [Hard, 350 hrs]
105
105
106
106
Bazel's support for Kotlin is evolving, but proper Kotlin Multiplatform (KMP) integration remains a challenge.
107
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,
108
+
by addressing dependency resolution issues, enhancing `rules_kotlin` and `rules_jvm_external` compatibility,
109
109
and enabling cross-platform builds.
110
110
111
111
Key improvements will focus on handling platform-specific dependencies (expect/actual mechanisms),
@@ -117,23 +117,22 @@ improving Gradle metadata support, and ensuring a smoother developer experience
117
117
* Improved integration with `rules_kotlin` and `rules_jvm_external`
118
118
* A working KMP build setup in Bazel for seamless multiplatform development
119
119
120
-
**Skills required (preferred)**
120
+
**Preferred skills**
121
121
122
122
* Kotlin Multiplatform and Gradle
123
123
* Bazel build system
124
124
* Dependency resolution strategies
125
125
126
-
**Possible mentor**
126
+
**Possible mentors**
127
127
128
128
Shauvik Roy Choudhary, and the Uber team
129
129
130
130
### Kotlin Language Server (LSP) [Hard, 350 hrs]
131
131
132
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.
133
+
go-to definition, and refactoring across different editors and IDEs. While there is currently no official Kotlin LSP server,
134
+
Uber has developed an internal Kotlin LSP. A publicly maintained, community-driven implementation can support broader use cases,
135
+
including code migration, AI-powered code assistance, and seamless integration into various development environments.
137
136
138
137
This project aims to develop a Kotlin LSP implementation, ensuring compatibility with key LSP features
139
138
and broadening Kotlin's accessibility across development environments.
@@ -142,13 +141,13 @@ and broadening Kotlin's accessibility across development environments.
142
141
143
142
Develop a Kotlin LSP implementation
144
143
145
-
**Skills required (preferred)**
144
+
**Preferred skills**
146
145
147
146
* Kotlin
148
147
* Language Server Protocol (LSP)
149
148
* Plugin or extension development for IDEs
150
149
151
-
**Possible mentor**
150
+
**Possible mentors**
152
151
153
152
Shauvik Roy Choudhary, and the Uber team
154
153
@@ -161,11 +160,10 @@ to a new Maven Central Instance, which has a very different API implementation a
161
160
Developing a Gradle plugin that is compatible with the new Maven Central publication APIs would help
162
161
the library authors building with Gradle to have a smooth experience with the new process.
163
162
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)
163
+
Currently, there are multiple implementations of Maven Central publishing plugins in Gradle, for example, the [Maven Publish Plugin](https://docs.gradle.org/current/userguide/publishing_maven.html)
166
164
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.
165
+
During the application or the community bonding phase, a potential contributor would need to review the implementations
166
+
and either suggest an existing plugin to update or decide to build a new plugin or fork.
169
167
The deliverables would include either a new version of an existing plugin for Maven Central publishing or a new plugin for Gradle.
170
168
We anticipate the implementation to be in Kotlin or Java and to have proper test coverage and documentation.
171
169
Additional deliverables may include Kotlin DSL extensions to simplify the use of the plugins and
@@ -175,13 +173,13 @@ Additional deliverables may include Kotlin DSL extensions to simplify the use of
175
173
176
174
* Updated Maven Central publishing plugin or a new plugin
177
175
178
-
**Skills required (preferred)**
176
+
**Preferred skills**
179
177
180
178
* Kotlin
181
179
* Gradle
182
180
* Maven Repositories
183
181
184
-
**Possible mentor**
182
+
**Possible mentors**
185
183
186
184
Oleg Nenashev, and the Gradle team
187
185
@@ -191,12 +189,12 @@ Gradle is working on [Isolated Projects](https://docs.gradle.org/current/usergui
191
189
that greatly extends the configuration cache to further improve performance, particularly the performance of
192
190
Android Studio and IntelliJ IDEA sync. From the developer experience standpoint, it is one of the most expected features in Gradle.
193
191
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.
192
+
One of the problems for Isolated projects is the lock contention in the Gradle core, with plugins sometimes getting in the way of parallel execution.
195
193
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.
194
+
and Kotlin Multiplatform ecosystems. Contributors are welcome to choose the deliverables based on their interests and the desired project size.
197
195
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)
196
+
Potential deliverables include but are not limited to:
197
+
* 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
198
* Profile Gradle and a few popular Gradle plugins in various projects, with automation of the test suite on GHA
201
199
* Determine potential areas and plugins where lock contention can be reduced, with or without Configuration Cache
202
200
* While around, contribute to other areas of [Configuration Cache compatibility](https://github.com/gradle/gradle/issues/13490) in the target plugins
@@ -206,53 +204,53 @@ Potential deliverables include but not limited to:
206
204
207
205
Implementing extensibility features in the Kotlin DSL for Gradle and improving support for common project integrations
208
206
209
-
**Skills required (preferred)**
207
+
**Preferred skills**
210
208
211
209
* Kotlin
212
210
* Gradle
213
211
* Java
214
212
* Performance analysis
215
213
* Profiling
216
214
217
-
**Possible mentor**
215
+
**Possible mentors**
218
216
219
217
Oleg Nenashev, Laura Kassovic
220
218
221
219
### Gradle convention plugin for developing Jenkins plugins [Easy to Hard, 90 hrs to 350 hrs]
222
220
223
221
There are more than 50 Jenkins plugins that are implemented with Gradle.
224
222
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.
223
+
but it is not fully compliant with Jenkins hosting requirements and needs an update.
226
224
In this project idea, the aim would be to recover the Gradle developer flow for Jenkins, reach feature parity with the
[Jenkins Bill of Materials](https://github.com/jenkinsci/bom), and others),
230
228
and to improve the developer experience for those who develop Jenkins plugins with Gradle.
231
229
232
-
Contributors are welcome to choose the deliverables, based on their interest and the desired project size.
230
+
Contributors are welcome to choose the deliverables based on their interest and the desired project size.
233
231
234
-
Potential deliverables include but not limited to:
232
+
Potential deliverables include but are not limited to:
235
233
* Refreshing the Gradle JPI plugin and making it compliant with hosting best practices
236
234
* Migrating the Gradle JPI plugin codebase from Groovy to Kotlin
237
235
* 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
236
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
237
+
* Adopting the refreshed plugin and/or the convention plugin in the most popular Gradle plugin, including the Gradle plugin itself
238
+
* Integrating the Gradle plugin into the Plugin Compatibility Tester and Bill of Materials
241
239
* Documenting the updated Gradle development flow for Jenkins plugins
242
240
243
241
**Expected outcomes**
244
242
245
-
Updated Gradle JPI Plugin AND/OR new convention plugin for Jenkins, published on Jenkins Update Center and Gradle Plugin Portal
243
+
Updated Gradle JPI plugin and/or new convention plugin for Jenkins, published on Jenkins Update Center and the Gradle Plugin Portal
246
244
247
-
**Skills required (preferred)**
245
+
**Preferred skills**
248
246
249
247
* Kotlin DSL
250
248
* Kotlin
251
249
* Gradle
252
250
* Jenkins
253
251
* Java
254
252
255
-
**Possible mentor**
253
+
**Possible mentors**
256
254
257
255
Oleg Nenashev, Stefan Wolf
258
256
@@ -261,21 +259,21 @@ Oleg Nenashev, Stefan Wolf
261
259
Many projects, including Gradle, have a lot of Kotlin DSL samples and code snippets (see the Gradle Docs for examples).
262
260
Testing them against multiple versions poses certain challenges because the snippets often represent incomplete code
263
261
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
262
+
within a unit test framework (Kotest or JUnit 5) on GitHub Actions or TeamCity. Later we would be interested in
265
263
doing the same for [Declarative Gradle](https://declarative.gradle.org/) samples.
266
264
267
265
**Expected outcomes**
268
266
269
267
Implementing extensibility features in the Kotlin DSL for Gradle and improving support for common project integrations
270
268
271
-
**Skills required (preferred)**
269
+
**Preferred skills**
272
270
273
271
* Kotlin
274
272
* Gradle
275
273
* Java
276
274
* Static analysis
277
275
278
-
**Possible mentor**
276
+
**Possible mentors**
279
277
280
278
Oleg Nenashev, Laura Kassovic
281
279
@@ -291,16 +289,16 @@ and external companies to integrate their workflows with JetBrains tools.
291
289
**Expected outcomes**
292
290
293
291
* 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.
292
+
* Utilize Gradle Worker API to enable parallel execution of the `verifyPlugin` task against multiple IntelliJ Platform versions, reducing the task execution time.
295
293
* Explore additional Gradle enhancements to further improve plugin development workflows.
296
294
297
-
**Skills required (preferred)**
295
+
**Preferred skills**
298
296
299
297
* Kotlin
300
298
* Gradle
301
299
* IntelliJ Platform
302
300
303
-
**Possible mentor**
301
+
**Possible mentors**
304
302
305
303
Jakub Chrzanowski, JetBrains
306
304
@@ -310,17 +308,23 @@ OpenRewrite is a powerful framework for automating code migrations and refactori
310
308
While OpenRewrite has strong support for Java, the Kotlin ecosystem would benefit from a more comprehensive
311
309
set of OpenRewrite recipes to help developers seamlessly migrate their codebases.
312
310
311
+
This project aims to expand the Kotlin OpenRewrite recipe collection by adding more
312
+
automated transformations, such as migrating Java-based AutoValue classes to idiomatic
313
+
Kotlin data classes, modernizing Kotlin code to follow best practices, and enabling more
314
+
seamless migrations across Kotlin versions. These recipes will help Kotlin developers
315
+
maintain clean, up-to-date, and idiomatic codebases with minimal manual effort.
316
+
313
317
**Expected outcomes**
314
318
315
319
* Development of new OpenRewrite recipes for Kotlin code migrations
316
320
317
-
**Skills required (preferred)**
321
+
**Preferred skills**
318
322
319
323
* Kotlin
320
324
* OpenRewrite framework
321
325
* Java-to-Kotlin migration strategies
322
326
323
-
**Possible mentor**
327
+
**Possible mentors**
324
328
325
329
Shauvik Roy Choudhary, and the Uber team
326
330
@@ -340,13 +344,13 @@ ensuring compatibility with widely used dependency management approaches.
340
344
* Improved dependency resolution and usability for Bazel users
341
345
* Documentation and examples for using BOM support in Bazel
342
346
343
-
**Skills required (preferred)**
347
+
**Preferred skills**
344
348
345
349
* Starlark (Bazel's scripting language)
346
350
* Bazel build system
347
351
* Dependency resolution strategies
348
352
349
-
**Possible mentor**
353
+
**Possible mentors**
350
354
351
355
Shauvik Roy Choudhary, and the Uber team
352
356
@@ -355,9 +359,9 @@ Shauvik Roy Choudhary, and the Uber team
355
359
Gradle recently introduced a new [Problems API](https://docs.gradle.org/current/userguide/reporting_problems.html)
356
360
that allows Gradle and third-party plugins to propagate issues and warnings in a unified way.
357
361
This API provides clean and actionable error reporting and more insights into the console output, dedicated HTML reports,
358
-
and connected observability tools. IDEs, such as IntelliJ IDEA or Android Studio, also have access to the details via Gradle's tool integration API,
359
-
and can show warnings right in the code editorI. Several core features and plugins have already adopted the Problems API: Java compilation,
360
-
dependency resolution errors, deprecation warnings, etc. We want the code quality plugins for Kotlin to adopt this API, too; it would greatly
362
+
and connected observability tools. IDEs such as IntelliJ IDEA or Android Studio can also access the details via Gradle's API integration tool,
363
+
and can show warnings right in the code editor. Several core features and plugins have already adopted the Problems API: Java compilation,
364
+
dependency resolution errors, deprecation warnings, etc. We want the code quality plugins for Kotlin to adopt this API, too; it would significantly
361
365
improve the developer experience for 100,000+ Kotlin developers using Gradle.
362
366
363
367
In this project, we invite contributors to choose a number of Kotlin code quality plugins, such as Ktlint, Detekt, Diktat, ArchUnit, or Checkstyle
@@ -367,7 +371,7 @@ for Kotlin, and integrate them with Problems API. You can also work on integrati
367
371
368
372
* Implement Problems API integration in the mentioned plugins
0 commit comments