Subject	This month in KISS (#2)!
From	Dylan Araps <dylan@k1ss.org>
Date	Mon, 25 May 2020 07:07:09 +0100

Welcome to the second monthly update for KISS. This post will be
quite a long one, we've seen some nice changes this month and some
great work by the Community.

KISS turned one year old between this blog post and the last! A
whole year has gone by since I first started working on this
distribution. Crazy!

Thank you to everyone involved.

- Dylan


KISS TURNS ONE YEAR OLD

It has now been a year since I started working on KISS. The idea for
the package format/system came to me in a dream the night before and
I started work the next morning.

Here's the first commit to the project:

+-------------------------------------------------+
| commit 0cda243d535f11e7c26b9182bc63e425deb5ba45 |
| Author: Dylan Araps <dylan.araps@gmail.com>     |
| Date:   Thu May 9 09:46:50 2019 +0300           |
|                                                 |
|       new package manager experiment            |
+-------------------------------------------------+

While KISS just turned a year old, the first install to hardware and
the swap from developing something theoretical to something "real"
happened only 3-4 months later (mid August).

A lot of work went into the development of the distribution, here's
some numbers (taken from Git) to summarise the year. Once again...
A huge thank you to those involved..

+--------------------------------------+
|          Summary of commits          |
+-----------------------+--------------+
| Official repositories | 2855 commits |
| Community repository  | 1416 commits |
| Package manager       | 1115 commits |
| Init base             |  181 commits |
| Website               | 1883 commits |
+-----------------------+--------------+
| Total:                | 7480 commits |
+-----------------------+--------------+

The official repositories have actually shrunk in size over time as
we've painstakingly reduced the requirements for the base system.
Over this past year, we've dropped file, fakeroot, rsync, autoconf,
automake, libtool, atk-bridge-fake, ca-certificates (certs are
handled differently) and many more.

Over this year I expect we'll be able to drop Python 2 and GTK+2.
These are only required by Firefox during the build process (not at
runtime). Python 2 is still required for the build system and GTK+2
for Flash support (can't _yet_ be disabled...).

+-----------------------+--------------+
|       Summary of total packages      |
+-----------------------+--------------+
| Official repositories | 164 packages |
| Community repository  | 299 packages |
| User repositories     | ??? packages |
+-----------------------+--------------+
| Total:                | 463 packages |
+-----------------------+--------------+

The distribution has seen a heap of contributions from people all
over the globe. The total number of contributors for the year is 64!
As for how many users KISS has... I have no idea!

No data is collected whatsoever (and it will forever stay this way).
I'll never know traffic statistics for this website either! I can't
be running around the net with Ublock Origin/Umatrix while at the
same time tracking users. It's not right!

+--------------------------------------------------------------+
|                   Summary of contributors                    |
+---------+----------------------------------------------------+
| Commits | Author                                             |
+---------+----------------------------------------------------+
|    6272 | Dylan Araps                                        |
|     299 | Muhammad Herdiansyah                               |
|     274 | Adam Schaefers                                     |
|      90 | Cem Keylan                                         |
|         |                                                    |
|   25-50 | Kris Heck, Dilyn Corner, Aaron G, Tadeo Kondrak,   |
|         | Camille, Cédric, Owen Rafferty, Sebastian Ertz     |
|         |                                                    |
|   10-25 | tristelune1, ax, Adam Laughlin,                    |
|         | Eudald Gubert i Roldan, Timothy Robert, Bednarzyk, |
|         | Artem Kobets, Martin Schmidt, Kiëd Llaentenn,      |
|         | Cliford Sab                                        |
|         |                                                    |
|    3-10 | periish, penguin-ff, Will Eccles,                  |
|         | Anirudh Oppiliappan, Noah Altunian, James Davies,  |
|         | Stefan Fransen, djt3, Toby Merz.                   |
|         | Niko Tidar Lantang Perkasa, Matthew W,             |
|         | Jonathan Dahan, Bridouz, sdsddsd1, dzove855,       |
|         | Michael Ablassmeier, Ethan Sommer, illiliti,       |
|         | electimon, Phillip L, Jack Clarke                  |
|         |                                                    |
|       2 | p410n3, logo4poop, fanboimsft, bit6tream,          |
|         | Kim Ausloos, Devon Morris, Ben Cornett,            |
|         | 6ZMQa2ND2KwrX2Z8JZcRzyQgDjP38g8V2BdX7NX            |
|         |                                                    |
|       1 | spiralofhope, dithpri, Ross, Pedro Alves,          |
|         | Notnaton, Michael Czigler, Luca, Jordan Dalcq,     |
|         | Ishimoto Shinobu, Himmalerin, Dzogovic Vehbo,      |
|         | Caio Novais, Andrew Titmuss                        |
|         |                                                    |
+---------+----------------------------------------------------+


WEBSITE

The website layout has been slightly changed to add a navigational
sidebar which follows you as you scroll. The top navigation links
became too messy as new pages were been added this month.

A "Community" page has been added to document and list notable
projects, repositories and software by members of the community.

    - https://k1sslinux.org/community

A "Ports" page has been added to make known the existence of
various ports of KISS to other architectures.

    - https://k1sslinux.org/ports

A "Package Manager" page has been added to document the package
manager, how its configured, its dependencies, etc. This will grow
over the next month to include a FAQ and more information.

    - https://k1sslinux.org/package-manager

A new 404 page was added, new screenshots were added and countless
minor changes have been made throughout the website as well.


NEW BUILD SYSTEM

A user of KISS has made an incredible donation. An entire system!
This system will be put to use as a build machine and will allow me
to spend less time building packages and more time working on other
things.

The system is currently in transit and is set to arrive on the 2nd
of June (though I have a feeling it will get here sooner).

The specifications are as follows:

    1) Gygabyte Aorus Pro z390 mITX in a NZXT case
    2) Intel 9900K cpu (8 core /16 threads)
    3) 32gb 3000mhz ram
    4) 240mm NZXT cpu water cooler
    5) 2 x 500gb Samsung m2 nvme 970 Pros
    6) AMD R9 Nano

