Summer of Code projects for GNU

This page has the project suggestions for GNU's participation in Google Summer of Code 2023.

STUDENTS - BEFORE YOU SUBMIT YOUR PROJECT PROPOSAL:

Please read the GNU Project's guidelines for Summer of Code projects.

Most importantly, please make sure you include all the information requested. If you have questions, please ask summer-of-code@gnu.org (list info here).

Please note that you are not bound to use these ideas, you can propose a new project. It is a good idea to find a mentor and discuss the idea before submit it.


Projects and Ideas

GNU is a large and complex project, and thus is subdivided into packages, which are relatively independent projetcts. In Summer of Code, GNU acts as an umbrella organization for its packages. The ideas here are grouped by package. Many packages have more than one suggestion, or even their own ideas page.

GNU Guix

Guix is a distribution of the GNU operating system developed by the GNU Project—which respects the freedom of computer users.

GNU Guix maintains a list of ideas here: https://libreplanet.org/wiki/Group:Guix/GSoC-2023.

GNU poke

GNU poke is an interactive, extensible editor for binary data. Not limited to editing basic entities such as bits and bytes, it provides a full-fledged procedural, interactive programming language designed to describe data structures and to operate on them.

GNU poke maintains a list of ideas here: https://jemarch.net/poke-gsoc-2023.html.

GNUnet

GNUnet is an alternative network stack for building secure, decentralized and privacy-preserving distributed applications. Our goal is to replace the old insecure Internet protocol stack. Starting from an application for secure publication of files, it has grown to include all kinds of basic protocol components and applications towards the creation of a GNU internet.

GNUnet maintains a list of ideas here: https://stage.gnunet.org/en/gsoc.html.

GNU LilyPond

LilyPond is a music engraving program, devoted to producing the highest-quality sheet music possible. It brings the aesthetics of traditionally engraved music to computer printouts. LilyPond is free software and part of the GNU Project.

GNU LilyPond maintains a list of ideas here: https://lilypond.org/google-summer-of-code.html.

GNU Hurd

The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux).

Porting Rust to GNU/Hurd

The goal of this project is to make the Rust language (https://www.rust-lang.org/) available on GNU/Hurd.

The Rust language is being used more and more widely, and notably in rather fundamental libraries such as librsvg or python-cryptography. It is thus more and more pressing for GNU/Hurd to have a compiler for Rust.

The Rust compiler itself is quite portable, but its runtime library, libstd, needs to be ported to the GNU/Hurd system. This essentially consists in telling Rust how the standard C library functions can be called.

And example of the main part of such port can be seen for the VxWorks port: https://github.com/rust-lang/libc/blob/master/src/vxworks/mod.rs

The bulk of such a file can be mostly generated from the libc C headers thanks to the bindgen tool, it then needs to be cleaned up and integrated into the Rust build infrastructure, some preliminary work had already been investigated in that part.

A cross-bootstrap from Linux will then need to be achieved to build rustc and cargo, and then it will be self-hosted on GNU/Hurd.

GNU Mes

GNU Mes is the exciting unique free software bootstrap for Linux (and other) distributions that can replace existing huge binary blobs that, for example, boot Debian. This is a great security concern. In contrast, GNU Mes today boots GNU Guix from source from a transparent ~500 byte stage0.

Port GNU Mes to RISC-V

RISC-V is an exciting new platform and already work has been done to port GNU Mes to RISC-V. There are many components that need to work to get to a full bootstrap. To help the effort we are looking for someone with an interest in gcc internals to complete the RISC-V backporting of GCC 4.6.4 to include RISC-V C++ support and fix missing functionality (note that RISC-V did not exist at the time of gcc4 and it is the first gcc compiler that is reached by Mes for bootstrapping!).

The current RISC-V support for GCC 4.6.4 compiles, but is not tested for C++. In this project we'll complete the backported GCC 4.6.4 with C++ support, and include the recipe for that in the Guix package provided, so it's easier to include in the full bootstrapping system later.

GnuCOBOL

GnuCOBOL is a free, modern COBOL compiler. It implements a substantial part of the COBOL 85, X/Open COBOL and newer ISO COBOL standards (2002, 2014, 2023), as well as many extensions included in other COBOL compilers (IBM COBOL, MicroFocus COBOL, ACUCOBOL-GT and others).

GnuCOBOL translates COBOL into C and internally compiles the translated code using a native C compiler, therefore works on nearly every platform.

GNU Aris

GNU Aris is a logical proof program that supports propositional and predicate logic, as well as Boolean algebra and arithmetical logic, in the form of abstract sequences.

A logical proof program can prove mathematical statements by using strict reasoning steps, based on axioms and rewrite rules. GNU Aris supports manual creation of such proofs and it can verify if a proof is correct according to the axioms and rewrite rules. Therefore, it can give good support for undergraduate math courses like logic or abstract algebra.

Add a web user interface to GNU Aris

GNU Aris can be successfully used in explaining some basic concepts of propositional and predicate logic. Its user interface is based on GTK which prevents usage on certain platforms. By targeting the web platform, end users could have the opportunity to access a unified interface. This could be a great step in teaching and learning concepts in logic.

GNU XaoS

XaoS (pronounced chaos) is a realtime interactive fractal zoomer.

Add a web user interface to XaoS

XaoS has a Qt interface, but to use it, end users require to download and install the software. This is not always possible, which is most problematic in schools and classrooms. The Qt system allows compiling the code into a HTML/JavaScript/WebAssembly application, however, the current version of XaoS is malfunctioning on the web platform because of a non-conform way of the implementation of realtime animation. In this project a fully working web application is to be implemented.

Other links:

Google SoC Page.