Linux Distro

= Idea for a linux distro =

I got frustrated about not being able to make gopher:// links work on arch linux despite following "freedesktop" rules. So I started thinking about making a linux distro. I may not do it but i'll use this page for notes.

Guiding Philosophies
It's more useful to explain the philosophies behind the exact decisions.


 * simplify things for real. Don't just sweep complexity under the rug. (e.g. Gobo linux uses a kernel mod to hide some of the folders in / - we wont do this)

Ideas and Goals

 * Simplify /. I want / to be much simpler. I want a single /bin folder. a single /lib folder. etc. The FHS.
 * Atomic package upgrades. Use a nix/guix style store and have everything in /bin, /lib symlinks back into it, in order to implement atomic upgrades.
 * musl libc instead of glibc.
 * A better pid1. There is an anti-systemd trend at the moment but I do not feel the alternatives are better. I think we would need to implement a new init system.
 * Curated. There should be a good set of core packages work well together.
 * Integrate programming language package managers. Integrating these is essential. If you want to install a perl cpan library or a python pip thing that shouldn't be an issue, or brick your system. I have had bad experiences with this in the past. This needs to be a first class design as part of the OS. Look into the rvm/python virtualenv stuff too.
 * Config file management: The config files on your system should be tracked with git or something like that. It should be part of package definitions which config files a program uses.
 * Reproducible builds: We would like to use hash based addressing (IPFS or similar) for package distribution. To make this work out nicely in practice we would like packages to build reproducibly, the package should be a function of it's package definition. A user should be able to verify a build.
 * Work with containers: I want to be able to define a container in a declarative way. The package build tool will also work based on this. I think void linux does this, so check it out.
 * Boot up in one second: This is possible (as evidenced by kolibri os). So achieve it.

Negatives

 * No dbus
 * No systemd (too megalithic, and the developers have not cooperative with me), no openrc (painful to use in practice, POSIX shell script based systems carry over historical mistakes).

static linking
has positives and negatives. openssl updates roughly every 3 weeks, if statically linked that would force the web browser to be rebuilt, which can take hours. Is this really an argument against static linking or is it one against the quality of software engineering for web browsers?

unified conf file format
What about having a single config format for the whole system? This could be implement in two ways: (A) hacking existing programs to use the unified config format. (B) creating transformers from configlang into fstab, into hosts etc.

One problem with this is that it makes the upstream documentation invalid.