I can't even begin to thank this person enough for their contribution.
It's such an amazing gesture and I will never forget it. The system
even comes pre-installed with KISS!


PACKAGE MANAGER

This month saw multiple package manager releases (including a 2.0
bump). This includes bug fixes, features, portability changes, etc.
This comes to a total of 200~ or so commits for this month.

All known portability issues have been resolved. The package manager
should now be usable with any POSIX compliant coreutils, tar, etc.
Thanks to Ethan Sommer, Michael Forney, Crestwave, illiliti and
others.

* The package manager can now be used entirely rootless. Simply set
  '$KISS_ROOT' to somewhere writable by your user and packages will
  be installed to this directory instead of the default '/'.

  '$KISS_ROOT/usr/bin' can be added to '$PATH' to make the user
  installed software transparently usable.

* Privilege escalation (for installation/removal) now uses a strict
  environment instead of a partially inherited one. This prevents
  unwanted environment leakage from user to user.

* Post installation messages are now logged (to a file) and queued by
  the package manager. The output from all post-install hooks is
  displayed right at the end to prevent it being lost in the endless
  scroll of terminal output.

* Tar commands have been reduced to the simplest (and most portable)
  usage possible. The package manager now uses only 'tar cf',
  'tar tf' and 'tar xf'.

  The tar command has no real standard and the arguments we were
  using weren't portable. POSIX does specify 'pax' though it isn't in
  wide use (at least on Linux based systems)..

  The last blocker was '--strip-components 1' which proved tricky to
  get rid of. The package manager now includes a shell implementation
  of this which does the equivalent post-extraction.

* All usage of 'readelf' (non-portable) has been replaced with POSIX
  'od'. The readelf command was used to identify the ELF type so that
  we can properly strip each binary. We now use 'od' to read the
  first N bytes of the file to identify the ELF type from the ELF
  headers ourselves.

  Other distributions typically use the 'file' command for this
  though I'd much rather we use the tools we already have at our
  disposal (instead of adding another dependency and package to the
  repositories).

* All usage of 'stat' (non-portable) has been replaced with 'ls -ld'.
  Using ls here is fine as POSIX specifies the output, we can
  properly split it into fields and what we extract isn't subject to
  the usual disconnect between real/display representation of the
  information (file names).

* All usage of 'readlink' (non-portable) has been replaced with a
  simple 'cd -P'. All we need to resolve is the path symlink so we
  can avoid resolving the file symlink entirely.

