Collaboration projects

Here are a couple of projects that cannot possibly be done by just a single motivated individual. If you're interested in working on any of these projects please contact us.

Maintaining the Java bootstrap

The Java Development Kit (JDK) is written in Java. The JDK can be bootstrapped from C++ with Jikes, SableVM, GNU Classpath and older versions of the IcedTea build system for the OpenJDK. See the Guix sources for an implementation of this bootstrap chain. Most of the software needed for the bootstrap unfortunately has been abandoned.

To ensure that the JDK can be built from sources without the need for an existing installation of the OpenJDK we propose to continue maintaining the bootstrap chain.

Maintaining GCC version 4.7

The C and C++ compilers of the GNU Compiler Collection make up the foundation of many free software distributions. Current versions of GCC are written in C++, which means that a C++ compiler is needed to build it from source. GCC 4.7 was the last version of the collection that could be built with a plain C compiler, a much simpler task.

We propose to collectively maintain a subset of GCC 4.7 to ensure that we can build the foundation of free software distributions starting with a simple C compiler (such as tinyCC, pcc, etc).

Build GCC 4.7 with a smaller compiler

GCC is a complex beast and a binary of it is often used to bootstrap the whole system. Version 4.7 is the last version of GCC to not require a C++ compiler. This project aims to build GCC version 4.7 with a simple C compiler such as TinyCC, pcc, or qcc.

Bootstrapping GHC with Hugs and nhc98

The Glasgow Haskell Compiler (GHC) is the most popular Haskell compiler. It is written in Haskell and since the first public release requires GHC to build newer versions of the compiler. It might be possible to build a first GHC from source with the Hugs interpreter and the compiler nhc98. This blog post describes the current state of this project.

Working towards a source-based bootstrapping path to a GNU+Linux system

Mes aims to create an entirely source-based bootstrapping path. The target is to have GuixSD bootstrap from a minimal, easily inspectable binary—that should be readable as source—into something close to R6RS Scheme.

As bootstrapping is presumably easiest and probably most fun with Scheme, the next step for Mes is mescc: a C compiler/linker to bootstrap into GNU GCC and GNU Guile, possibly via Tiny-CC.

It currently has an interpreter written in C with garbage collector, a library of loadable Scheme modules and test suite just barely enough to support a simple REPL and a proof-of-concept C compiler that produces an ELF from the simplest of C files.

Growing a source-based bootstrapping path to a GNU system

Stage0 starts with just a 280byte Hex monitor and builds up the infrastructure required to start some serious software development. With zero external dependencies, with the most painful work already done and real langauges such as assembly, forth and garbage collected lisp already implemented

Demonstrate some old school skill, by writting a new compiler or interpreter or help with various support tasks required to keep this project on track. Or if low level programming isn't for you, help bridge the gap between our goal and where we are by writing low dependency software in the high level language of your choice that might be easier for us to bootstrap.

Even if contributing to it isn't for you, if you could take 7 minutes to verify what already exists on whatever weird operating system or hardware you have; we would love to hear about your results.