SOFTWARE
________________________________________________________________________________
Linux distributions are more or less a package manager, repositories of software
and some sugar on top. The software choices made by a distribution are largely
what define it.
KISS takes a different approach to its software offerings by having highly
focused defaults with limitless user choice as a counterbalance. The
defaults are just that, defaults. Nothing is tightly coupled.
This page will explain the many software choices, the status of packages like
Python 2 and the further removal of unneeded software. This is only in relation
to the official repositories as the Community make KISS boundless.
[0.0] Index
________________________________________________________________________________
- The Defaults [1.0]
- C/POSIX Library [1.1]
- Core Utilities and Shell [1.2]
- Init System and Service Manager [1.3]
- SSL Library [1.4]
- Removed Software [2.0]
- Excluded Software [3.0]
[1.0] The Defaults
________________________________________________________________________________
KISS provides a somewhat non-typical software stack. It's small in size and
contains little software. As a user, you may find that some things work
differently to other distributions.
This is not a complete list, it is merely the interesting bits. The true
strength of KISS is not in its software choices but in its software omissions.
[1.1] C/POSIX Library
____________________________________________________________________________
Most major distributions tend to use GNU's C library whereas KISS uses musl.
Musl has better support for static linking, is smaller in size and has an
emphasis on correctness + conformance to standards. The dynamic runtime is a
single file with a stable ABI allowing for worry-free and race-free updates.
It is not without its caveats though. Software compiled for GNU's C library
will not work on a musl-based system. Large amounts of software also rely on
library extensions which are exclusive to the GNU C library.
Making this software work on musl is not impossible however. A tiny patch is
all that is needed in the majority of cases and this overall situation has
improved immensely in recent years.
To paint a clearer picture; our Firefox package no longer requires a series
of patches for musl compatibility as the portability issues were fixed
upstream (Thanks to $/).
More information: https://wiki.musl-libc.org/design-concepts.html
[1.2] Core Utilities and Shell
____________________________________________________________________________
The default provider of the core utilities (ls, cat, etc) and the POSIX
shell is busybox. Distributions typically use the GNU coreutils and bash to
fill this hole.
Busybox combines tiny versions of each utility into a single, small
executable. This is statically linked in KISS and comes in at 1MB for the
entire package. Each utility is simply a symlink to the single binary.
More information: https://www.busybox.net/about.html
[1.3] Init System and Service Manager
____________________________________________________________________________
Busybox is also the provider of KISS' default init and service manager. This
works really well as no additional software is required and the overall
system integration is very minimal.
The service manager provided by busybox is its own implementation of the
runit family of utilities. Writing services for this system is really nice
as services are no larger than a line or two a file.
The boot-up and power-off procedures however, are not covered by busybox and
must be implemented externally. KISS provides an init-agnostic and portable
base with which any init and service manager can be used.
More information: $/
[1.4] SSL Library
____________________________________________________________________________
KISS' default SSL library is LibreSSL, an OpenSSL fork by the OpenBSD folk.
The purpose of the fork is to modernize OpenSSL, improve security and apply
development best practices.
It also has a nicer build system and no reliance on Perl during compilation.
This made it very easy to include in KISS' tiny core.
More information: https://libressl.org/index.html
[2.0] Removed Software
________________________________________________________________________________
Through tireless effort, a large amount of software has been rendered unneeded
and the entire distribution works without their presence. Let's get the smaller
stuff out of the way first.
KISS has no need for:
bash, dbus, fakeroot, file, ca-certificates, atk-brige-*, gettext,
intltool, autoconf, automake, libtool, yasm, shared-mime-info, ...
Work is almost complete in removing more traditionally fundamental pieces of
software from the distribution. The following pieces of software have been
reduced to compile-time(!) dependencies of Firefox (and only Firefox).
- Python 2 (Porting effort to Python 3 still ongoing upstream).
- GTK+2 (Due to be removed upstream in 2020).
- Perl (Used throughout the build process. Tricky).
Trying to convey what software is excluded from the distribution is quite the
difficult task. It might make things clearer if I mention that the official
repositories are made up of only 150 or so packages (and this number has shrunk
over time).
[3.0] Excluded Software
________________________________________________________________________________
You might be surprised to hear that a lot of popular software is explicitly
excluded from the official repositories. What this means is that they will never
make their way into the distribution officially.
The reasons why will be explained below, the (by no means complete) list:
- dbus
- elogind
- polkit
- pulseaudio
- pam
- wayland
- All Desktop Environments.
KISS' official repositories exclude this software to ensure that the
distribution is fully functional without them. The word "fully" implies
everything up to and including a web browser (Firefox) and a media player (mpv).
It is a easier to add software to a system than it is to try and pry it out of
one. This also ensures that this software remains _optional_ and is not forced
onto users. Choices must remain so.
The Community have packaged this entire list (and then some) for those looking
to use this software. This is #1 the strength of the distribution: a highly
opinionated and minimal base with limitless extensibility.
See: @/wiki/community/repositories
________________________________________________________________________________
Dylan Araps (C) 2019-2020
Linux(R) is the registered trademark of Linus Torvalds in the U.S. and
other countries.