* All usage of 'install' has been replaced with basic POSIX
  utilities. While this command isn't POSIX, it is a part of the BSD
  standard. Despite this fact, if we can limit ourselves to POSIX
  we should make efforts to do so.

* All usage of '--strip-unneeded' has been dropped from 'strip'. While
  strip has a POSIX specification, it doesn't specify any arguments
  at all. This makes our strip usage compatible with the following
  implementations: binutils, elfutils, elftoolchain, llvm, etc.

* Our sha256 checksum generation has been made as portable as
  possible. To my surprise, there's no standard for this command at
  all. Instead, a function has been created which wraps around 5 or
  so sha256 generation tools and "unifies" their output. Support
  includes sha256sum, shasum, sha256, openssl and digest.

* Build files now receive a second argument ('$2') which contains the
  version of the package to be built.

* Binary stripping is now more aggressive thanks to research to
  discern the maximum we can strip from each type of ELF file without
  causing any breakages. You should see smaller binaries as a result.

* Added support for uncompressed tar archives (.tar) to package
  sources. I haven't come across this in the wild yet though it was
  only a one line addition.

* Added support for packages without sources (what I call
  meta-packages). This allows users to create "empty" packages and
  opens up more use-cases for system management.

* Added Git submodule support to repositories. Users can now create
  "meta-repositories" containing multiple repositories.
  Example: https://github.com/CarbsLinux/outsource

* Added LZMA and LZIP support to package sources and built package
  tarballs.

* Added support for .txz files to package sources.

* Added '$KISS_NOPROMPT' (set to '1' to enable) to automatically say
  "yes" to all package manager prompts. This is handy for scripting
  purposes.

* Added '$KISS_COLOR' (set to '0' to disable) to turn off colors in
  the package manager's output.

* Added '$KISS_TMPDIR' to allow the build, extraction and package
  cache directory locations to be moved. The main use-case for this
  is to do builds in memory (for a speed up).

* Added a default 'post-build' hook which will run when '$KISS_HOOK'
  is unset. This default removes various unneeded directories from
  packages.

* The dependencies on 'ldd' and 'strip' have been made optional. If
  absent, the dependency fixer and binary stripping will be disabled
  respectively.

* kiss-outdated has seen changes to make usage easier for those
  maintaining their own repositories. It will now use 'KISS_PATH'
  instead of the installed package list.

* kiss-chroot will now automatically mount efivars if available.

* kiss-chbuild will now verify the checksums of the downloaded
  tarball. A few bugs were fixed as well.

* kiss-size and other kiss-* utilities were rewritten to be POSIX
  compliant.

* The package manager will no longer automatically use GNU grep if
  available. Instead, the alternatives system should be used.
  (kiss a gnugrep /usr/bin/grep)

* '$KISS_ROOT' will now use the host's package manager cache. Cached
  package binary tarballs, cached sources, etc are now directly
  available in "sub-roots" instead of them using fresh ones.


INIT BASE

The init base has seen a large number of bug fixes, changes and
portability adjustments. For those unaware, KISS optionally includes
a package called 'baseinit' which acts as a portable base between
init systems.

This project is very much Linux-only for obvious reasons. Portability
here means a slightly different thing, the ability to use any init
system, service manager, device manager, coreutils, etc, etc.

* Removed usage of the 'mountpoint' command and replaced it with a
  shell implementation based around '/proc/mounts'.

* All init messages will now appear in 'dmesg'. The boot process is
  usually too quick for the messages to be read (1s on this machine).

* Filesystems which are already mounted prior to boot (by an
  initramfs for example) will now be remounted (with our options)
  instead of ignored.

* The seeding of random has been rewritten from scratch with a long
  rationale and behind the implementation. There's a lot of
  conflicting information regarding this and it's difficult to get
  right (despite being quite simple in the end).

* The boot process should now be faster for users of eudev as we now
  do less during boot.

* Encryption support has been removed from the baseinit project and
  is now maintained by the Community. I don't personally use
  encryption (for my system drives) so it was difficult for me to
  maintain the code, ensure it works and most importantly... test it.

  It's now in very good hands. The user in charge cares deeply about
  the boot process and has contributed many of the fixes I have
  written in this post today.

  This same user also maintains 'tinyramfs' which is a portable
  initramfs generator written in POSIX shell.

  See: https://github.com/illiliti/kiss-encryption
       https://github.com/illiliti/tinyramfs

