Програми које препоручујем

Страхиња Радић

Садржај

Програми по категоријама

Оперативни систем

  1. OpenBSD — оперативни систем заснован на BSD‑у. Кључне речи: безбедност, једноставност, слободна лиценца, Уникс традиционализам. Не подржава NVIDIA графичке картице, па га нисам инсталирао на свој десктоп систем, који има ту картицу. Забележио сам и своја запажања приликом инсталације OpenBSD‑а на два Lenovo лаптопа.

  2. Alpine Linux — дистрибуција оперативног система који бих назвао musl са Линуксом (видети ГНУ ЧПП), која користи C библиотеку musl libc уз језгро Линукс. Коришћењем те библиотеке се постиже висока ефикасност и брзина. Alpine Linux се махом користи као серверски оперативни систем, али то не значи да се не може користити на свим осталим уређајима који подржавају и ГНУ са Линуксом.

  3. Галеб — једноставна „уради сам“ статичка дистрибуција заснована на C библиотеци musl libc, на којој радим већ извесно време.

Менаџер прозора

dwm — део пројекта suckless. Ефикасан tiling менаџер прозора без сувишних додатака. Поставио сам и свој fork овог програма.

Терминалски програм

st — део пројекта suckless. Терминалски програм без сувишних могућности. Поставио сам и свој fork.

Терминалски фонт

  1. Terminus — јасан и компактан пикселски фонт, подржава доста знакова Уникода, укључујући и ћирилицу.

    За генерисање фонта Terminus користим следеће закрпе (опције):

    for opt in ao1 dv1 ge1 gq1 ij1 ka1 ll2 td1 hi2 br1
    do patch -p1 < alt/$opt.diff
    done
    
  2. Iosevka — фонт који користим на екранима са високом резолуцијом.

    За генерисање фонта Iosevka користим датотеку private-build-plans.toml, а за конфигурацију Fontconfig‑а датотеку 75-iosevka-custom.conf, ка којој је симболичка веза у

    $HOME/.config/fontconfig/conf.d/75-iosevka-custom.conf
    

    Ово омогућава да фонт називам Iosevka уместо стварног назива Iosevka Custom, користим Semibold варијанту фонта уместо Bold, Medium уместо Regular, као и да се користи курзив у st‑у.

    Напомена: npm и JavaScript библиотеке које се користе за изградњу овог фонта потичу из мејнстрим, soydev света, и зато су потпуно неоптимизовани. На просечној конфигурацији са 8 GB RAM‑а изградња ће „појести“ сву расположиву меморију и потпуно заглавити рачунар! (Проверено на Alpine Linux‑у 3.19.) Зато је за генерисање фонта потребно проследити параметар --jCmd=1, који ће ограничити поступак изградње на један (траљаво програмиран) потпроцес, што је боље него 4 и више таквих процеса:

    $ npm run build -- --jCmd=1 ttf::IosevkaCustom

Љуска

mkshMirBSD Korn Shell, клон љуске ksh знатно једноставнији од ГНУ‑овог Bash‑а.

Уређивач текста

  1. VimVi IMproved, веома моћан уређивач текста настао као побољшана верзија традиционалног уређивача vi. Vim користим уз Universal Ctags.

  2. sled — једноставни уређивач текста који сам лично написао и одржавам.

  3. vis — уређивач који тежи ка једноставности и комбинује могућности vim‑а и уређивача sam из ОС-а Plan9.

Систем за изградњу

  1. redo — систем сличан make-у, али далеко мањи, бржи и ефикаснији.

  2. POSIX make — стандардни систем за изградњу на Униксоликим системима. Варијанта прописана стандардом POSIX не садржи бројне додатке ГНУ‑овог make‑а, који су у суштини сувишни.

  3. mkсистем за изградњу из оперативног система Plan9.

Програм за промену привилегија

  1. doas — програм за извршавање програма као други корисник (као sudo(8)), који користи текстуални фајл за конфигурацију. doas(1) је написан као део OpenBSD‑а. За разлику од sudo-а, doas је далеко једноставнији, без непотребних могућности, па би самим тим требало да буде и безбеднији.

  2. supsuckless програм за промену привилегија. Нажалост, више не препоручујем sup, јер он не врши аутентификацију корисника, већ програме који су подешени у низу rules у датотеци config.h извршава као root без провере. Ово, уз чињеницу да је у основној конфигурацији могуће излистати тај низ аргументом -l из командне линије, сав терет безбедности оставља програмима које позива. Други недостатак (или ипак не?) му је да програми који се извршавају морају имати искључене битове за дозволу уписа (&= ~0222, a-w).

