The vanilla project
What is vanilla?
It’s a new radically different, simple, modern Linux distribution based on a complete LLVM toolchain, musl and busybox.
Goals and non goals
- No systemd. Systemd isn’t a bad thing in itself, but it’s too complex to be qualified as KISS.
- No installer. Installers are too complex, error prone and not enough flexible. The key idea is to use the a minimal archive and then install additional packages.
- No cross compilation. While sometimes handy, making cross-buildable packages is too complex and many software are not cross-compilable.
- Flexibility. The source packages tree allow package customization with ease in clean chroots.
- Stability. Fixed versions with ABI/API compatibility honored.
- Weak dependencies. The vpk tool installs dependencies by default but let user process dependencies manually.
- Elegance. All applications, init scripts and package paths are following a strict coding and UX styles.
- Simplicity. Packages are simple tarballs and inspected via simple text files. No database, no locks, no black box. Listing packages is matter of using
ls
and cat
.
- Free and opensource. The vanilla repository tree does not contain proprietary software. All vanilla tools and recipes are written using the permissive ISC license.
- Neutral. Packages are kept as close as possible to upstream with no or few changes for compatibility only.
Technologies
The vanilla project uses many different parts of the system in contrast to popular distributions. As such, it is not qualified as “GNU/Linux” distribution as the minimal running system does not require GNU components. On the other hand, the linux distribution isn’t against GNU and provide many programs (like GCC) as alternatives.
Core components:
- musl: a clean and lightweight C library that aims to be correct.
- busybox: a set of components for a basic system.
- llvm: toolchain for several languages including C, C++.
- linux: the obvious Linux kernel.
- wayland: strong focus on wayland for a long-term replacement to X.Org (X.Org is shipped though).
- libressl: LibreSSL is used instead of OpenSSL.
Miscellaneous components:
Optional components:
- sysklogd: simple system logger daemon (can replace busybox’s syslogd).
- dcron: simple job scheduler daemon (can replace busybox’s crond).