Suckless: czym jest "mniej okropne oprogramowanie"?

Suckless: czym jest "mniej okropne oprogramowanie"?27.02.2021 02:55
Suckless: czym jest "mniej okropne oprogramowanie"? (fot. Jason Scott CC BY 2.0)

W niektórych linuksowych kręgach do znudzenia możemy nasłuchać się o tzw. filozofii Uniksa. Jest to metodyka tworzenia oprogramowania, wedle której każdy ma być mały, robić tylko jedną rzecz i komunikować się ze światem za pomocą strumieni. Najlepiej nieopakowanych w żaden protokół. Filozofia Uniksa ma wiele zalet, zwłaszcza patrząc z perspektywy okoliczności, w jakich powstał sam Unix. Ma też sporo wad, dotkliwych dla użytkowników, ale i programistów.

Jedną z nich jest na przykład to, że świat wyewoluował w zupełnie innym kierunku. Niezależnie od teoretycznej słuszności uniksowego podejścia do interfejsów, atomizacji i skalowalności, faktem jest że jesteśmy otoczeni oprogramowaniem kompletnie nieuniksowym. Intensywnie korzystamy z przeglądarek internetowych, ogromnych programów do wszystkiego, pozornie tylko realizujących jedno zadanie. Łączymy się z usługami, które nie dbają o uwspólnianie swojego stanu, bo są komercyjne i ich twórcom na tym nie zależy. I tak dalej.

Plan9 (fot. Mauri de Souza Meneguzzo)
Plan9 (fot. Mauri de Souza Meneguzzo)

Wdrożenie uniksowego podejścia do niektórych nowoczesnych scenariuszy staje się już niemożliwe. Zresztą, czasem jest niewskazane, bo pochodząc z innych czasów, serwuje dziś dziury w zabezpieczeniach. Nie należy więc wprowadzać go za wszelką cenę, z powodów ideowych lub estetycznych.

"software that sucks less"

Niemniej, istnieje szereg scenariuszy, w których przydałoby się dziś więcej staromodnego myślenia. Doprowadziło to do powstania chóru malkontentów, przekonanych o powszechnej niekompetencji i lenistwie programistów. Na szczęście jednak, miały też miejsce konstruktywne rzeczy, jak projekt suckless. Jest to inicjatywa mająca na celu dostarczenie minimalistycznego oprogramowania a także zbiór wytycznych i sposób "patrzenia na świat" z wykorzystaniem radykalnej formy filozofii KISS. Dlaczego radykalnej? Ponieważ bliżej jej do systemu Plan9 niż do dzisiejszych Linuksów.

Suckless jest obecny w repozytoriach (fot. Kamil Dudek)
Suckless jest obecny w repozytoriach (fot. Kamil Dudek)

Suckless dostarcza oprogramowanie działające na głównych rodzajach "mniej-więcej-Uniksa", jak FreeBSD, GNU+Linux i macOS. Składa się z kilkudziesięciu składników, niektórych całkiem ambitnych, ale najpopularniejsze to menedżer okien DWM, terminal st oraz przeglądarka internetowa surf. DWM zasługuje na oddzielną publikację, jest bowiem tak egzotyczny, dziwny i przynajmniej początkowo) nieintuicyjny, że aktywnie przeszkadza w pracy użytkownikowi nieskoremu do reedukacji. To ogólna tendencja w programach suckess, ale w DWM widać ją w szczególności.

Terminal

O wiele lepszym (i mniej zniechęcającym) przykładem wydaje się być emulator terminala st. Jest to program, który powstał, bo… xterm uznano za bloatware. Tak jest. Nie GNOME Terminal, nie Konsole, a xterm. Malutki, antyczny emulator dołączany do X11, tak stary że nie korzysta z żadnych widgetów i miewa problemy z Unicode.

To zdumiwające, ale argumenty za tym, że xterm jest za ciężki istnieją i są nawet niezłe. Program dostarcza emulację urządzeń które nie mają dziś żadnego sensu, jest długi, a jego kod od dawna nie był sprzątany i zamiast tego otrzymuje jedynie setki łatek serwisowych.

st jest mikroskopijny, ale działa wybornie (fot. Kamil Dudek)
st jest mikroskopijny, ale działa wybornie (fot. Kamil Dudek)

Dla porównania, st jest dziesięciokrotnie mniejszy (po zbudowaniu) i około dwudziestokrotnie mniejszy (jako kod źródłowy) niż xterm. Rozwija się znacznie wolniej i ma listę istotnych braków ujętą w pliku TODO, ale z kolei xterm otrzymuje aktualizacje co miesiąc, a kompletnie tego po nim nie widać. Pod wieloma względami st przebija więc referencyjny terminal X11: choć nie obsługuje zakładek, dynamicznej zmiany rozmiaru i profili ustawień, jest pełnoprawnym emulatorem, radzi sobie doskonale z Unicodem (nawet z Emoji!), będąc przy okazji bardzo szybkim.