Веб читач

Веб је у данашње време пренатрпан (bloated) и није безбедан. Ово значи да се користе многе сувишне могућности, странице се споро учитавају и заузимају много меморије. У странице се укључују разни системи за праћење активности корисника и циљано оглашавање (што је само врх леденог брега). Имајући у виду све ово, постаје све јасније да традиционални веб читачи више нису погодни за своју основну намену — прегледање веба.

Препоручујем ставке 8 и 10 из списка литературе.

  1. Ungoogled chromium — ако вам је потребан веб читач са потпунијом подршком за модерни (претрпани) веб, а не волите Google-ов надзор [архивирана верзија] (и надзор осталих сличних компанија), овај читач је за сада најмање зло од постојећих. На претходном линку се детаљно објашњава на који начин скоро сваки други веб читач, укључујући и оне који наводно штите приватност, шпијунира кориснике.

    Сајт Ungoogled Extensions омогућава да се у Ungoogled Chromium лакше инсталирају додаци из Google Web Store‑а.

    Напомене (у обрнутом хронолошком редоследу) 2024-01-06: Сајт Ungoogled Extensions је поново активан.

    2023-11-19: Сајтови uc.droidware.info и Ungoogled Extensions нажалост више нису активни.

    2023-10-04: Опција за коришћење ажурних верзија Ungoogled Chromium‑а и у Alpine Linux‑у је коришћење Flatpak‑а, што је лоше из низа разлога. Flatpak подразумева додатно инсталирање малтене читавог оперативног система ради коришћења једне апликације, и представља још један систем пакета, што је само по себи кршење приватности кроз захтеве серверу при ажурирању пакета. Flatpak верзија Ungoogled Chromium‑а захтева Pipewire-pulse емулацију за емитовање звука, за разлику од „обичног“ Ungoogled Chromium‑а, који ради и са минималистичким системом ALSA. Ипак, тренутно то је једини мени познат начин да се у Alpine Linux‑у инсталира свежа верзија Ungoogled Chromium‑а.

    2023-08-07: Пронашао сам свежију верзију Ungoogled Chromium‑а за musl libc. Она је незнатно свежија, 85.0.*.

    2023-06-28: Корисници Alpine Linux‑а немају среће што се тиче веб читача који (колико‑толико) чувају приватност због тврдоглавог става тима који одржава Alpine Linux, а то је да се само одржавају пакети за званичне верзије Firefox‑а и Chromium‑а. Ипак, на сајту Downloads for ungoogled-chromium је понуђена и верзија Ungoogled Chromium‑а која ради под системима који користе musl libc, а тиме и под Alpine Linux‑ом. (Одаберите „Portable Linux 64‑bit (for musl libc)“.) Лоша вест је да је последња доступна верзија тренутно она заснована на Chromium‑у 84.0.*.

    2023-03-23: И Mozilla (наравно) намерава да уведе Manifest V3. Више о томе на сајту digdeeper и mozilla.org. Нажалост, велике глобалистичке корпорације не одустају од својих погубних намера.

    2023-02-03: Нажалост, апликација за Андроид није ажурирана од верзије 88 Chrome‑а, а Google је у међувремену објавио и Manifest V3, па ћу од ове године и на PC‑ју морати да пређем на неки други читач, највероватније неки од деривата Firefox‑а или Webkit‑а. И тако до тренутка када и Mozilla или Apple не уведу еквивалент Manifest V3 (што уопште не треба искључивати; видети већ поменуте ставке 8 и 10 из списка литературе).

  2. Mull — верзија fork‑а Fennec/Fenix читача Mozilla Firefox, се уклоњеном телеметријом и уклоњеним власничким компонентама. Пошто је недавно сајт читача Ungoogled Chromium Extensions престао да постоји, на Андроиду користим овај читач. За сада нисам нашао податке о анализи његовог „телефонирања кући“ (phoning home, извештавања централном серверу), али за сада Mull видим као најбезболнију опцију на Андроиду.

    Mull подржава екстензије, али после перфидног потеза компаније Mozilla, једино је дозвољена инсталација екстензија кроз „колекције“, које могу креирати и корисници, али је за то неопходно да имају налог на mozilla.org‑у, што представља још један „отисак“, још један начин праћења и разбијања анонимности. Наравно, може се направити привремени налог са привременим мејлом, али се ипак идентитет може везати за одређену колекцију додатака, без обзира на то што је може користити више од једне особе. То је још један начин за филтрирање.

    2024-01-06: Сајт Ungoogled Extensions је поново функционалан, али (основна верзија) Ungoogled Chromium‑а за Андроид не подржава екстензије, а Ungoogled Chromium Extensions и даље нико не одржава, па за сада и даље користим Mull на Андроиду.

  3. qutebrowser — читач заснован на QtWebEngine‑у (Chromium), са опцијом коришћења погона QtWebKit (за шта је у већини дистрибуција неопходно компајлирање из изворног кода). Користи минимални интерфејс уз могућност потпуне контроле преко тастатуре. Нажалост, у основној варијанти користи Chromium (видети уводни пасус овог одељка зашто је то лоше). Постоји и верзија за OpenBSD.

    За qutebrowser постоји jmatrix, верзија uMatrix‑а писана у Python‑у, али она нема све његове функционалности, што признају и сами аутори.

  4. Badwolf — читач заснован на погону WebKitGTK+ (WebKit2). Има минималистички кориснички интерфејс, али се његова заштита приватности углавном своди на подразумевано искључивање JavaScript‑а. Постоји и верзија за OpenBSD.

    Недостатак Badwolf‑а, surf‑а и осталих читача заснованих на WebKit‑у је непостојање подршке за JavaScript plugin‑ове (=uMatrix), што значи да морате сами да се снађете у вези са заштитом приватности. Истина, постоји екстензија у форми динамичке библиотеке, wyebadblock (wyeb‑ad‑block, блокер реклама иницијално направљен за читач wyeb), али се он своди на коришћење easylist.txt, што значи да се носи само са малим делом проблема које решава uMatrix.

  5. Surf — део пројекта suckless. Графички веб читач заснован на погону WebKit2/GTK+, без свега сувишног. Користи dmenu за унос УРЛ-ова и траку за претрагу. Подршка за табове се може додати преко везе са програмом tabbed. Поставио сам и своје fork-ове ових програма.

  6. NetSurf — једноставни, веома брзи веб читач умерених захтева за ресурсима који користи сопствени погон за приказивање HTML-а. Не подржава доста могућности које подржавају остали читачи, али постоји и много сајтова који су читљиви у њему.

  7. Links и ELinks - текстуални веб читачи; ELinks је fork програма Links који подржава многе напредне могућности, између осталог и ECMAScript (JavaScript), CSS и протоколе BitTorrent и Џемини.

