logo Gitea | Github | Atom feed | Donate using Liberapay

Size in loc of common software

Bloat is everywhere, in 2018 I started my journey on debloating my digital life, so far I mostly use linux as my main OS (the mostly is due to uni stuff I don’t want and/or have time to deal with), I don’t use a desktop environment, got rid of systemd, pulseaudio and polkit just to name a few. I could go on about how I debloated most of my computing life but that is not the goal of this article, that is I recently started to wonder: how much bloat is really there?

In order to answer that question I rolled up my sleeves and with the mighty power of post-its, git and scc I cloned the repositories of many common programs in order to check their bloat suckless style, with lines of code. Let’s get to the data.

UPDATE: I changed the method for counting lines of code, that is I changed utility from scc to cloc. The reason behind this is that cloc allows to exclude a list of languages from the code count, that way I can count only the lines that matter excluding stuff like documentation and so on. So entries marked with “x” mean that they were re-counted using the following command (that’s a big command):

$ cloc --exclude-lang='make,m4,YAML,SVG,CMake,DTD,Markdown,CSS,\
Meson,diff,Dockerfile,NAnt script,HTML,TeX,PO File,reStructuredText,\
vim script,AsciiDoc'

Init systems

Name loc
systemd 566K
OpenRC 14K
s6 10K
runit 6.2K
sysVinit 8.7K

Logging daemons

Technically systemd includes its own logging daemon but here is omitted.

Name loc
rsyslog 152K
socklog 3.7K
metalog 1.9K

Network

Generic network management programs.

Name loc
wpa_supplicant 529K
kea 454K
NetworkManager 413K
ModemManager 192K
connman 98K
iwd 85K
dhcpcd 38K

Music players

Name loc
mpd 93K
cmus 40K
mocp 35K
ncmpcpp 23K
herrie 7.1K

Cron daemons

Name loc
fcron 12K
cronie 7.5K
dcron 2.1K
scron 1.0K
tinycron 117

Text editors

Don’t tell me you saw that one coming.

Name loc
vim 667K
neovim 550K
vis 32K
kakoune 30K
micro 27K
nano 16K

Build systems

Name loc
cmake 774K
tup 243K
meson 68K
GNU make 31K
ninja 18K
samurai 3.3K

Shells (POSIX or not)

Name loc
bash 161K
fish 157K
zsh 115K
ksh93 72K
tcsh 65K
mksh 30K
ash 12K
dash 13K

Boot loaders/managers

Name loc
CloverBoot 1.7M
GRUB 281K
syslinux 222K
reEFInd 27K
LILO 24K

Display servers

Dependencies are counted two levels “deep” excluding duplicates, from the alpine linux x86_64 package repositories.
U: Not built, protocol code not generated B: Code generated

Name loc dependencies
xorg-server 422K 44
- - -
wayland +
wayland-protocols +
wlroots U: 97K, B:268K 27

SSH servers/clients

Name loc
dropbear 101K
OpenSSH 123K
TinySSH 13K

Terminal multiplexers

Name loc
tmux 57K
GNU screen 32K
dvtm 4.1K

Terminal emulators

Name loc
kitty 174K
alacritty 18K
wayst 31K
havoc 10K
wterm 10K
st 4.3K

Kernels

Name loc
netbsd 32M
linux 19M
FreeBSD 16M
OpenBSD 15M
DragonflyBSD 887K

Permission managers

Name loc
sudo 140K
polkit 22K
OpenDoas 2.8K
PAM 60K

Compilers

Name loc
gcc 9.0M
llvm 8.0M
zig 2.1M
rust 801K
tcc 93K

Torrent clients

Name loc
qBittorrent 743K
transmission 282K
deluge 118K
rtorrent 22K

Web browsers

Does not include libraries, only the main repos.

Name loc
chromium too large
Firefox 19M
SeaMonkey 17M
Webkit 12M
qutebrowser 92K
min 20K
vimb 9.4K
Lynx 177K
links 166K
dillo 66K
badwolf 1.8K

Window managers

Name loc
awesome 65K
i3 44K
openbox 40K
bspwm 12K
2bwm 3.3K
dwm 2.5K

Audio systems

ALSA

Name loc
alsa-firmware 133K
alsa-lib 93K
alsa-tools 43K
alsa-utils 36K
alsa-plugins 12K
alsa-oss 4.0K

Wayland compositors

Name loc
weston 117K
sway 42K
wayfire 27K
hikari 15K
river 5.9K

Application launchers

Name loc
rofi 20K
bemenu 5.3K
wofi 3.6K
nwg-launchers 2.2K
dmenu 1.2K

Device managers

NOTE: mdev is only one source file, so loc count doesn’t include anything but that file.

Name loc
eudev 27K
mdevd 1.6K
smdev 697
mdev 751

Initramfs generators

Name loc
dracut 28K
tinyramfs 448

Code counters

Name loc
scc 41K
tokei 5.7K

Package managers

Name loc
apt 98K
xbps 40K
pacman 28K
apk 17K
kiss 1.0K

Webservers

Name loc
apache 419K
nginx 144K
hiawatha 105K
lighttpd 70K
caddy 27K

Syncronization and backup programs

Name loc
borg 86K
syncthing 129K
git-annex 77K
rsync 51K
restic 43K
casync 31K

Others

Stuff that doesn’t fit any other category (for now)

Name loc
openssl 642K
bluez 373K
libressl 374K
elogind 137K
dbus 115K
tint2 33K
lowdown 15K
pass 2.8K