This document contains a regularly replenishing list of stal/IX and conventional Linux differences.
“UNIX is simple and coherent…” - Dennis Ritchie
“GNU’s Not UNIX” - Richard Stallman
stal/IX is not UNIX or Linux in the usual sense of these terms.
stal/IX - an attempt to rethink some fundamentals without touching Linux API and ABI.
One of the stal/IX goals - from the very beginning to build the system in such a way that it’s possible to understand how it works, and not only use it conveniently.
https://wiki.musl-libc.org/alternatives.html
https://github.com/illiliti/libudev-zero
https://busybox.net/tinyutils.html
https://connortumbleson.com/2022/11/28/open-source-saying-no/
https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
FS.md
Overall, the file system will be familiar to those who know Nix/Guix. Atomic updates, multi-versioning - all here!
https://blog.darknedgy.net/technology/2020/05/02/0/
https://www.phoronix.com/news/systemd-Git-Stats-2022
stal/IX currently uses runit as the most lightweight solution, perhaps, this will change in the future.
https://drewdevault.com/2020/09/25/A-story-of-two-libcs.html
https://codebrowser.dev/glibc/glibc/nptl/pthread_cancel.c.html#99
https://www.phoronix.com/news/Glibc-2.36-EAC-Problems
https://ariadne.space/2021/12/29/glibc-is-still-not-y2038-compliant-by-default/
Glibc does not fully support static linking. stal/IX uses musl for internal needs, and allows to build custom soft with an arbitrary libc on a choice.
All files on the system are IX user-owned, and all package management is done on his behalf.
Consequence - there is not a single suid binary on the system. Sudo - the thin layer over local ssh daemon, for privilege escalation.
Every process different from init has a parent different from init. All processes that fail to meet this requirement are killed by a specially dedicated background process. To manage services used runit, encouraging this behavior.
https://github.com/swaywm/sway/issues/6828
https://github.com/stal-ix/ix/blob/main/pkgs/bin/sched/staleprocs/staleprocs.sh
https://unix.stackexchange.com/questions/250153/what-is-a-subreaper-process
No ld.so!
http://ewontfix.com/18/
https://gavinhoward.com/2021/10/static-linking-considered-harmful-considered-harmful/
https://lore.kernel.org/lkml/CAHk-=whs8QZf3YnifdLv57+FhBi5_WeNTG1B-suOES=RcUSmQg@mail.gmail.com/
https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking
https://habr.com/ru/post/451208
https://lobste.rs/s/adr60v/single_binary_executable_packages
https://nullprogram.com/blog/2018/05/27/
https://drewdevault.com/2021/02/02/Anti-Wayland-horseshit.html
X is dying, and to maintain the efficiency of the IX package base running with X means doing work that one day will have to be thrown out. We don’t have enough resources for that.
No
https://askubuntu.com/questions/866161/setting-path-variable-in-etc-environment-vs-profile
Every user session must start from the login shell, even in ssh daemon.
Patch for dropbear to launch all processes, including non-interactive ones, with login shell.
All packages are compiled as if host platform != target platform, thus, we achieve that the package base is built for all platforms most of the time. We have a cross-compiling CI for aarch64 and riscv!
The existing mechanisms for associating programs to file types are complex, fragile, and difficult to integrate into IX realms. https://wiki.archlinux.org/title/XDG_MIME_Applications
Therefore, stal/IX has its own mechanism for linking programs to file types. It is based on the xdg-open-dispatch script, and changes in upstream to redirect their mechanisms to xdg-open, patch for epiphany WEB browser.