Додаци за веб читаче које користим

За детаљнију анализу неких додатака, укључујући и неке који овде нису набројани, видети ставку 9 у попису литературе.

  1. uMatrix — додатак који користи регуларне изразе као правила за филтрирање захтева. Подразумевано блокира проблематичне захтеве, као што су Google‑ови скриптови, па захтева нетривијално ручно подешавање у случају да сајт не функционише или се не приказује исправно.

  2. Redirector — додатак који омогућава да се УРЛ захтева препише неким другим, као што то ради модул mod_rewrite веб сервера Apache. На пример, све захтеве за https://www.reddit.com могуће је преусмерити на https://old.reddit.com (стари интерфејс Reddit‑а, са мање JavaScript‑а).

  3. Stylus — додатак уз помоћ кога се на странице са одређеним УРЛ‑ом може применити произвољан CSS. Ово је пре свега корисно за уклањање обавештења о колачићима („обавезних“ по GDPR‑у).

  4. I don't care about cookies — уколико немате живаца да ручно штелујете уклањање колачића уз помоћ Stylus‑а, можете користити овај додатак. Не користим овај додатак од како га је купио Avast.

  5. uBlock Origin — додатак који користи листе за филтрирање сајтова, насупрот uMatrix‑овом приступу правила, што аутоматски значи да користи више меморије и зависи од редовног ажурирања листе. Сајт digdeeper има одељак посвећен додацима за веб читаче, у ком пореди uBlock Origin са uMatrix‑ом и закључује да је uMatrix боље решење.

Клијент за Gopher