* Packages now have the ability to hook into the boot process. This
  allows the split encryption support to work and I hope to see
  similar projects pop up in the future.

* The 'rc.conf' file is now read as early as possible in the boot
  process. This allows for custom PATHs to be set among other things.


FIREFOX

The 'firefox' and 'firefox-bin' packages now follow the regular
releases instead of the ESR (Extended Support Releases) The
'firefox-esr' and 'firefox-esr-bin' packages have been added to
track Firefox ESR in addition.

Users now have a choice between the two Firefox versions. Latest
with new changes every month and the ESR with new changes once a
year + monthly security fixes.

Our regular Firefox package now requires only a single patch! The
patches to fix various musl issues were accepted upstream thanks to
the work by Michael Forney.


DESKTOP ENVIRONMENTS

Two desktop environments (XFCE4 and KDE) have been ported to KISS by
members of the Community. This is a huge effort and it's really nice
to see projects of this scale popping up.

Source: https://github.com/periish/kiss-xfce4
Source: https://github.com/dilyn-corner/KISS-kde


REPOSITORIES

This is the full Git log with merge commits removed for the official
repositories and Community. This is simply 'git shortlog' from two
Git repositories merged together.

For a much better look at the state of package versions and for what
is available in the repositories, see:

- Official:  https://repology.org/repository/kiss_main
- Community: https://repology.org/repository/kiss_community

