Google Summer of Code – Project List

LibreCube is applying for the Google Summer of Code (GSoC) program this year!

GSoC is a vital opportunity for attracting new members to the LibreCube community and the open source world in general. We heavily rely on contributors to extend our open source ecosystem for semi-autonomous exploration systems and technology. Listed below are the project ideas for this year. Please email directly to the mentors (with gsoc@librecube.org in copy), with a short text about yourself (your skills and interests) and what of the project(s) you find interesting to work on. You may want to structure your project application according to this template. Also, have a look at a previous application.

Please note:

  • As always, we aim for a diverse audience and encourage applications from women and under-represented groups!
  • The idea of GSoC is to engage people in open-source development.
  • Most projects require at least a basic knowledge of Python language. Basic experience with Git is also needed.
  • We do not restrict the use of AI tooling for code generation. However, you must disclose that you used AI and you must have understood the generated code! If you submit a merge request that you cannot explain how it works, you will not be considered further for this program.

1. Rust SpaceCAN Port (native and embedded)

Note: This project has changed! Please read the description carefully to understand the new objective.

Description: SpaceCAN is the robust onboard communication bus for CubeSats and other autonomous vehicles, developed by the LibreCube community. Currently we have a reference implementation in Python and an embedded version in MicroPython. A SpaceCAN network is composed of a controller node and several attached responder nodes.One can use the SpaceCAN Tester application for testing responder nodes. The task here is to write a port of the SpaceCAN protocol in Rust. The Rust implementation should be a one to one porting of the Python reference implementation. The goal is to have a native Rust port that runs on PC and an embedded Rust port that runs on a selected STM32 microcontroller (stm32f446re). The repository of an very early prototype is here.

Skills: Rust, embassy-stm32, Python

Proposed Mentors: Artur (artur@librecube.org), Peter (peter@librecube.org)

Project Size: 350 hours

Difficulty: hard

2. ZED PLUTO Language Plugin

Description: PLUTO is a domain specific language for writing procedures to be used for test and operation of space system. PLUTO procedures are both human-readable and can be parsed by machines (for example, we have developed a PLUTO to Python parser to demonstrate it). The goal here is to create a language support plugin for the ZED editor to support syntax highlighting and code formatting. This will greatly assist in writing PLUTO procedures. Previously we had developed a plugin for VS Code, which can serve as a guideline.

Skills: Python, PLUTO

Proposed Mentors: Sai

Project Size: 90 hours

Difficulty: easy

3. Blockly PLUTO Procedure Editor

Description: In a previous GSoC project, we developed a blockly-based application to support the creation of PLUTO procedures using block programming. A demo of the application can be found here. PLUTO is predominantly used in European space missions. This application is targeted for students and engineers of space mission automation. It provides them an easy-to-use tool to create valid PLUTO procedures. The task here is to improve the editor in a number of ways. Most importantly, the activity and value references, which are currently defined as free text in the blocks input fields, should be instead come from a database and be presented as pull-down menu. The database shall be an XTCE file. Writing an XTCE encoder/decoder will be essential for this task. Further improvements concern the implementation of other missing functionalities, which are listed here.

Skills: JavaScript, Blockly, Docker

Proposed Mentors: Artur (artur@librecube.org)

Project Size: 175 hours

Difficulty: medium

4. CCSDS GNU Radio Receiver & Decoder

Description: LibreCube is developing an UHF CubeSat communications board. This project will complement this activity by creating a lab-style ground station, utilizing SDR and GNU Radio flowgraphs (and an optional small OOT module) to receive, demodulate, and decode CCSDS packets. Data can come from real SDR and from provided baseband IQ recording. The work will take inspiration from the existing CCSDS GNU Radio decoder (gr-cc_sdr, gr-satellites, gr-ccsds). Deliverables include working flowgraphs, packet/frame decoding, examples and clear documentation with sample datasets.

Skills: C++, GNU Radio, Signal Processing

Proposed Mentors: Tamara (tamara@librecube.org), Shayan (shayan@librecube.org)

Project Size: 350 hours

Difficulty: hard

5. GNU Radio LoRa Receiver with Optional TinyGS / LoRaWAN Integration

Description: This project focuses on creating an SDR-based ground station receiver using GNU Radio capable of receiving and demodulating LoRa satellite signals with standard SDR hardware. The receiver will allow conventional SDR ground stations to decode LoRa packets and optionally forward them to networks such as TinyGS or LoRaWAN infrastructure. The work will build on existing GNU Radio LoRa implementations and produce reusable flowgraphs, optional modules, and clear documentation.

Skills: C++, GNU Radio, Signal Processing

Proposed Mentors: Shayan (shayan@librecube.org)

Project Size: 350 hours

Difficulty: hard