Cracow Linux Users Group

Relacja z FOSDEM 2023: wydarzenia dla miłośników wolnego oprogramowania

FOSDEM, czyli Free and Open Source Software Developers European Meeting, to coroczne, otwarte dla wszystkich spotkanie ludzi z branży IT, którzy łączą się w idei wolnego i otwartego oprogramowania. Tegoroczna edycja odbyła się w dniach 4-5 lutego 2023 w stałej siedzibie Université Libre de Bruxelles. Aby przybliżyć skalę tego wydarzenia, warto wspomnieć kilka liczb:

  • 744 Eventów
  • 787 Prelegentów
  • 34 Dev Roomów
  • 57 Standów
  • 36 Lightning Talków
  • ponad 379 godzin materiału video

A wszystko to w jeden weekend! Dodatkowo, jako otwarta impreza, nie zabrakło również i streamingu oraz nagrań z prelekcji. Te, możecie znaleźć w tabeli od Marcina Juszkiewicza lub na oficjalnej stronie FOSDEMu 2023.

Nietypowa formuła

Głównym miejscem spotkań na FOSDEM są wspomniane wcześniej Dev Roomy, czyli pokoje tematyczne, gdzie, zwykle przez jeden dzień, odbywają się prezentacje i spotkania community. Wśród 34 Dev Roomów można znaleźć między innymi pokoje o: konteneryzacji, bazach danych (PostgreSQL oraz MySQL/MariaDB), otwartych mediach, poszczególnych językach programowania (Python, Rust, Go, Haskell, Kotlin, Erlang/Elixir, JS), kernelu Linuxa, BSD, mikrokernelach, otwartym oprogramowaniu na smartfonach, narzędziach do operacji na plikach binarnych, wirtualizacji, emulatorach, bootloaderach, menedżerze paczek Nix, Mozilli, architekturze Risc-V, LLVM-ie, systemach wbudowanych i automotive, protokołach RTC, czy też o “Public Code and Digital Public Goods” (gdzie omawiane były między innymi legislacje prawne w Unii Europejskiej).

Poza Dev Roomami, był też „Main Track”, gdzie można posłuchać bardziej ogólnych tematów dotyczących community, rozwoju czy przyszłości Open Source i Free Software. Co ciekawe, odbywał się on w sali mieszczącej do ~1500 osób!

Wymienione wcześniej “Standy”, to nic innego jak stoiska różnych fundacji, projektów czy sponsorów, gdzie można było porozmawiać z community związanym z danym projektem czy też się nim pobawić. Wśród stoisk można było znaleźć przedstawicieli:

  • Fundacji: Apache, Eclipse, Free Software Foundation, Matrix.org
  • Ansible, Grafany, czy OpenNebula
  • Baz danych PostgreSQL oraz MariaDB
  • Narzędzi biurowych CiviCRM, CalDAV, XWiki & CryptPad czy LibreOffice
  • Środowisk graficznych Gnome i KDE
  • Środowisk programistycznych np. GitLab, Homebrew, Jenkins
  • Mozilli czy NextCloud-a
  • Tematów embedded (OpenEmbedded, coreboot/flashrom, PINE64)
  • HAM Radio
  • Systemów operacyjnych jak np. Debian, Fedora, CentOS, FreeBSD, Linux na urządzeniach mobilnych (Sailfish OS, Ubuntu Touch, Mobian itd.), Ubuntu czy Gentoo

Organizatorzy udostępnili również trzy pokoje typu „BOF” (Birds Of a Feather who, as the saying goes, flock together), gdzie ludzie z podobnymi zainteresowaniami mogą się spotkać i dyskutować na różne tematy. Wszystkie spotkania są publiczne i każdy, kto jest zainteresowany, może wziąć w nich udział. Z naszej perspektywy działało to dość słabo.

Na sam koniec, warto wspomnieć o „Lightning Talkach„. Tych również nie zabrakło na FOSDEM. Łącznie zgłosiło się prawie 40 osób, które w krótkim czasie przestawiały swoje projekty, narzędzia lub rozwiązania. W tej grupie był również nasz kolega disconnect3d.

Nasza reprezentacja

Na FOSDEM wybraliśmy się w łącznie 11 osób, głównie z Krakowskiego środowiska IT, choć nie zabrakło i znajomych ze Szwajcarii. Bawiliśmy się tam przednio, co udokumentowaliśmy w tej ->galerii. Co ciekawe, po pierwszym dniu konferencji zawitaliśmy w Brukselskim Hackerspace (czym jest hackerspace) na “małej” imprezie. Poniżej, opisaliśmy interesujące dla nas prezentacje wraz z linkami do nich, gdzie w większości przypadków można zobaczyć nagranie oraz slajdy.

Podziękowania i lista ciekawych prezentacji

Dla @disconnect3d, @jamzed, @vovcia, @sleep_tight, @nirn, @pyton, @artcz, @arcz, @kilo, @sz, @Yatmai, @kcroot, @Lukasz B oraz wszystkich osób, które przyczyniły się do powstania poniższej listy. Dzięki za feedback i opisy.

Miłego czytania i oglądania ;).