---

    Dylan Araps (171):
          kiss: bump to 1.12.2
          eiwd: Add runit service
          meson: bump to 0.54.1
          xf86-video-intel: Bump to latest commit
          linux-headers: Drop rsync
          git: install manual pages
          xfsprogs: bump to 5.6.0
          xfsprogs: Reduce long line
          bzip2: Revert to prior build method
          st: bump to 0.8.3
          doas: Install config with 644
          gtk+3: bump to 3.24.20
          tzdata: Fix sbindir
          opendoas: Use 600 for config file
          opendoas: bump rel
          dhcpcd: Fix bug with privsep value
          cmake: bump to 3.17.2
          baseinit: bump to 0.7.4
          ccache: Drop clang (for now)
          kiss: bump to 1.12.3
          curl: bump to 7.70.0
          bison: bump to 3.5.91
          nodejs: Bump to 14.1.0
          mesa: bump to 20.0.6
          bison: revert to previous version (was beta)
          gcc [testing]: Latest snapshot
          rust: Move latest to testing
          cbindgen: bump to 0.14.2
          gcc: Fix broken LTO symlink
          gtk+3: Minor fixes
          various: Add linux-headers (make) dependencies.
          openssh: Clean up post-install file
          rust: Fix white-space
          e2fsprogs: Fix depends
          various: Fix trailing white-space
          busybox: Drop halt as it is not portable across inits
          xkeyboard-config: Fix checksums. Closes #186
          readme: Fix broken links
          vim: Disable nls
          ffmpeg: various changes.
          llvm: Remove leftover shell
          firefox-esr: New package at 68.8.0esr
          kiss: bump to 1.13.0
          firefox: bump to 76.0
          rust: bump to 1.43.0
          rust: move from testing
          nodejs: bump to 14.2.0
          firefox: Simpler build process
          firefox: further tweaks
          firefox: drop V=0
          gcc [testing]: bump to latest snapshot
          firefox: Disable DOH
          firefox-esr-bin: New package at 68.8.0esr
          firefox-bin: bump to 76.0
          firefox: build tweaks
          libogg: Fix sources
          libvorbis: Fix source.
          kiss: bump to 1.13.1
          kiss: bump to 1.13.2
          plzip: new package at 1.8
          kiss: bump to 1.13.3
          gcc: bump to 10.1.0
          testing: Move gcc to core
          kiss: bump to 1.13.4
          kiss: bimp to 1.13.5
          sudo: Disable nls
          dhcpcd: Move files to /usr/lib/dhcpcd
          rust: bump to 1.43.1
          git: Install files to /usr/lib/git-core
          sudo: minor fixes
          libinput: Install files to /usr/lib/libinput
          gcc: minor tweaks
          clang: Fix libexec directory location
          openssh: Fix libexec location
          gnupg1: Fix libexec location
          firefox: bump to 76.0.1
          gcc: Fix LTO location
          mesa: Drop -fcommon
          bison: bump to 3.6
          xf86-video-intel: Drop -fcommon
          firefox-bin: bump to 76.0.1
          freetype-harfbuzz: bump to 2.10.2+2.6.5
          bison: bump to 3.6.1
          binutils: Use /lib
          gcc: Skip bootstrap if we are able
          various: Delete info pages.
          libwebp: Fix source
          gtk+3: Remove unneeded files
          glib,meson: Remove unneeded files
          freetype-harfbuzz: bump to 2.10.2+2.6.6
          baselayout: Drop unneeded depends
          sudo: bump to 1.9.0
          kiss: bump to 2.0.0
          kiss: bump to 2.0.1
          kiss: bump to 2.0.2
          kiss: bump to 2.0.3
          opendoas: Fix config
          xfsprogs: Fix build when bash isn't installed.
          python: bump to 3.8.3
          mesa: bump to 20.0.7
          libressl: bump to 3.1.1
          git: bump rel for libressl
          various: Drop unneeded rm
          glib: Remove unneeded rm
          meson: drop unneeded rm
          gtk+3: Remove unneeded rm
          meson: bump to 0.54.2
          gcc: unhardcode version
          curl: drop duplicate configure flag
          libressl: Remove useless comment from certdata.sh
          libressl: Fix checksums. Closes #191
          grub: Drop non-posix -a flag
          busybox: Move mkdir to build file
          kiss: bump to 2.0.5
          various: Minor fixes
          bison: bump to 3.6.2
          libressl: Better curl command
          rust: Update for libressl 3.1.1
          libXext: Fix depends
          kiss: bump to 2.0.6
          opendoas: Update config file
          sudo: Added post-install message
          baseinit: bump to 1.0
          busybox: Use sha256 as default password algo.
          kiss: bump to 2.0.7
          baseinit: bump to 1.0.1'
          baseinit: Added post-install message
          baseinit: bump to 1.0.2
          xf86-input-libinput: bump to 0.30.0
          musl: Add getent
          nodejs: bump to 14.3.0
          glib: bump to 2.64.3
          util-linux: bump to 2.35.2
          libressl: bump to 3.1.2
          ffmpeg: bump to 4.2.3
          zstd: bump to 1.4.5
          sqlite: bump to 3.32.0
          kiss: bump to 2.1.0
          pkgconf: bump to 1.7.0
          kiss: bump to 2.1.1
          python: Add back 2to3
          kiss: bump to 2.1.2
          libXrandr: Fix depends
          imagemagick: bump to 7.0.10-8
          imagemagick: bump to 7.0.10-9
          libtool: Fix depends
          giblib: Fix checksums. Closes #712
          imagemagick: bump to 7.0.10-10
          icu: bump to 67.1
          cython: bump to 0.29.17
          xwallpaper: bump to 0.6.5
          transmission: Renamed from -daemon. Closes #695
          weechat,torsocks,transmission-daemon*: removals
          youtube-dl: bump to 2020.05.03
          openbox: Move files to /usr/lib/openbox
          youtube-dl: bump to 2020.05.08
          imagemagick: bump to 7.0.10-11
          harfbuzz-icu: bump to 2.6.6
          neovim: Fix build. Closes #803
          various: bumps for libressl
          ethtool: bump to 5.6
          transmission: bump to 3.00
          sfeed: bump to 0.9.17
          libmupdf: bump to 1.17.0
          imagemagick: bump to 7.0.10-12
          zathura-pdf-mupdf: Fix build with mupdf 1.17
          imagemagick: bump to 7.0.10-13
          cython: bump to 0.29.18
          cython: bump to 0.29.19
          imagemagick: bump to 7.0.10-14

    6ZMQa2ND2KwrX2Z8JZcRzyQgDjP38g8V2BdX7NX (2):
          torsocks: new package at 2.3.0
          weechat: new package at 2.8

    Aaron G (3):
          socat: bump release (rebuild for libressl)
          oed: update to 6.7
          oksh: new package at 6.7

    Adam Schaefers (5):
          readline: fix linking issue, closes #734
          nettle: bump to 3.6
          nettle: remove autoconf automake depends
          libcap: bump to 2.34
          mksh: bump to R59b

    Artem Kobets (2):
          xmlsec1: update to 1.2.30
          xmlsec1: bump release

    Bridouz (1):
          syncthing: update to 1.4.2

    Camille (11):
          fish: update to version 3.1.2
          freerdp: update to 2.0.0
          slop: use included glm
          pcre2: update to 10.35
          freerdp: update to 2.1.0
          caddy: new package at 2.0.0
          lilo: new package at 24.2
          lilo: some fixes from gentoo
          goimport: new package at git
          golangci-lint-bin: new package at 1.27.0
          caddy: fix service file

    Cem Keylan (17):
          bkeymaps: add colemak
          webkit2gtk: bump release number
          libps: bump release number
          boost: bump to 1.73.0
          sinit: bump to 1.1
          webkit2gtk: full fledged build
          mpd-libmpdclient: fix circular dependency
          gstreamer gst-plugins: add missing dependencies
          9base: prefix change, source change, and fixes
          sbase: do not unlink tar
          libedit: add new package at 20191231-3.1
          glib-networking: bump release number
          ruby: bump release number
          sbase: apply patch for dashless tar usage
          distcc: add new package at 3.3.3
          distcc: docstring
          boost: add missing linux-headers dependency

    Cédric (10):
          zathura: file dependency added
          msmtp: update to version 1.8.10
          poppler: update to version 0.88.0:w
          poppler: option DENABLE-CPP=ON for cups-filters
          qpdf: new package at 10.0.1
          ghostscript: new package at version 9.52
          cups: new package at 2.3.3
          cups-filters: new package at 1.27.4
          cups-filters: dependency dejavu-ttf removed
          zathura: fix issue 838

    Devon Morris (2):
          zsh: new package at 5.8
          mit-scheme: new package at 10.1.10

    Dilyn Corner (7):
          qt5-declarative requires python to make
          falkon: Fix issue with qmake
          extra-cmake-modules bumped to 5.70.0
          lz4 added at 1.9.2
          qt5-webengine build fix for GCC 10
          qt5{-webengine} updated deps
          Falkon fix v2

    Eudald Gubert i Roldan (3):
          ledger: bump to 3.2.0
          dejavu-ttf: new package at 2.37
          ledger: bump to 3.2.1

    Himmalerin (1):
          mercurial: new package at 5.4

    James Davies (1):
          Update qemu

    Jonathan Dahan (1):
          osh: bump to 0.8.pre4

    Kiëd Llaentenn (3):
          fd: update to v8.0.0
          tokei: update to v11.1.1
          ripgrep: update v12.0.1 to v12.1.0

    Kris Heck (4):
          wireguard-tools: bump to 1.0.20200510
          tor: bump release for libressl
          tor: bump to 0.4.3.5
          wireguard-tools: bump to 1.0.20200513

    M. Herdiansyah (10):
          picom: update to 8
          tmux: update to 3.1a
          json-c: update to 0.14
          cryptsetup: update to 2.3.2
          irssi: bump rel
          go: update to 1.14.3
          tmux: update to 3.1b
          unifont: update to 13.0.02
          libarchive: update to 3.4.3
          libexif: update to 0.6.22

    Michael Ablassmeier (1):
          entr: bump version to 4.5

    Michael Czigler (1):
          scroll: new package at 0.1

    Timothy Robert Bednarzyk (3):
          gocloc: new package at 0.3.3
          ccls: bump to version 20190823.6
          w3m: bump release (rebuild for libressl)

    bit6tream (2):
          bitfetch: new package at 2.3
          bitfetch: bump to 3.0

    djt3 (6):
          curlpp: new package at 0.8.1
          tuitube: new package at 0.1.2
          tuitube: change to git release
          tuitube: bump relative version
          tuitube: bump relative version to 3
          tuitube: bump relative version to 4

    illiliti (1):
          kiss-encryption: new package at git 1

    penguin-ff (3):
          cyrus-sasl: bump release for libressl
          mutt: update to 1.14.1
          cyrus-sasl: install to /usr/bin

    periish (2):
          Remove package wmutils-core, create package wmutils.
          nss: update to 3.5.1

    sdsddsd1 (2):
          wyeb: new version at git
          sdl2: add missing linux-headers dependency


---

Until next time,

Dylan