KISS GUIDESTONES
________________________________________________________________________________
Below are a set of notes which make KISS... KISS. I felt the need to define in
as much detail as possible philosophy behind the distribution.
There is no requirement to follow or even agree with my words. Some of the
technical details for how packages are written will apply to package inclusion
in the official repositories however.
Bear in mind, I develop and release KISS for free. I owe you nothing. Any help
I provide is at my own discretion. KISS is my gift to you from the love of what
I do. I hope you find it as useful as I have.
- Dylan Araps
These guidestones will be in perpetuity. Until a sufficiently good reason to
alter them is provided (such as security concerns, kernel requirements), these
will continue to be the guiding principles behind the direction of KISS.
- Dilyn Corner
USERS
________________________________________________________________________________
* KISS is the vessel with which to shape your system in your own way and to
optionally share your ideas with others.
* Every user has the means to keep their entire system up-to-date without the
need for or reliance on the BDFL. Every KISS install contains the entirety of
the repositories with full history.
* If a piece of software is missing, package it! If it is suitable for inclusion
in the repositories, send a pull request. If it is not, keep it in your own
repository and/or share it with others.
* Don't ask a question to ask a question. If you have a question, out with it or
forever hold your peace.
* If you have a problem, think about it first. Present as much information as
possible and logs if applicable. The more information given to those willing
to help, the higher the chance and quicker the speed of resolution.
* Most importantly. LEARN TO LEARN. Don't jump into irc at a moment's notice.
Try and solve the issue yourself first. Learn to solve your own problems,
gain a better understanding over your system and take control. Be a doer.
KISS
________________________________________________________________________________
* There must always be a sole commander-in-chief in charge of the distribution.
There must never be a below governance structure.
* With great power comes great responsibility. The user must have some kind of
brain in their skull and must exercise its use where necessary.
* Prefer less software over more software where possible. e.g If all a library
does is make the cursor spin while waiting for a program to launch, it should
be purged.
* Favour usability over ideals. If software B is simpler than software A but is
missing essential functionality (for all users), software A shall be the
default provider.
* User choice matters. Maintain this strict philosophy while at the same time
keeping the ability to go against this philosophy open to all.
* The ends do not justify the means. A package, fix, feature or what have you
will not be implemented if it requires gross hacks to accomplish.
* Only target the English language. English is the World Language. What we write
our code in and what we use to communicate.
* All shell code must be written in a safe way, pass the shellcheck linter and
match the style of any existing code.
* All distribution tooling and shell code must be written in a portable way.
Otherwise, the user will be locked into a single coreutils and shell.
* One exception is made for 'sed -i' as it is too useful to let go of. The '-i'
flag has rather good support across implementations regardless.
* Avoid the next new shiny thing until or unless certain that it brings real
improvements over what it is intended to replace.
* The above excludes versions of the same software. Software should always be
kept up-to-date unless there is a blocker in doing so.
* Continue to work towards the removal of unneeded software, patching existing
software or writing replacements if required.
* There shall never be rules centred around speech or the way in which one must
carry themselves to communicate. Do unto others as you would have them do
unto you.
OFFICIAL REPOSITORIES
________________________________________________________________________________
* The number of packages in the repositories shall never exceed that which is
maintainable by a single person with minimal effort.
* Any packages unsuitable for the repositories must be kept in user or
3rd-party repositories.
* The repositories (excluding Community) must remain a useful base containing
everything up to a Graphical session with a browser and media player. They
shall go no further.
* All software in the repositories must be F(L)OSS. See above point if
proprietary software is needed.
* The build process of a package should not require a network connection,
otherwise signature verification and checksums are useless.
* Avoid patches for single line changes. Patches require rewriting on changes
of the sources whereas a simple call to 'sed' can stand the test of time.
* Avoid running autogen.sh or autotools in builds if pre-generated files
already exist.
* Sources must use HTTPS where possible. If no HTTPS source is available one
must be sought out or created by the BDFL of KISS.
* Install files to '/usr/{bin,lib,share}' always. The singular directory
ensures simplicity and keeps KISS tooling and user scripts simple.
* The following list of software must never make its way into the repositories
as their inclusion will open the floodgates for software which unoptionally
depends on them.
dbus, systemd, polkit, gettext, intltool, pulseaudio, pipewire, pam, wayland,
logind, ConsoleKit, libsn, electron and all DEs.
* These above rules may apply to other software at the discretion of the BDFL.
* No package shall ship with telemetry enabled by default and if at all
feasible it must be patched out entirely.
COMMUNITY REPOSITORIES
________________________________________________________________________________
* The community repository is maintained by the users of KISS. Each maintainer
is responsible for the packages they have opted to add.
* The BDFL's only responsibility is to review pull requests sent to this
repository.
* Only the maintainer of a package is allowed to make any changes to said
package. Don't send pull requests for packages you do not own.
* Contact the maintainer of the package via their set git email if you would
like to report an out-of-date package or request changes.
PACKAGE MANAGER
________________________________________________________________________________
* The package manager must not exceed 1000 lines of code. This number excludes
blank lines and comments which make up around 50% of the program's current
size.
* The user is smart, the package manager is dumb. The package manager is
written under the assumption that the user has some kind of functioning brain
in their skull.
* There are some things which can't be, shouldn't be, and won't be automated.
Firstly, for my sanity. Secondly, for yours.
* Prefer extensibility through scripts over baking every additional feature into
the package manager.
* Circular dependencies are a bug and not a feature. See: freetype-harfbuzz
INIT SYSTEM
________________________________________________________________________________
* The user should not be tied to a single provider of PID 1. No unrelated piece
of software should require a specific init be in use.
* No software violating the above rule shall be included in the official
repositories as it paves the road for the inclusion of software that will
explicitly depend on it.
* The boot and shutdown scripts shall be written in an init-agnostic fashion
and work with all init systems which require it as a means of starting the
machine.
________________________________________________________________________________
This site is an archive of a previous version of KISS's website. The current
version can be found at https://kisslinux.org/.
Dylan Araps (C) 2019-2020
kiss-community (C) 2020-2021
Dilyn Corner (C) 2021
Linux(R) is the registered trademark of Linus Torvalds in the U.S. and
other countries.