Skip to content

Commit e266488

Browse files
authored
feat: add GSOC 2026 project ideas (#5352)
* feat: add GSOC 2026 project ideas KT-84040 * chore: minor formatting updates
1 parent 4768228 commit e266488

File tree

3 files changed

+221
-3
lines changed

3 files changed

+221
-3
lines changed

docs/kr.tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,7 @@
440440
</toc-element>
441441
<toc-element toc-title="Google Summer of Code">
442442
<toc-element toc-title="Overview" topic="gsoc-overview.md"/>
443+
<toc-element toc-title="GSoC 2026" topic="gsoc-2026.md"/>
443444
<toc-element toc-title="GSoC 2025" topic="gsoc-2025.md"/>
444445
<toc-element toc-title="GSoC 2024" topic="gsoc-2024.md"/>
445446
<toc-element toc-title="GSoC 2023" topic="gsoc-2023.md"/>

docs/topics/gsoc-2026.md

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
[//]: # (title: Google Summer of Code with Kotlin 2026)
2+
3+
This article contains the [list of project ideas](#project-ideas) for Google Summer of Code with Kotlin 2026,
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:gsoc@kotlinfoundation.org) via gsoc@kotlinfoundation.org
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) or [Kotlin Bluesky](https://bsky.app/profile/kotlinlang.org) accounts 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+
### Kotlin Compiler Fuzzer (Kai) [Hard, 350 hrs]
49+
50+
In recent years, fuzzing has become a widely used technique for finding complex bugs in software.
51+
The Kotlin compiler is no exception: previous fuzzing efforts resulted in more than 200 deduplicated bugs across different compiler subsystems.
52+
53+
However, the existing fuzzer implementation is now obsolete and cannot be reasonably evolved further.
54+
The goal of this project is to build a new Kotlin compiler fuzzer, **Kai**, from scratch,
55+
based on previous experience and modern tools and techniques.
56+
57+
The main goal of this internship is to establish a solid foundation for future development of the fuzzer.
58+
The focus areas include:
59+
60+
* Designing a fuzzer architecture that supports pluggability
61+
* Selecting tools for generating, mutating, and processing Kotlin code
62+
* Defining reliable ways to detect compiler failures
63+
* Designing proper workflows for collecting, classifying, and handling discovered issues
64+
65+
As a deliverable, we aim to create a prototype Kotlin compiler fuzzer that is modular and easy to evolve,
66+
unlike a monolithic implementation. Finding real compiler bugs would be a great bonus,
67+
but it is not the primary goal of this internship.
68+
69+
If you have preliminary questions about the project, contact the mentor at: marat.akhin [at] jetbrains.com
70+
71+
**Expected outcomes**
72+
73+
A prototype Kotlin compiler fuzzer with a pluggable architecture that supports future evolution.
74+
75+
**Skills required (must-have)**
76+
77+
* Proficiency in Kotlin or another JVM-based language
78+
* Technical English sufficient for reading relevant papers and documentation
79+
* Basic understanding of compilers
80+
81+
**Skills required (nice-to-have)**
82+
83+
* Familiarity with fuzzing or other forms of program analysis
84+
* Experience with Kotlin compiler plugins, IDE plugins, or other pluggable systems
85+
* Experience with greenfield developer tooling projects
86+
87+
**What you will learn**
88+
89+
* Hands-on experience with compiler fuzzing
90+
* How internal developer tooling is designed and built
91+
* How to design and implement pluggable systems
92+
93+
**Possible mentor**
94+
95+
Marat Akhin, JetBrains
96+
97+
**Tasks for applicants**
98+
99+
* **Task #1**
100+
Describe, at a high level, how you envision the architecture of a Kotlin compiler fuzzer.
101+
102+
> You may refine and iterate on this design in later tasks.
103+
> If possible, track your changes and explain them in your answers.
104+
>
105+
> You may use AI tools, but explain how you used them and how you ensured the quality of the result.
106+
>
107+
{style="note"}
108+
109+
* **Task #2**
110+
Based on the architecture from Task 1, which components are most important for pluggability, and why?
111+
112+
* **Task #3**
113+
Based on the architecture from Task 1, do you see opportunities to use LLMs or AI? If so, where and how?
114+
115+
* **Task #4**
116+
How would you test the fuzzer itself? Is back-testing possible? If yes, how?
117+
118+
* **Task #5** (Bonus)
119+
Choose one component from the architecture in Task 1 and describe how it could be implemented in more detail.
120+
For example, which tools, libraries, or algorithms could be used?
121+
122+
### Swift-to-Kotlin interop (PoC) [Hard, 350 hrs]
123+
124+
Modern software projects rarely live in a single language ecosystem. On Apple platforms, Swift is the primary language,
125+
while Kotlin is widely used for shared and cross-platform business logic.
126+
However, there is currently no straightforward way to import Swift APIs directly into Kotlin.
127+
128+
In this project, you will build on an existing open-source Swift–Java bridge and add Kotlin/Native as a target runtime.
129+
This includes designing how Swift APIs are exposed to Kotlin/Native, how calls cross the Swift/Kotlin boundary,
130+
and how object lifetimes are managed across runtimes.
131+
132+
The goal is to create a proof of concept for Swift-to-Kotlin/Native interop, document design decisions and trade-offs,
133+
and evaluate limitations and future directions.
134+
135+
**Expected outcomes**
136+
137+
A proof of concept for Swift-to-Kotlin/Native interop, with documented design decisions, trade-offs, limitations,
138+
and future directions.
139+
140+
**Skills required (must-have)**
141+
142+
* Currently pursuing or recently completed a degree in Computer Science or a related field
143+
* Familiarity with Swift
144+
* Interest in programming languages and interoperability
145+
146+
**Skills required (nice-to-have)**
147+
148+
* Familiarity with Kotlin
149+
150+
**Possible mentor**
151+
152+
Artem Olkov, JetBrains
153+
154+
**Tasks for applicants**
155+
156+
* **Task #1**
157+
Fork the [swift-java](https://github.com/swiftlang/swift-java) repository and extend it with a new target that generates Kotlin sources.
158+
159+
> **Requirements:**
160+
> * Add a CLI option (for example, `--lang kotlin-jvm` or `--emit kotlin-jvm`)
161+
> * Generate Kotlin for a minimal subset:
162+
> * Top-level Swift functions
163+
> * Types: `Int`/`Int32`, `Bool`, `Double`, `String`, `Void` → Kotlin `Int`, `Boolean`, `Double`, `String`, `Unit`
164+
> * Add tests
165+
> * Add instructions on how to run the project
166+
>
167+
> **Generated Kotlin code should include:**
168+
> * Top-level function declarations with mapped names and types
169+
> * Stub bodies (for example, `TODO("Not implemented")`)
170+
>
171+
> **Add a short `DESIGN.md` (or `NOTES.md`) describing:**
172+
> * Trade-offs and intentionally skipped parts
173+
> * What a more complete solution would look like
174+
> * What you would do next with more time
175+
>
176+
{style="tip"}
177+
178+
* **Task #2** (Optional)
179+
Extend the previous task by making the generated Kotlin code callable using the existing JNI or FFM runtime.
180+
181+
### Tail call support in the Kotlin/Wasm backend [Medium, 90 hrs]
182+
183+
This project focuses on integrating the tail call proposal into the Kotlin/Wasm backend.
184+
The intern will design and implement tail call support and evaluate its impact through benchmarking.
185+
186+
**Expected outcomes**
187+
188+
Design and implementation of tail call support for Kotlin/Wasm, with benchmarks and evaluation.
189+
190+
**Skills required (preferred)**
191+
192+
General familiarity with interpreters and compilers, and interest in optimization and benchmarking.
193+
194+
**Possible mentor**
195+
196+
Charlie Zhang, JetBrains
197+
198+
### Kotlin Education landscape report [Medium, 175 hrs]
199+
200+
Kotlin is taught and used in educational settings worldwide.
201+
This project aims to create a structured, up-to-date overview of where and how Kotlin is taught.
202+
203+
**Expected outcomes**
204+
205+
* A “Kotlin in Education” report highlighting trends and gaps
206+
* Reusable datasets for internal and public use
207+
* Input for future strategy
208+
209+
**Skills required (preferred)**
210+
211+
* Research and data analysis skills
212+
* Interest in programming education and developer ecosystems
213+
214+
**Possible mentor**
215+
216+
Ksenia Shneyveys, JetBrains

docs/topics/gsoc-overview.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@ 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
8+
## GSoC 2026: project ideas
99

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).
10+
The Kotlin Foundation has published a list of project ideas for Google Summer of Code 2026.
11+
If you're interested in contributing, check out the available projects and guidelines: [](gsoc-2026.md).
1212

1313

1414
## Past GSoC projects with Kotlin
1515

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

18+
* [](gsoc-2025.md)
1819
* [](gsoc-2024.md)
1920
* [](gsoc-2023.md)

0 commit comments

Comments
 (0)