Skip to content

Google Summer of Code 2015

Glauber Costa edited this page Feb 19, 2015 · 9 revisions

Introduction

For this year, we will be accepting applications for both OSv itself, and Seastar, our newly released framework for writing asynchronous and non-blocking applications. If you want to know more about Seastar, take a look at seastar's website. Note that for development simplicity, much of seastar's functionality is available on Linux. If you select a Seastar project, chances are you can code most of your project without using OSv at all. You will, however, be required to demonstrate your final deliverable running on OSv.

Core OSv projects

Seastar framework projects

Seastar is a novel framework, based on future and promises, asynchronous programming, and which heavily uses C++14. If you submit an application for Seastar, you will have to demonstrate that you are familiar with future and promises and assynchronous programming. You don't have to demonstrate expert levels, so if you are interested in the general topics but doesn't quite grasp the fundamentals, don't worry: feel free to read about it, go through the code, and drop questions at the mailing list. But we expect all of that to happen before the selection deadline.

IPv6 support

Currently the Seastar networking stack supports IPv4 only. The project will extend it to support IPv6 packets and IPv6 configuration protocols.

Required skills: ipv4, ipv6, general networking, C++14.

Difficulty: Medium

Multi-homing support

Add support for multiple NICs in the same seastar application, including routing.

NVMe driver

Non Volatile Memory Express (NVMe) is a new storage technology for accessing high performance solid-state drives (SSDs). NVMe features include strong support for kernel bypass technologies and excellent multi-core support.

Seastar is a user-space server application framework that achieves high performance via a share-nothing SMP model and using kernel bypass for I/O.

As such, the two technologies are well suited for each other. The student will develop an NVMe driver for seastar and measure its performance on cloudius-provided hardware.

Required skills: device drivers, C++14.

Difficulty: Medium

Seastar application projects

We would like to have applications that demonstrate the potential for performance and scalability of the seastar framework.

We currently have a version of memcached and a simple httpd that serves requests from memory. Both perform better than their standard counterparts.

Possible ideas include: extending httpd to be a fully-featured http server, ... , or coming up with an application on your own. A streaming server, a proxy, or anything that is expected to handle an abnormally high number of transactions.

Please be as descriptive as possible. Your proposal should include:

Difficulty Level: application-dependent

Skills required C++14 + other application-dependent.

Clone this wiki locally