Ustawienia? Jeszcze czego!

Wymowną cechą st jest brak obsługi ustawień. Jeżeli chce się zmienić profil kolorystyczny, konieczne jest naniesienie zmian na config.h i przebudowanie pliku. Przesada? Może trochę, ale zadajmy sobie pytanie: jak często zmieniamy motyw kolorystyczny terminala? Zazwyczaj wybieramy jeden, odpowiedni dla nas, i tak już pozostawiamy. Terminal st implementuje właśnie taki scenariusz, usuwając wczytywanie własnych plików konfiguracyjnych i parametrów wiersza poleceń.

To idealny przykład ekstremizmu suckless. Istotnie, wygląd terminala zmieniamy rzadko, ale już na przykład podczas prezentacji albo zdalnych sesji, warto móc coś szybko pokazać i np. zwiększyć rozmiar czcionki w locie, dynamicznie. Program st na to nie pozwala. Istnieją jednak scenariusze "codzienne" w których nie stanowi to problemu…

Przeglądarka bez interfejsu

W kwestii przeglądarek internetowych, suckelss oferuje program surf. W zasadzie nie jest to niezależna przeglądarka, a sposób obrabowania silnika WebKit z interfejsu użytkownika. Surf nie oferuje nic, nawet paska stanu (zamiast niego wykorzystuje obramowanie okna). Zakładki? Lepiej trzymać je we własnoręcznie zbudowanym menu. Karty? Po co, wystarczy otworzyć nowe okno. I tak dalej.

surf. Tak mogłyby wyglądać przeglądarki, gdyby świat był rozsądniejszy (fot. Kamil Dudek)
surf. Tak mogłyby wyglądać przeglądarki, gdyby świat był rozsądniejszy (fot. Kamil Dudek)

Bez wątpienia surf unaocznia, jak mocno rozrosły się przeglądarki internetowe i do jakiego stopnia, mimo że teoretycznie służą tylko do jednego, robią/umieją zbyt wiele. Niestety, podejście stosowane przez surf jest w pewnym stopniu zaklinaniem rzeczywistości. Tak, byłaby to doskonała przeglądarka internetowa… gdyby strony internetowe istniały dziś w formie, w której wymyślono je trzy dekady temu. Dziś przydają się menedżery haseł, wtyczki do zblokowania skryptów śledzących, panele deweloperskie dla kodu i plików cookies (szczególnie gdy tworzymy strony) i tak dalej.

Bez nich, przeglądanie internetu jest nie tylko trudniejsze, ale i po prostu mniej bezpieczne. A to jest już szkodliwy poziom wyrzeczeń. Możemy oczywiście wyrzec się stosowania stron z cięższym JavaScriptem, logowaniem OAuth, reklamami i formantami śledzącymi, ale to trudne. Nie rozliczymy w ten sposób podatków, nie sprawdzimy konta bankowego i nie podejrzymy naszych recept.

Znacznie więcej małych rzeczy

Wśród pozostałych projektów suckless znaleźć można kilka z cyklu "pie in the sky", czyli zupełnie nieosiągalnych, teoretycznych pomysłów. Należą do nich równoległy menedżer startowy stali+sinit (wszak systemd jest zaprzeczeniem suckless) oraz zastępstwo dla udev (!). Programy te są istotne głównie dlatego, że dobrze wiedzieć, że da się je jeszcze stworzyć. Gdyby stos uniksowy "odjechał" na tyle daleko, że np. systemd byłoby uniwersalnie nieodzowne, moglibyśmy mieć problem.

Ekspresowo (fot. Kamil Dudek)
Ekspresowo (fot. Kamil Dudek)

Ale są też mniejsze zabawki, jak klient czatu ii, bardzo ciekawy program do IRC oparty o kolejki plikowe FIFO (mimo wszystko polecam jednak bardziej irssi). Nie powinien także umknąć naszej uwadze program sent, służący do konwertowania podstawowego markdownu na przezrocza, zgodne z metodyką Tahakashiego. Wiele dobrego można powiedzieć o takim podejściu do tworzenia slajdów (a także o stosowaniu foliowych przezroczy zamiast PowerPointa), ale należy mieć na uwadze, że Markdown przegrywa np. przy równaniach matematycznych i tabelach. Ale na pewno warto spojrzeć w tym kierunku.

Niektóre z powyższych programów są spakowane i dostarczane w repozytoriach dystrybucji linuksowych (co nieco przeczy ich intencji), większość wymaga samodzielnego sklonowania przez git oraz zbudowania. Zazwyczaj nie ma skryptu automatycznej konfiguracji i można od razu lecieć z make. Budowa programów trwa dosłownie sekundy.

Dajcie nam znać w komentarzach, czy przemawia do Was metodyka suckless.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.