saccsuckless Gopher клијент (Git УРЛ: git://bitreich.org/sacc).

Клијент за Џемини

  1. Lagrange — графички клијент писан у C-у који користи SDL за графику. Подржава и Gopher.

  2. Telescope — текстуални клијент писан у језику C.

Клијент за мејл

У данашње време Google‑ов Gmail је толико узео маха, да се готово изгубио појам „клијент за мејл“ и људи користе Gmail као синоним за програм за мејл. Пошто сам почео да користим мејл пре 2000., ја настављам да користим програме – клијенте за мејл, који преузимају мејл локално, тако да се он може читати офлајн.

  1. Neomutt — текстуални (TUI), али потпун програм за мејл. Подржава TLS, POP, IMAP, разне врсте attachment-а, GPG... ја га користим уз програм за преузимање поште isync и програм за слање поште msmtp, подешене преко скрипта mutt-wizard.

  2. S‑nail — верзија традиционалног клијента за мејл (команда mail(1)) у Униксоликим оперативним системима. Користи интерфејс командне линије (CLI), па се скоро извесно неће свидети онима који су навикли на графички интерфејс. Вероватно најуочљивија мана S‑nail‑а у односу на Neomutt је што не користи напредне механизме за индексирање, па је осетно спорији приликом учитавања сандучића са пуно порука. Такође, за сада S‑nail не подржава потписивање и шифровање GnuPG‑ом.

  3. FairEmail — прилично пренатрпани клијент за мејл за Андроид, али једини мени познат који (за сада) поштује приватност, користи слободну лиценцу и не зависи од Мозиле. Операције које су ризичне или крше приватност се могу укључити и искључити, а подразумевано су искључене.

  4. K‑9 Mail — слободни клијент за мејл за Андроид. Од како је објављено да ће се K‑9 Mail интегрисати у Mozilla Thunderbird за мобилне уређаје, не користим K‑9 Mail. Списак разлога зашто је компанија Мозила лоша се може наћи на страници Mozilla - Devil Incarnate [архивирана верзија].

Клијент за чет

Осим класичног, „транспарентног“ IRC‑а, данас постоји низ протокола за чет који пружају различите степене безбедности. Протоколе који захтевају сервер, као што је XMPP, сматрам компромисним решењем, јер се комуникација обавља преко сервера, иако је шифрована. Вероватно најбољи протокол за чет у погледу безбедности је Tox, који не захтева централизовани сервер.

  1. Irssi — Клијент за чет који подржава низ протокола. Подршка за „класични“ IRC је уграђена, а други протоколи су подржани преко модула. Користим га за јавни чет.

  2. Profanity — Клијент за безбедни чет протоколом XMPP. Користим га за приватни чет.

  3. aTox — Клијент за Андроид за безбедни чет протоколом Tox.

  4. Conversations — Клијент за Андроид за безбедни чет протоколом XMPP.

RSS читач

  1. sfeedsfeed_curses) — suckless читач фидова. Као SFEED_PLUMBER користим ELinks.

  2. snownews — за разлику од других читача, као што је newsboat, snownews је: 1. написан у језику C, 2. лиценциран под ГНУ-овом ОЈЛ, 3. не садржи Rust, snap и Docker глупости.

  3. Feeder — апликација за Андроид, преко F-Droid репозиторијума.

FTP клијент

lftp — напредни клијент за FTP који користи интерфејс командне линије.

Веб сервер

quark — минимални статички suckless веб сервер.

