Google Summer of Code

Our community has identified project ideas that we believe will significantly enhance the Typelevel ecosystem. Nothing is set in stone: we may be able to adjust a project’s length and difficulty to make it the right fit for you. So if you see something here that interests you or have an idea of your own, please get in touch!

Machine learning inference in Cats Effect

We want to make it possible to deploy machine learning inference as part of a larger web service without compromising the latency of other on-going requests. The goal of this project is to create a compiler to transform a pre-trained ML model into a sequence of Cats Effect IO steps that perform inference on some input.

Prerequisites

Scala, ideally some experience with ML

Expected Difficulty

Hard but doable. Will draw on knowledge of ML and compilers.

Expected Length

Long (~ 350 hours)

Mentors

@armanbilge @djspiewak @ekrich @valencik

AI

web

programming languages

Streaming msgpack implementation

The msgpack data format allows for efficient binary serialization of data. It would be great to have the ability to parse, transform, and emit data in a streaming fashion using FS2 in the fs2-data library.

Prerequisites

Scala, ideally some experience with FS2 and parsing

Expected Difficulty

Medium.

Expected Length

Medium (~ 175 hours)

Mentors

@satabin @ybasket

streaming

programming languages

Scaladoc Search in Protosearch

Protosearch offers an in-browser search experience for documentation. This project aims to add support for Scaladoc, the documentation system for Scala code. As a result of this work, searching for flatMap on the cats-effect documentation, for example, would return hits from the tutorial and the relevant method in the Scaladoc.

Prerequisites

Scala

Expected Difficulty

Medium.

Expected Length

Long (~ 350 hours)

Mentors

@valencik

data

web

Fluent library for files and processes

FS2 has powerful APIs for streaming I/O but using it in small scripts can involve boilerplate. This project aims to create a fluent library for working with files and processes in Scala. A particular focus will be easy integration with the Typelevel Toolkit.

Prerequisites

Scala, interest in Functional Programming

Expected Difficulty

Medium.

Expected Length

Medium (~ 175 hours)

Mentors

@toniogela @zetashift @lenguyenthanh

programming languages

Serverless integrations for Feral

Feral is a Typelevel library for building serverless functions that currently supports AWS Lambda. We want to support other cloud providers, such as Google, Cloudflare, and Vercel.

Prerequisites

Scala, interest in Functional Programming, ideally experience with serverless

Expected Difficulty

Medium.

Expected Length

Medium (~ 175 hours)

Mentors

@armanbilge @toniogela

cloud

programming languages

Native I/O backend for FS2 JVM

FS2 on the JVM currently implements its networking API using JDK NIO. Unfortunately this indirection incurs a non-trivial performance penalty. We want to replace the use of JDK NIO with direct calls to system I/O APIs such as epoll and kqueue.

Prerequisites

Scala, ability to read C

Expected Difficulty

Medium.

Expected Length

Long (~ 350 hours)

Mentors

@antoniojimeneznieto @djspiewak @armanbilge

operating systems

programming languages

Production-ready io_uring interop layer

A GSoC 2023 project prototyped a new networking I/O layer for FS2 based on the Linux io_uring syscall interface that improved the performance of HTTP servers by more than 3x. Now we need help to make this production-ready by writing code to interoperate with io_uring from the JVM.

Prerequisites

Java or Scala, ideally some experience with C and JNI

Expected Difficulty

Medium.

Expected Length

Long (~ 350 hours)

Mentors

@antoniojimeneznieto @djspiewak @armanbilge

operating systems

programming languages

Streaming implementation of an XQuery subset

XQuery allows for transforming XML data in a declarative way. Based on the generic streaming query engine added into the fs2-data library, write a frontend to implement a streamable subset of XQuery.

Prerequisites

Scala, ideally some experience with XQuery

Expected Difficulty

Hard.

Expected Length

Long (~ 350 hours)

Mentors

@satabin

data

streaming

programming languages

Submit Your Proposal

Are you interested in working on a GSoC project with Typelevel mentors?

send us an email