A new Linux distro approaches!


Herdiansyah - a personal blog


A new Linux distro approaches!


(or, I really should write a better title)

There’s a new Linux distribution on the block, and unlike many distros, it doesn’t rely on other big distributions (e.g. Debian, Ubuntu (itself based on Debian), Red Hat/Fedora, Arch), KISS Linux. [0]

This project is initiated by Dylan Araps, the creator of neofetch [1], pure bash bible [2], and now pure sh (POSIX, specifically) bible [3].

And as usual, this piqued my interest.

“Simple” can mean different things to different people. An end-user will never care about underlying system. “I want my Google to work!”, that’s it, and that’s perfectly understandable.

However, some “power users” can and will question, “why is this software installed?”, “why is this needed?”, “is there any way a better and straightforward way to do X?”. KISS Linux aims to use less software where possible and believes that “the less software and code running the less error prone the system will be overall”. I’m not going to delve deeper into this because it’s going to be similar to a lot of “experimental” Linux distributions. Instead, I’m going to talk about its packaging system.

One of the things I like about the kiss packaging system is how the package metadata is structured. In many Linux distributions (e.g. CRUX, Arch Linux, GoboLinux, Void Linux) uses a somewhat shell-compatible format. Something like this:

makedepends=('glibc' 'guile')

package() {
    ./configure --prefix=/usr
    make install

This file is then sourced by a program specifically made to a script to build the packages itself (e.g. makepkg by Arch Linux).

Others, such as rpm and dpkg, may have a more sophisticated format.

kiss takes things differently. Instead of lumping all of the metadata together, it separates them into several files. source holds all the file paths, version has all the package versions and release. depends has all the dependencies needed, and build, which combines prepare, build, and package all together. checksums file is always generated in SHA256, and manifest, which contains all the files contained in a package.

Personally, I’m a big fan of the packaging system, since it’s straightforward, and makes it simple in case I want to “fork” just a portion of the package, and make the rest follow upstream packaging.

In my case, I can just symlink the sources and version file with upstream (in this case, kisslinux/community [4]) and create my own modifications to enable/disable certain features in build and depends. Way better.

For now, that’s it. I guess.

[0] getkiss.org
[1] github.com/dylanaraps/neofetch
[2] github.com/dylanaraps/pure-bash-bible
[3] github.com/dylanaraps/pure-sh-bible
[4] github.com/konimex/kiss-repo-modified commit