Програм за синхронизацију датотека

  1. rsync — „стари добри“ CLI програм за синхронизацију директоријума и датотека на једном или више рачунара. Страница упутства за rsync(1) је прилично опширна, али је оно што се жели у већини случајева:

    $ rsync -avr директоријум/ корисник@сервер:директоријум
    

    где је коса црта после првог назива директоријума битна. За приступ другом рачунару потребно је подесити SSH, најбоље преко асиметричног кључа.

    За подешавање rsync сервера је довољно додати у /etc/rsyncd.conf нешто слично овоме:

    use chroot = yes
    
    [home]
    	path = /home/%RSYNC_USER_NAME%
    	comment = User's home
    	uid = %RSYNC_USER_NAME%
    	gid = *
    

    да би кориснички директоријум био приступачан rsync‑у.

    rsync јесте потребно покретати ручно, али то пружа већи степен контроле, а по потреби се може и аутоматизовати.

  2. Syncthing — програм написан у програмском језику Go (аутоматски минус). Иако сам га користио, више га не препоручујем, а ево и зашто. Његове наводне предности су што:

    • Захтева минимално подешавање (што је релативно; в. горе rsync), које се може обавити и из веб читача (ипак, дискутабилно је колико је чак и ово „лако“ неискусним корисницима),
    • Синхронизује датотеке аутоматски (што не мора бити предност; пример 1, пример 2), чак и између различитих оперативних система (пример изненадног обустављања подршке за Windows 7 показује да ово није идеално),
    • „Користи децентрализовану комуникацију“ уместо централизованог сервера (ипак, подразумевано се Syncthing сервери „оглашавају“ глобалном серверу, што се са тачке гледишта приватности ефективно своди на исто што и потпуно одсуство децентрализације, и подразумевано скупљају телеметрију; за искључивање ових анти‑могућности је потребно уложити труд, за који је нејасно колико је заиста успешан).

      Рецимо, за сада(…™) се у Syncthing‑у могу подесити следеће опције, које су подразумевано укључене (шпијунирање неискусних корисника):

      # Искључивање аутоматске провере надоградње
      syncthing cli config options auto-upgrade-intervalh set 0
      # Искључивање слања извештаја о крахирању
      syncthing cli config options crenabled set false
      # Постављање „глобалног оглашавања“ (пинговања цент. сервера) на нетачно
      syncthing cli config options global-ann-enabled set false
      # Искључивање надоградње на пре-издања
      syncthing cli config options upgrade-to-pre-releases set false
      # Постављање слања „извештаја о коришћењу“ (телеметрије) на „није прихваћено“
      syncthing cli config options uraccepted set -- -1
      # Постављање „јединственог ID-ја у извештају о коришћењу“ на празно
      syncthing cli config options urunique-id set ''
      

    Током година коришћења Syncthing‑а, најзад сам дошао до закључка да је ово само још један прикривени мејнстрим, big tech програм, који интересе програмера и big tech корпорација ставља изнад интереса корисника, спајвер прикривен као програм који штити приватност, нешто као читач Brave.

Опште смернице

Уколико програм није на овој листи, кад год је то могуће преферирам програме који поштују следеће принципе:

Иако ови принципи нису наведени по одређеном редоследу, идеално имам следећи низ приоритета тема које су мени битне:

приватност > лиценца > антикорпоративност > једноставност

који иде од мени важнијих тема ка мање важним. Наравно, њега није увек могуће пратити, па правим компромисе. Ипак, у највећем броју случајева се макар прва три циља поклапају. На пример: они који се противе ОЈЛ в3 обично раде за велике корпорације и штите њихове интересе, који скоро увек нарушавају приватност корисника.

Литература

  1. Alternatives to bloatware — листа програма сортираних у оквиру категорија, од компликованијих ка једноставнијим. Што је програм ближи крају категорије, бољи је, мада у одређеном броју случајева ипак не бих користио тај последњи програм.
    Додатак 2023-08-29: Постоји и ажурнији fork овог репозиторијума.

  2. Programs that rock — листа програма које препоручује suckless.org.

  3. Harmfull stuff — прилично субјективна, али вредна помена, листа програма који су штетни (аутори су пристрасни у корист ОС-а Plan9). Понегде се не слажем са овом листом [рецимо, не мислим да су Perl, vim и ОЈЛ (GPL) штетни, а мислим да је TSV бољи од CSV‑а, и да је mksh, који користим, бољи од pdksh‑а, чијим fork‑овањем је настао; такође, у данашње време systemd‑а, PulseAudio‑а и Pipewire‑а, ALSA делује аскетски; коначно, PDF је, за разлику од PS‑а и DjVu‑а, скоро свуда подржан].

  4. Rust is not a good C replacement — чланак о томе зашто Rust није добра замена за C (аутор хвали Go, са чим се не слажем јер је Go развијен у оквиру Google-а и такође садржи систем пакета, исто као и Rust).

  5. Rust sucks as a system language — неки од главних разлога зашто је Rust лош као системски језик.

  6. Boycott Wayland. It breaks everything! — листа разлога зашто је Wayland лошији од X.Org-а.

  7. Google has been DDoSing SourceHut for over a year — пример који истиче зашто су језици који користе систем пакета, конкретно Go, лоши.

  8. How to choose a browser for everyday use? — детаљна анализа степена (не)поштовања приватности већине постојећих веб читача. Обавезно штиво за сваког ко користи веб (велика већина). [архивирана верзија]

  9. Essential privacy (and other) addons — детаљнија анализа неких од додатака за популарне читаче веба који штите (или тврде да штите) приватност.

  10. Choose your browser carefully — још један сајт сличан претходном.

  11. Манифест Битрајха [HTTPS прокси] — основни принципи покрета‑наследника suckless покрета.


Generated by slweb © 2020-2024 Strahinya Radich.