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

Related Repos

cats-effect

AI

web

programming languages

Serverless integrations for Feral

Feral is a Typelevel library for building serverless functions that currently supports AWS Lambda and Google Cloud Run Functions. We want to add support for more types of serverless events and more cloud providers.

Prerequisites

Scala, ideally experience with serverless

Expected Difficulty

Medium.

Expected Length

Medium (~ 175 hours)

Mentors

@armanbilge @bpholt @Chingles2404

Related Repos

feral

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 @mpilquist @armanbilge

Related Repos

fs2

operating systems

programming languages

Polling-based I/O in FS2

Cats Effect v3.6.0 introduced the ability to poll for I/O readiness. We want to use polling to reimplement several I/O APIs in FS2, including datagrams, unix sockets, and processes, on the JVM and Native platforms.

Prerequisites

Scala, ability to read C

Expected Difficulty

Medium.

Expected Length

Long (~ 350 hours)

Mentors

@armanbilge @mpilquist @antoniojimeneznieto

Related Repos

fs2

operating systems

programming languages

FS2 Connection API

TCP-based protocols are common (e.g. HTTP, Postgres, Redis) and are implemented by clients to interface with these services (e.g. Ember, Skunk, Rediculous). The goal of this project is to create a “connection” API that supports pooling, error conditions, and metrics and can be shared by all of our client libraries.

Prerequisites

Scala, ideally some knowledge of networking

Expected Difficulty

Hard.

Expected Length

Long (~ 350 hours)

Mentors

@mpilquist @armanbilge

Related Repos

fs2

operating systems

programming languages

Web Components for Calico

Calico is a reactive UI library built with Cats Effect and FS2. Web Components are a standard for creating framework-agnostic, reusable UI elements. The goal of this project is to enable Calico users to access the vast array of web components available by improving its DSL and code-generation.

Prerequisites

Scala, ideally experience with Web APIs

Expected Difficulty

Medium.

Expected Length

Long (~ 350 hours)

Mentors

@armanbilge

Related Repos

calico

web

programming languages

Upgrade sbt-typelevel to sbt 2

sbt-typelevel is a plugin for sbt, the Scala build tool, used by hundreds of open source and enterprise projects. sbt 2 is in the final stages of development. We want to upgrade sbt-typelevel to sbt 2 and adopt its new features, such as “project matrix” for cross-building.

Prerequisites

Scala

Expected Difficulty

Medium.

Expected Length

Long (~ 350 hours)

Mentors

@mzuehlke @armanbilge

Related Repos

sbt-typelevel

development tools

Refresh Davenverse projects

The Davenverse is a collection of several popular Typelevel libraries, including Mules and cats-scalacheck. Unfortunately, we have fallen behind on their maintenance. We want to move these libraries under the Typelevel org, refresh their build tooling, and bring them up-to-date to ensure their longevity.

Prerequisites

Scala

Expected Difficulty

Medium.

Expected Length

Medium (~ 175 hours)

Mentors

@samspills @valencik

Related Repos

davenverse

development tools

programming languages

Cats Effect & FS2 on WASM/WASI

Web Assembly and its System Interface are emerging technologies for deploying secure, modular applications. The goal of this project is to prototype porting the Cats Effect runtime and FS2 streaming I/O to the Wasm/WASI platform, also possibly generating feedback for the Scala WASM and WASI teams.

Prerequisites

Scala, ideally some experience with Wasm/WASI

Expected Difficulty

Hard. Wasm/WASI support in Scala is experimental.

Expected Length

Long (~ 350 hours)

Mentors

@armanbilge @tanishiking @valencik

Related Repos

cats-effect fs2

web

cloud

operating systems

programming languages

Extensible log4cats interface

log4cats is the de facto logging library for the Typelevel stack. Recently, a new API was proposed that overcomes current limitations of log4cats. The goal of this project is to adopt the new API in log4cats, migrate existing integrations to the new API, and create a compatibility layer with the old API.

Prerequisites

Scala

Expected Difficulty

Medium.

Expected Length

Long (~ 350 hours)

Mentors

@morgen-peschke @kubukoz @irevive

Related Repos

log4cats

cloud

programming languages

http4s-fs2-data

fs2-data is a streaming data library that supports a plethora of formats. http4s is a library for creating and consuming web services. http4s-fs2-data is a project to integrate the two libraries. We want to integrate more fs2-data modules as well as enhance the existing integrations.

Prerequisites

Scala

Expected Difficulty

Medium.

Expected Length

Short (~ 90 hours)

Mentors

@satabin @ybasket

Related Repos

http4s-fs2-data fs2-data http4s

cloud

web

programming languages

Convert Doobie test suite to use munit-cats-effect

Doobie is a purely functional library for database access. Our test suites are written before there is good integration between MUnit (the test framework) and Cats-Effect (the effect system we depend on). We want to convert to use munit-cats-effect to make them less verbose and error prone.

Prerequisites

Scala

Expected Difficulty

Easy.

Expected Length

Medium (~ 175 hours)

Mentors

@jatcwang

Related Repos

doobie munit-cats-effect

cloud

programming languages

Submit Your Proposal

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

send us an email