Skip to content

scalacenter/GoogleSummerOfCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

In this document, you can find a list of ideas that are proposed by the Scala Organisation for Google Summer of Code 2025.

Application

If you are interested in becoming a contributor on any idea, please reach out to your potential mentor using their email address specified with the project. You can also reach Scala Center at scala.center(at)epfl.ch.

If you would like to be a mentor and propose your own idea, please submit a PR editing this file (e.g. see 2024's projects), adding your project to the list, following the format of other projects below.

Rules

You can read the full rules of the program at the following links: Rules, Terms and Conditions, Help.

And here are the requirements for the potential contributor's proposal: Writing a proposal.

However, here are some rules that we'd like to emphasize since they are not visible enough at the above links:

  • The program is geared towards beginners first and foremost. It is intended to be a learning experience for people at the very beginning of their careers. It is also intended to give an opportunity to people who would otherwise not have one. It is NOT a freelance job. Therefore, when making an acceptance decision on a potential contributor, we will prioritize disadvantaged backgrounds and contributors at the very beginning of their careers.
  • IMPORTANT - EPFL Students: Please note that, according to GSoC rules, there are restrictions on accepting students from an organization's host university. For Scala Center, the host university is EPFL. We can only accept up to 1 student from EPFL, so please take it into account if you're studying at EPFL and consider applying.

Project Ideas

Doodle Bitmap Convolutions

Title Doodle Bitmap Convolutions
Link to Project creativescala/doodle#94
Brief Description Add support for bitmap convolutions to Doodle. The link has more, including a Github project laying out the steps.
Expected Outcome Working code and documentation.
Prerequisites Some Scala knowledge.
Ideal Prerequisites Basic knowledge of bitmap convolutions, some understanding of tagless final.
Expected Difficulty Easy – straightforward task, path for execution visible right now, very little uncertainty
Expected Time Commitment Medium project – 175 hours
Mentor Noel Welsh (GitHub: @noelwelsh, Email: [email protected])
Co-mentor

Doodle Skia Backend

Title Doodle Skia Backend
Link to Project creativescala/doodle#175
Brief Description Add a Skia backend for Doodle, using the Skiaj bindings.
Expected Outcome Working code and documentation.
Prerequisites Some Scala knowledge.
Ideal Prerequisites Some understanding of type classes or tagless final.
Expected Difficulty Easy – straightforward task, path for execution visible right now, very little uncertainty
Expected Time Commitment Medium project – 175 hours
Mentor Noel Welsh (GitHub: @noelwelsh, Email: [email protected])
Co-mentor

Krop Template Engine

Title Krop Template Engine
Link to Project creativescala/krop#14
Brief Description Create an HTML template engine for the Krop web framework.
Expected Outcome Working code and documentation.
Prerequisites Intermediate Scala knowledge and basic HTML knowledge.
Ideal Prerequisites An understanding of parsing.
Expected Difficulty Medium – some design decisions need to be made and the implementation is not straightforward.
Expected Time Commitment Medium project – 175 hours
Mentor Noel Welsh (GitHub: @noelwelsh, Email: [email protected])
Co-mentor

Business4s: Workflows4s Web UI

Title Workflows4s Web UI
Link to Project https://github.com/business4s/workflows4s
Brief Description Implement web user interface for Workflows4s. Design the API and implement both server and web side using scala and scala.js. See business4s/workflows4s#19 for details.
Expected Outcome Proof of concept of the UI that can present progress of a workflow instance.
Prerequisites Basic scala skills, basic frontend skills, basic knowledge of HTTP APIs (e.g. REST).
Expected Difficulty Medium
Expected Time Commitment Large project - 350 hours
Spoken Language English
Mentor Voytek Pituła (GitHub: @Krever, Email: [email protected])
Co-mentor Dave Smith (Github: @davesmith00000, Email: [email protected])

Business4s: ChatOps4s Prototype

Title ChatOps4s Prototype
Link to Project To be created under https://github.com/business4s
Brief Description Prototype of library/toolkit allowing to easily send messages and receive input from chat platforms (e.g. Slack)
Expected Outcome Prototype that allows getting information in and out Slack with as little effort as possible. Research on how hard will it be to support other platforms.
Prerequisites Ability to research and consume external APIs. Basic exposure to some chat platform (Slack, Discord, MS Teams)
Expected Difficulty Medium
Expected Time Commitment Medium project - 175 hours
Spoken Language English
Mentor Voytek Pituła (GitHub: @Krever, Email: [email protected])
Co-mentor -

Play Framework Support in Metals

Title Play Framework Support in Metals
Link to Project scalameta/metals-feature-requests#50 scalameta/metals-feature-requests#89
Brief Description Add support for Play Framework specific files in Metals language server
Expected Outcome Working code and documentation.
Prerequisites Intermediate Scala knowledge and basic HTML knowledge.
Ideal Prerequisites An understanding of parsing and language server protocol.
Expected Difficulty Medium – some design decisions need to be made and the implementation is not straightforward.
Expected Time Commitment Medium project – 175 hours
Mentor Tomasz Godzik (GitHub: @tgodzik, Email: [email protected])
Co-mentor

Cyfra: Support for basic GPU computations on data streams with fs2 integration

Title
Link to Project https://github.com/ComputeNode/cyfra
Brief Description Cyfra is a GPU runtime and a DSL that makes Scala a viable choice for GPU programming. Goal of the project is to implement support for GPU computations on data streams with focus on usability.
Expected Outcome Cyfra should enable developers that do not have background in GPU programming to write a simple data processing pipeline in Cyfra that performs compute on GPU and efficiently manages memory. The pipeline should be interoperable with fs2.
Prerequisites Some experience with Scala, and interest to learn a bit about GPUs.
Expected Difficulty Medium
Expected Time Commitment Medium project - 175 hours
Spoken Language English
Mentor Szymon Rodziewicz (LinkedIn, Github: szymon-rd, Email: [email protected])
Co-mentor -

Cyfra: Real-time rendering pipeline

Title
Link to Project https://github.com/ComputeNode/cyfra
Brief Description Cyfra is a GPU runtime and a DSL that makes Scala a viable choice for GPU programming. Goal of the project is to implement a basic real-time Vulkan rendering pipeline.
Expected Outcome Cyfra should enable developers to create programs that will render scenes from a basic one-step Vulkan pipeline in real time. It should support rendering to a window, a data stream, and a file.
Prerequisites No Scala experience is required, but basic experience with GPU programming would be helpful.
Expected Difficulty Medium
Expected Time Commitment Medium project - 175 hours
Spoken Language English
Mentor Szymon Rodziewicz (LinkedIn, Github: szymon-rd, Email: [email protected])
Co-mentor -

Scala Native / Scala.js Projects

Title Scala Bazel Rules for Scala.js and Scala Native
Link to Project https://github.com/bazelbuild/rules_scala
Brief Description This project aims to develop Bazel build rules for Scala.js and Scala Native, enabling efficient and reproducible builds for both platforms. The project will provide first-class support for Scala projects within the Bazel ecosystem, improving integration and developer experience.
Expected Outcome Functional and well-documented Bazel rules that allow compiling, testing, and packaging Scala.js and Scala Native projects. Demonstration projects showcasing usage.
Prerequisites Experience with Scala, build tools (SBT, Bazel), and Scala.js/Scala Native basics. Some familiarity with Bazel rule definitions is a plus.
Expected Difficulty Medium
Expected Time Commitment Large project - 350 hours
Mentor Wojciech Mazur (GitHub: @WojciechMazur, Email: [email protected])
Co-mentor TODO
Title JMH-Compliant Benchmarking Framework for Scala Native & Scala.js
Link to Project Scala Native / Scala.js
Brief Description This project aims to implement a benchmarking framework similar to JMH (Java Microbenchmark Harness) allowing for accurate and reliable performance measurements on non JVM platforms. Both Scala Native and Scala.js cannot consume a modified JVM bytecode emitted by JMH framework. The goal is to create a runtime implementation for executing microbenchmarks and a Scala compiler plugin performing required transformations of Scala.js / Scala Native code based on JMH framework compiletime annotations.
Expected Outcome A benchmarking framework that mimics JMH APIs and produces reliable results for Scala Native and Scala.js. Demonstration benchmarks showcasing usage.
Prerequisites Good understanding of benchmarking principles, Scala Native, Scala.js, and Scala compiler plugins. Some knowledge of JMH is beneficial.
Expected Difficulty Hard
Expected Time Commitment Medium project - 175 hours
Mentor Wojciech Mazur (GitHub: @WojciechMazur, Email: [email protected] )
Co-mentor Sébastien Doeraene (GitHub: @sjrd, Email: [email protected] )

Scala Native Projects

Title Incremental Optimization of Scala Native IR
Link to Project Scala Native
Brief Description This project aims to implement incremental optimization for Scala Native’s Intermediate Representation (IR), improving compilation speed by reusing results from previous compilation runs instead of optimizing the entire program from scratch.
Expected Outcome A working prototype of an incremental optimization pipeline for Scala Native IR, with measurable speedups over full optimizations.
Prerequisites Strong understanding of compilers, Scala Native IR, and optimization techniques. Knowledge of LLVM and incremental compilation strategies is a plus.
Expected Difficulty Hard
Expected Time Commitment Large project - 350 hours
Mentor Wojciech Mazur (GitHub: @WojciechMazur, Email: [email protected] )
Co-mentor Sébastien Doeraene (GitHub: @sjrd, Email: [email protected] )

Difflicious UI

Title Difflicious UI
Link to Project https://github.com/jatcwang/difflicious
Brief Description Implement a Web UI for Difflicious which allows users to explore diffs (test failures) reported by Difflicious. The UI should allow the user to expand and minimize section of the diff output in an interactive manner.
Expected Outcome Working UI and documentation
Prerequisites Good working knowledge of Scala and web technologies (Javascript, CSS, HTML). The project will be implemented in Scala.js (most likely with Laminar
Expected Difficulty Hard
Expected Time Commitment Large project - 350 hours
Spoken Language English
Mentor Jacob Wang (GitHub: @jatcwang, Email: [email protected])

Difflicious: Differ for Json type

Title Difflicious: Differ for Json type
Link to Project https://github.com/jatcwang/difflicious
Brief Description Implement a differ which supports JSON types from popular Scala libraries (e.g. Circe). The current sealed trait Differ will be completely reworked to support any general disjoint union.
Expected Outcome A differ that can diff two two io.circe.Json values
Prerequisites Good working knowledge of Scala
Expected Difficulty Hard
Expected Time Commitment Medium project - 175 hours
Spoken Language English
Mentor Jacob Wang (GitHub: @jatcwang, Email: [email protected])

A Pandas Experience

Title One line CSV import in scala
Link to Project https://github.com/Quafadas/scautable
Brief Description Python through Pandas has a great data import experience. This project aims to replicate parts of that by parsing parts of the datasource at compile time, i.e. bringing knowledge of the structure and headers of your datasource inside the compilers knowledge. It's goal is to help you discover your data, rather than force to you to write out it's metadata in advance. It's target audience will be writing non production, data sciency type scripts. Many of the motivating examples come from kaggle.com
Expected Outcome Can be measured in the increased number of successful test cases. I believe the "fundamental" idea has legs, but is currently limited to a small number of scenarios explored in my free time. The goal of the project is to expand the set of scenarios in which it is useful. Initial easy issues surround details such as correctly parsing headers, checking special characters, improving error messages and writing data back to (e.g. CSV). From there it should be possible to graduate to adding more datasources, for example SQL (hopefully simple - or harder, for example exploring apache parquet.) Stretch goals could include exploring strategies for streaming statistics, deriving visualisations, critiquing the design vs e.g. Kantan.csv, and / or attempting to help the consumer identify the "types" of the data at compile time.
Prerequisites Basic scala / java knowledge. The barrier to "getting started" ought to be rather low. The initial issues are largely detail driven rather than design driven. Basic experience with testing (munit), CI (GHA) and scala standard library would be enough to contribute.
Expected Difficulty Easy
Expected Time Commitment Medium project - 175 hours
Spoken Language English
Mentor Simon Parten (GitHub: @quafadas, Email: [email protected])
Co-mentor Volunteers wanted here too I guess :-)

Scaladex: Support for Compiler Plugins

Title Scaladex: Support for Compiler Plugins
Link to Project https://github.com/scalacenter/scaladex/
Brief Description Add support for compiler plugins in Scaladex, the index website of open source Scala artifacts. Adapt the UI of the front page, search page and project page to allow searching, and browsing compiler plugins and their versions. See full description in scalacenter/scaladex#865
Expected Outcome Scaladex should index compiler plugin artifacts, such as org.typelevel:kind-projector_2.13.16:0.13.3. It should show them as a separate platform on the front page, search page and project page.
Prerequisites Some experience with Scala and SQL. Good knowledge about HTML and css
Ideal Prerequisites Some knowledge of the Scala ecosystem, such as Scala platforms and binary versions
Expected Difficulty Medium
Expected Time Commitment Medium project - 175 hours
Spoken Language English
Mentor Kannupriya Kalra (LinkedIn, Email: [email protected])
Co-mentor Adrien Piquerez (GitHub: @adpi2, Email: [email protected])

LLM4S - Implement an agentic toolkit for Large Language Models

Title
Link to Project https://github.com/rorygraves/llm4s
Brief Description LLM4S is creating a Large Language Model (LLM) toolkit for Scala. This project uses the power of Scala to make building LLM based applications easier. LLMs can be used in an agentic style where the LLM is allowed to call provided tools to access resources (such as reading a webpage, or calling an API service to perform a task). The goal of this project is to create a standard toolkit that developers can use when building agentic agents.
Expected Outcome LLM4S should have a useful set of tools integrated for LLM use, such as file or web browser tools to be used by applications built with LLM4S.
Prerequisites Some exerience of Scala and LLMs.
Expected Difficulty Medium
Expected Time Commitment Medium project - 175 hours
Spoken Language English
Mentor Kannupriya Kalra (LinkedIn, Email: [email protected])
Co-mentor Rory Graves (LinkedIn, Email: [email protected])

Template

Title
Link to Project Provide a link to a website or a Git repository of your project.
Brief Description Please describe in a few sentences what the project is about.
Expected Outcome Specify the success criteria for the project. What are the deliverables, how do you know that it is done?
Prerequisites What minimal skills and knowledge the contributor needs to have to succeed on this project?
Expected Difficulty Easy, Medium of Hard
Expected Time Commitment Can be either: "Medium project - 175 hours" or "Large project - 350 hours"
Spoken Language English
Mentor FirstName LastName (GitHub: @foo, Email: [email protected])
Co-mentor FirstName LastName (GitHub: @foo, Email: [email protected])

About

Ideas list for GSoC 2025 mentored by Scala Center

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published