theme: override: footer: style: template center: "Introduction to footer styling" right: "{current_slide} / {total_slides}"
Open Source and Linux Desktop
Open Source for your "Computers"
About Me - Shawn Wang
-
3 years EFI in Quanta Inc.
-
5 years OEM / Infra in Canonial
-
6 years distro in EasyStack
-
KaLUG - Kaohsiung Linux User Group
Open Source Era
https://gitnux.org/open-source-software-statistics/
- 78% of businesses are using open-source software.
- Over 70% of developers said that working on open-source software projects helped improve their skills.
- More than 90% of developers rely on open-source components in their proprietary applications.
- 96% of applications have at least one open-source component.
- Open-source maintains a 33% lower organizational cost in the long run compared to proprietary software.
My opinions how open source dominate the world:
- linux / container / ...
- git / github / ...
- big company join - google / M$ / Apple / Facebook / IBM / ...
A World Without Linux
Linux Foundation 2015
By W3Cook's analysis of Alexa's data, 96.3 percent of the top 1 million web servers are running Linux. The remainder is split between Windows, 1.9 percent, and FreeBSD, 1.8 percent. (2015)
recent security issues
- xz, ssh backdoor
- Backdoor found in widely used Linux utility targets encrypted SSH connections
- rust, windows cmd
- https://www.theregister.com/2024/04/10/rust_critical_vulnerability_windows/
Why Open Source ?
- price
- not just customize, you can patch / fork it
- even leak of documents, go for source code directly
- your own upgrade strategy
- easy to get packages / repos
personal or small company
- as career records
- https://openprofile.dev/ / github / ...
- let people help you improve your code
- public repos can have more free resource (CI/CD / pages / repos)
big company examples
- RHEL / Canonical - support
- gitlab / mattermost - core services
- meta: systemd - not core services
- mysql: Michael Widenius https://www.youtube.com/watch?v=krcKkiKBKms
What kind of Open Source good for you?
The Cathedral and the Bazaar (1999)
Linux has a little over 4% (actually 4.03%) of the desktop OS market.
https://gs.statcounter.com/os-market-share/desktop/worldwide
- Win
- Mac OS / IOS
- Linux / Android / ChromeOS
- Other - BSD / ...
Microsoft has a majority market share
https://bugs.launchpad.net/bugs/1
-
2004 created
-
2013 marked fixed
-
Microsoft ♥ Linux https://www.microsoft.com/en-us/windows-server/blog/2015/05/06/microsoft-loves-linux/
Why has Linux failed in dominating desktops?
https://en.wikipedia.org/wiki/Criticism_of_desktop_Linux
-
Choice and fragmentation
- upwards of 300 distributions
-
Third-party application development
-
(*) Cross-device like ipad + MacOS / android + chromebook
-
Ubuntu Edge (2013) / ubuntu touch
- ubuntu gnome -> unity -> unity8 (17 failed) -> gnome
Why Linux is good as your PC OS?
- Rich Open Source resources - linux / containers
- Network native
- ssh / tunnel
Not so good about
- Many application like office
- cloud version or android version
- chinese input
others
- Windows: WSL
- Mac M1/M2/M3: Asahi Linux
Linux kernel
- modules
- eBPF
- rust for linux
- abi (application binary interface)
- https://opensource.com/article/22/12/linux-abi
- LTS - 6.6 / 6.1 / 5.15 / 5.10 / 5.4 / 4.19
- dkms
- RHEL kernel
- 7.x 3.10 2014 (kernel-3.10.0-1160)
- 8.x 4.18 2019
- 9.x 5.14 2022
Linux Distro - packages and dependencies
- binary package / repos
- debian / Ubuntu (deb) / termux
- REHL / CentOS
- alpine
- source based
- gentoo
- arch
- Declarative builds and deployments.
- Nix
- guix
- upstream packages
RHEL
- Fedora / CentOS Stream / RHEL
- Fedora - Rawhide / half year release, one year maintain
- CentOS Stream - rolling preview
- RHEL - 10 year maintain
- others
- RockyLinux / AlmaLinux
- major / minor release
debian / ubuntu
- debian
- unstable
- testing
- stable (sid) - LTS 5 years , ELTS 10 years
ubuntu LTS
- 2304 / 2310 / 2404 (LTS) / 2410 / 2504
Dependency hell
- binary packages
- library dependency
Nix
- Nix is a purely functional package manager.
- /nix/store/b6gvzjyb2pg0kjfwrjmg1vfhh54ad73z-firefox-33.1/
Nix pkgs
- Multiple versions
- Complete dependencies
- Multi-user support
- Atomic upgrades and rollbacks
- Garbage collection
- Functional package language
- Transparent source/binary deployment
- Nix Packages collection
- Portability
NixOS
- Declarative system configuration model
- Reliable upgrades
- Atomic upgrades
- Rollbacks
- Reproducible system configurations
- Safe to test changes
Linux container
- LXC (machine container)
- docker / podman
- flatpak / snap
GNU/Linux
GNU / Richard Stallman
- shell
- libc
- gcc
- gnome
- hurd (*)
freedesktop
- Xorg, Wayland Protocol, PulseAudio are all freedesktop project. Mesa a big part of Desktop Linux is also Freedesktop project.
Systemd
-
Linux is not Unix
-
not just pid 0
-
journalctl / udev / dbus
-
adopted by major distros
- fedora / debian / ubuntu / arch / nix
-
non-systemd
- android / ChromeOS / alpine / ...
Libc
- glibc - most linux distro
- musl - apline
- bionic (android)
- BSD-licensed
- Small size
- speed
LTS / release schedule
- Ubuntu 5 years / 12+
- RHEL 10 year
Debian Developer
- Debian Organization
- gpg
- gpg party
There are basically two options:
- Debian Maintainer (DM): This is the first step – as DM you can upload your own packages to the Debian archive (with some restrictions)
- Debian Developer (DD): This is the traditional full membership role in Debian.
package vs image
- deb
- rpm
- nix
- snap
PackageKit
immutable / atomic
- container (OCI) image
- ostree
- rpm-ostree
- systemd
- portable services
- snap - squashfs
version & release cycle
Gui
gnome
- GPL
- gtk
kde
- qt
- KDE Slimbook
- Plasma 6 (QT6)
- Plasma mobile
- KDE neon is a Linux distribution built on top of the latest Ubuntu LTS release
Cosmic
- created by system76
- rust
Andriod Desktop Mode
- tablet
- foldable devices
others
- samsung dex
- motorola ready for
console / cli / tui
old school but fashion and cool
- light
- remotable / scriptable / ssh
- colorful / auto-complete
examples
- fish
- editor
- zellij
- history - atuin
web ui
- config / maintain
- monitor / health check
- co-operate
Windows Subsystem for Linux (WSL)
https://github.com/microsoft/WSL2-Linux-Kernel
wine
ChromeOS
- channels: stable / beta / dev
dev mode
- cros
- shell
crostini
- base on LXD
- https://chromium.googlesource.com/chromiumos/docs/+/master/crostini_developer_guide.md
Your next computer is not a computer, IPad?
Your next computer is in your pocket (?)
Adnroid - Termux
- Termux app
- termux-packages https://github.com/termux/termux-packages
- Main deb https://packages.termux.dev/apt/termux-main/ stable main
- Root deb https://packages.termux.dev/apt/termux-root/ root stable
- X11 deb https://packages.termux.dev/apt/termux-x11/ x11 main
waydroid
- uses Linux namespaces (user, pid, uts, net, mount, ipc) to run a full Android system in a container
- provide Android applications on any GNU/Linux-based platform (arm, arm64, x86, x86_64).
- The Android system inside the container has direct access to needed hardware through LXC and the binder interface.
images
- System OTA: https://ota.waydro.id/system
- Vendor OTA: https://ota.waydro.id/vendor
scrcpy
- This application mirrors Android devices (video and audio) connected via USB or over TCP/IP, and allows to control the device with the keyboard and the mouse of the computer. It does not require any root access. It works on Linux, Windows and macOS.
cli
- fish
- atuin
- helix
- wezterm
Open hardware - from edge to cloud
phone
- rootable
- pixel
edge
- open hardware
- Arduino
- Raspberry Pi (not really)
dsektop
- System76 - uefi
- puri.sm coreboot
- framework - not open uefi
- opensource ec
- apple M1/M2/M3
- Asahi-Fedora
system76
- laptops / desktops / mini / servers / keyboards / components
- System76 Open Firmware
- coreboot / EDK2 / System76 Firmware Apps
- System76 Open EC
- Keyboard / Touchpad / Power Button
- System76 Open Firmware
- pop!_os
framework 13 / 16
- Replace any part / components
- opensource ec
opensource native
- comp lang
- python / js / go / rust
- git / git-ops
- containter / kube
- android
go lang as example
- import "github.com/google/uuid"
rust as example
- crates.rs
- lib.rs
- docs.rs
[dependencies]
my-secret-crate = { git = "ssh://git@gitlab.com/rpadovani/my-secret-crate.git", branch = "main" }
opensource organizations
- Linux Foundation
- Cloud Native Computing Foundation (CNCF) - kubernetes
- OpenInfra Foundation / OpenStack Foundation
- Apache Software Foundation
social media / chat / forum
- github / gitlab
- slack / irc / discord
- cncf 104k / kubernetes 180k
- youtube
- meeting
- dev.to
license
https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Open-source-license-chart.svg/1200px-Open-source-license-chart.svg.png
- Strong copyleft licenses - GPL v2 / v3
- Weak copyleft licenses - MIT / Apache / BSD / Mozilla / LGPL
- Business Source License
SPDX / SBOM
- https://github.com/awesomeSBOM/awesome-sbom
grype https://github.com/anchore/grype
- A vulnerability scanner for container images and filesystems
- Find vulnerabilities for major operating system packages
- Find vulnerabilities for language-specific packages
- OpenVEX
open source related projects
wikimedia
open textbook / open educational resources
Public Money, Public Code
taiwan open source conference
- coscup - Conference for Open Source Coders, Users, and Promoters
- SITCON - Students' Information Technology Conference
- mopcon - Mobile Open Platform Conference