Table of Contents

Other Project Ideas

Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...

Here we list project ideas which do not really fit into one of the workgroups of the Linux Foundation. As an umbrella organization we help other, often smaller, free software projects who have interesting student project ideas but do not necessarily have applied as mentoring organization or the ideas came up after the organization application period.

Important: We protect the e-mail adresses of our mentors and mailing lists against spam bots. Please replace all occurences of “ at ” and “ dot ” by “@” and “.” resp.

Diagnose My Ceph Cluster

Mentors: Chris Holcombe (chris dot holcombe at canonical dot com) and Chris MacNaughton (chris dot macnaughton at canonical dot com)

Description: Build a script that can be very quickly be run and give you a best guess as to what was wrong with the a running Ceph cluster. Working knowledge of distributed storage will be helpful but not required. We can guide you along the way. You will learn a lot about how Ceph works. This project will pull together a lot of different disciplines.

Desirable skills: Familiarity with Ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ceph and communication frameworks. Python knowledge will be needed to be able to build this script.

Goal/Deliverable: A Python script that can be run on a Ceph cluster that is broken and the script will produce a best guess as to what is wrong.

License: MIT/Apache-2.0

Build a QEMU API for Rust

Mentors: Chris Holcombe (chris dot holcombe at canonical dot com) and Chris MacNaughton (chris dot macnaughton at canonical dot com)

Description: QEMU is a generic and open source machine emulator and virtualizer. It has a nice JSON based API that can be used to communicate with it. The goal of this project will be to write a library to interface with a running QEMU instance. This will allow unit tests in your Rust code to build and launch a virtual machine to test your code with. The Rust community will greatly benefit from this addition.

Desirable skills: Strong command line knowledge and debugging skills. Rust knowledge will be very helpful but not required. Willingness to read a lot of documentation.

Goal/Deliverable: Demonstrate that a virtual machine can be built and deployed. The code will then be packaged up and put on crates.io for everyone in the community to use.

License: MIT/Apache-2.0

Decode CephX Protocol

Mentors: Chris Holcombe (chris dot holcombe at canonical dot com) and Chris MacNaughton (chris dot macnaughton at canonical dot com)

Description: The storage team at Canonical have built a library that can decode Ceph's RPC protocol in real time. A good chunk of Ceph's packets are currently able to be decoded. However one very important one is still missing. The CephX packets need to be decoded before this library can be used as a full fledged ceph client. The goal of this project will be to correctly encode and decode a CephX packet. This project is entirely written in Rust.

Desirable skills: Familiarity with ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Rust knowledge will be very helpful but not required. Strong knowledge of networking. Willingness to read a lot of documentation.

Goal/Deliverable: Demonstrate that a CephX packet can be correctly sent/recieved to a Ceph monitor cluster. A small Rust program can be built to demonstrate this.

License: MIT/Apache-2.0

Programatically Discover Data Center Topology

Mentors: Chris Holcombe (chris dot holcombe at canonical dot com) and Chris MacNaughton (chris dot macnaughton at canonical dot com)

Description: Using only networking tools you will build a crate to discover the physical topology of a data center. With this information we can add an enhancement to the Ceph Charm or Ceph itself allowing it to automatically lay out a cluster in the most failure tolerant way. Working knowledge of distributed storage will be helpful but not required. We can guide you along the way. You will learn a lot about how Ceph works. This project will pull together a lot of different disciplines.

Desirable skills: Familiarity with Ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ceph and communication frameworks. Rust knowledge will be needed.

Goal/Deliverable: Using 3 racks in a lab environment show that your rate can layout a Ceph cluster such that 1 replica of the data is stored in each rack allowing for maximal fault tolerance!

License: MIT/Apache2.0

Hard Drive Removal Safety in Ceph

Mentors: Chris Holcombe (chris dot holcombe at canonical dot com) and Chris MacNaughton (chris dot macnaughton at canonical dot com)

Description: Ceph has the concept of placement groups. Each hard drive that you put into the cluster gets a subset of the entire placement group set. Ceph uses a consistent hashing mechanism to shuffle and subdivide the total placement group set. When new drives are added or old drives die, Ceph shuffles the placement groups around so that the fault tolerance requirements are satisfied. This behavior makes it difficult to answer this question: Is it safe to remove this hard drive?

Desirable skills: Familiarity with Ubuntu system and its internals (system services, library loading), strong command line knowledge and debugging skills. Willingness to read a lot of documentation on Ceph and communication frameworks. Rust knowledge will be needed.

Goal/Deliverable: Using a Ceph cluster show that your stand alone utility can accurately say whether or not it is safe to remove a hard drive

License: MIT/Apache2.0