Main Track

  • Matrix 2.0 How we’re making Matrix go voom – Prezentacja dla osób zainteresowanych otwartą komunikacją, standardami oraz zmianami, które autorzy określili jako przełomowe dla standardu Matrix. Stąd wersja 2.0, której głównym celem było poprawienie prędkości/wydajności. Autorzy pokazali, jak nowa wersja radzi sobie z obsługą tysięcy pokoi przy milionach użytkowników. Autorzy Matrixa zgłosili go jako otwarty standard komunikacji w UE a niemiecki rząd może być pierwszym, który zaakceptuje używanie Matrixa w ramach opieki zdrowotnej.
  • Graphics: A Frame’s Journey – Prelekcja skierowana jest do każdego, kto chce zrozumieć złożoność nowoczesnych potoków wyświetlania, plany przyszłego rozwoju oraz sposoby tworzenia aplikacji i produktów, które wykorzystują pełne możliwości nowoczesnego sprzętu z maksymalną wydajnością.
  • Practical Computerized Home Automation – Ciekawe i dość ekscentryczna prezentacja o stworzeniu automatyki domowej na podstawie Cron’a i skryptów. Trochę “old school way”. Natomiast nie można zarzucić prelegentowi poprawności merytorycznej. Dodatkowo jak ktoś nie wie jak działają PLC – polecamy prezentację tego Pana.

Monitoring and Observability

Network and DNS

Image-based Linux and Secure Measured Boot

  • Ultrablue – francuskie NSA zrobiło Ultrablue (User-friendly Lightweight TPM Remote Attestation over Bluetooth) – projekt, który pozwala na atestację kernela Linuxa i jego parametrów, które chcemy zbootować za pomocą telefonu. Więc jak ktoś wpadnie na pomysł podmiany sprzętu np. w laptopie, który leży w hotelu, to się o tym dowiesz.

Kernel

  • Hardening Kernel Subsystems by Architectural Capabilities – talk o CHERI (Capability Hardware Enhanced RISC Instructions) – o researchu/pomyśle na nową architekturę, w której poprzez zastosowanie fat pointerów (które mają np. 129 bitów) a każdy przechowuje informacje o zakresie pamięci, do której ma dostęp. Co, gdyby zastosować takie podejście do dzisiejszego softu? Prawdopodobnie znacznie utrudniłoby eksploitację bugów. Dodatkowo autorzy pokazali MORELLO, czyli architekturę opartą o ARM, w której zaimplementowano CHERI. Istnieje już kilka kerneli przeportowanych na to rozwiązanie (BSD, Linuxa też w jakimś stopniu) oraz specjalny fork QEMU, przy pomocy którego można przetestować CHERI/Morello.
  • Don’t blame devres – devm_kzalloc() is not harmful – talk naszego rodaka z firmy Linaro, mówił o use-after-free vulnach w driverach w Linuxie. Ogólnie „devres” to podobno łatwiejszy/fajniejszy sposób na zarządzanie zasobami.

Containers

  • Safer containers through system call interception – panowie z LXC/LXD używają notyfikacji seccompa (relatywnie nowy ficzer polegający na tym, że userspace’owy program może dostać notyfikację, że inny program, którego monitoruje próbuje wykonać dany syscall i może pozwolić lub nie na wykonanie tego syscalla) do tego, żeby kontenery LXC/LXD mogły wykonywać pewne syscalle, pod warunkiem że argumenty wywołania są OK. Na przykład:
    • można robić mknod na /dev/null, ale nie na dysku (co prawda w cgroupv1 mieliśmy od tego device cgroup, a w cgroupsv2 można robić to przez bpfa, ale to rozwiązanie jest wciąż bardziej flexible).
    • można ładować/wyładowywać moduły kernela z wewnątrz kontenera (ale tylko te, na które wcześniej pozwolimy)
  • 7 years of cgroup v2: the future of Linux resource control – prezentacja człowieka z Meta/Facebooka o cgroup v2, która pokazuje różnice między cgroupv1 i v2. Prelegent głównie skupił się na kwestii monitorowania i limitowania pamięci. W dużym skrócie: monitorowanie pamięci przez RSS (Resident Set Size) jest niepoprawne, między innymi dlatego, że nie liczy pamięci używanej przez kernel dla naszego procesu (zaalokowanie obiekty, bufory, cache etc.). W cgroup v2 mamy możliwość dokładnego obliczenia pamięci. Prelegent pokazał fajne porównanie, gdzie limitując „totalną pamięć procesu” (razem z tą z kernela) jesteśmy w stanie zejść x2 z zużyciem pamięci, nie tracąc znacznie na performance. Niestety jak przekroczymy pewną wartość, to nasz program praktycznie przestanie działać. Opisano też narzędzie: https://github.com/facebookincubator/senpai, które pozwala na profilowanie/znalezienie tej pożądanej wartości pamięci. Dzięki niemu możemy dokładniej limitować pamięć procesów na maszynach.

Python

  • AMENDMENT Code reloading techniques in Python – o „hot code reloading” w Python. Rzeczy, które autor pokazywał typu obj.class = inny_obiekt_klasy są szalone i nie powinno się ich używać. Prelegent zrobił fajną bibliotekę do autoreloadowania funkcji, którą pokazuje na końcu prezentacji.

Go

Lightning talks

BSD

Security

AMENDMENT Hardening Linux System with File Access Policy Daemon – Prezentacja człowieka z RedHat pokazuje wynalazek nazywany File Access Policy Daemon. Zadaniem tego narzędzia jest blokowanie syscalli (np. execve) podczas uzyskiwania dostępu/wykonywania pliku. Syscall taki jest blokowany i do roboty wkracza, omawiamy fapolicyd, który ma za zadanie sprawdzić w dedykowanej bazie danych politykę dostępu do pliku, ew. sprawdzić hash pliku, zanim wywołanie systemowe zostanie puszczone dalej.