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!

Serverless integrations for Feral

cloud programming languages

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 Repositories
feral

Native I/O backend for FS2 JVM

operating systems programming languages

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 Repositories
fs2

FS2 Connection API

operating systems programming languages

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 Repositories
fs2

Web Components for Calico

web programming languages

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 Repositories
calico

Upgrade sbt-typelevel to sbt 2

development tools

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 Repositories
sbt-typelevel

Refresh Davenverse projects

development tools programming languages

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

Related Repositories
davenverse

Cats Effect & FS2 on Wasm/WASI

web cloud operating systems programming languages

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 Repositories
cats-effect fs2

Laika enhancements for typelevel.org

web programming languages

Laika is a purely functional site and e-book generator and customizable text markup transformer. We recently migrated the Typelevel website from Jekyll to Laika. The goal of this project is improve and streamline Laika's support for generating non-documentation websites, such as blogs.

Prerequisites
Scala

Expected Difficulty
Medium.

Expected Length
Medium (~ 175 hours)

Mentors
@armanbilge @valencik

Related Repositories
Laika typelevel.org

A faster immutable list datatype

web programming languages

Immutable linked lists are a core datatype in functional programming languages. The goal of this project is to explore implementing a list-like datatype with enhanced performance. Along the way, you will learn about algebraic datatypes, Cats typeclasses, and mechanical sympathy.

Prerequisites
Interest in functional programming

Expected Difficulty
Medium. This is a good project for beginners!

Expected Length
Long (~ 350 hours)

Mentors
@armanbilge @johnynek

Related Repositories
Cats Collections

Doodle Immediate Mode Algebra

media programming languages

Design and implement an API for Doodle that allows low-level bitmap based operations.

Prerequisites
Proficient with Scala and some understanding of computer graphics.

Expected Difficulty
Medium

Expected Length
Medium (~ 175 hours)

Mentors
@noelwelsh

Related Repositories
Doodle

Doodle Skia Backend

media programming languages

Add a Skia backend to Doodle, greatly improving the performance and expressivity available on the JVM.

Prerequisites
Proficient with Scala and some understanding of computer graphics. This involves working with a library (Skija) that is not well documented and itself wraps a C++ library with patchy documentation. Hence a willingness to dive into foreign code bases is necessary.

Expected Difficulty
Medium

Expected Length
Medium (~ 175 hours)

Mentors
@noelwelsh

Related Repositories
Doodle

Krop Template System

web programming languages

Add a template system to the Krop web framework that works client- and server-side.

Prerequisites
Proficient with Scala and a reasonable understanding of parsing.

Expected Difficulty
Medium

Expected Length
Medium (~ 175 hours)

Mentors
@noelwelsh @j-mie6

Related Repositories
Krop

Are you interested in working on a GSoC project with mentorship from Typelevel maintainers?

Submit Proposal