Nedávno se mě jeden známý zcela vážně zeptal, proč stále mám na desktopu nainstalovaný Linux (toho času stále Debian), když ve widlích už je vše dostupné (asi myslel takovej ten subsystém pro běh Linuxu ve Windows – neznám, nemám důvod to používat). V tomto článku bych chtěl diskutovat několik důvodů, proč používám Linux (a nejen ten) a jaké důvody k tomu vedly.
Špatně položená otázka
Mnoho lidí dělá tu chybu (a ani si to neuvědomují), že nějakou konkrétní volbu systému (nemusíme se bavit jen o OS, toto se vztahuje na libovolnou věc), považují za výchozí a navíc neměnnou v čase. S tím se setkávám opakovaně.
Někdo zjistí, že používáte něco jiného (než je podle něj výchozí volba) a hned se vás ptají na důvody. A někteří mají ještě tolik drzosti (;-)), že ty důvody posuzují podle svých kritérií a pokud nevyhovují, máte prostě používat jejich výchozí volbu, jinak to děláte blbě.
Tento postup není (podle mě ;-)) správný. Netvrdím, že je nutné to dělat u každého jednotlivého případu použití, ale sem tam je dobré se zamyslet, zda systém nebo postup, který používám, je pro danou věc stále nejvhodnější. A pokud není, tak jej prostě změnit.
Změna neznamená, že jste kdysi udělali chybu v úvaze. To, že něco používáte 6 let a potom to změníte, neznamená, že jste před 6 lety udělali chybu. Nikoliv, těch šest let to skvěle sloužilo. Jenže situace se mění, mezitím se objevily jiné postupy a jiné nástroje, takže by naopak bylo chybou to používat i nadále.
Tedy pokud řeším nějaký problém, správný postup je najít vícero možných řešení a vybrat si to pro daný případ nejvhodnější.
Krásnou ukázkou tohoto problému jsou dotazy v různých poradnách typu:
“Jak zprovoznit WinAMP na Linuxu.”
Tohle je špatně položená otázka. Správná otázka je:
“Jak přehrát hudbu (na linuxu).”
Zatímco v prvním případě se řešení zvrhne na instalaci a řešení problémů s wine (což je další věc, která by se měla používat až jako poslední možnost a nikoliv první) a diskuse o tom, jak je linux nahovno, když tam ani winamp neběží, tak druhá varianta otázky vede na celou škálu možností.
Existují programy pro gui, jednoduché s playlistem, s více playlisty, s knihovnou (náhled na FS), s důkladnější knihovnou i se statistikami a možnosti generování playlistů na základě statistik. Existují programy pro cli, opět od jednoduchých přehrávačů až po komplexní programy a v neposlední řadě existují také klient / server programy, takže hudební přehrávač se nechá ovládat z mnoha různých míst a na mnoho různých míst může hrát.
A to se vůbec nemusíme omezovat na Linux a PC, pochopitelně existují i HW krabičky, které tohle všechno zvládnou out of box.
Ve výsledku tedy máme na stole mnoho možností pro dosažení stanoveného cíle. A nikde není řečeno, že jedno řešení je lepší než jiné. Sám používám mnoho různých způsobů přehrávání hudby, a každý z nich se hodí pro jiný případ. Omezovat se na jedno řešení nedává smysl a přináší jen problémy navíc.
No ale zpět k mým důvodům proč Linux.
Potkalo se to ve správnou dobu
V životě jsem vystřídal mnoho systémů, vlastně žádný z nich není pro mě nějak domácím. Od osmibitů s BASICem, přes 486 s DOSem, přes Windows 95, NT. V té době pokusy s BeOS a první začátky s Linuxem, přes testy FreeBSD až k nasazení FreeBSD na ostrý provoz.
Takže pro mě žádný jeden výchozí OS vlastně nikdy neexistoval. A až na několik výjimečných období, hlavně na počátku, jsem vždy měl Windows a Linux (a teď i FreeBSD) paralelně vedle sebe. (A samozřejmně mnoho dalších, asi nemá smysl uvádět věci jako RouterOS, iOS apod.)
Dalším důležitým faktorem v mém životě a výběru nástrojů hraje afinita k vědě. Už na základní škole jsem četl knihy jako Okna vesmíru dokořán (a seriál jsem dodnes neviděl, i když to mám k disposici – jednou si to dám jako historický exkurs), potom i První tři minuty a tak dále.
Podstatné je to, že ve vědě se publikuje. Kdo chce mít akademický titul vyšší než Mgr., musí chtě nechtě něco napsat. Většinou teda chtě. Pokud někdo pomýšlí vědecké ceny, Nobelovku pochopitelně nevyjímaje, musí publikovat. Všechny vědecké objevy jsou dostupné komukoliv.
Tohle pro mě bylo vždy naprosto automatické.
Když jsem přišel na univerzitu, potkalo se to s Linuxem (se kterým jsem začínal už na střední škole, ale tady už se to bralo vážněji).
Vše veřejné, všechny algoritmy známé, všechny zdrojáky dostupné. Prostě tak, jak to má být. Ve vědě zcela běžné, tak proč by to nemohlo být i v software? Kdokoliv se chce inspirovat může, kdokoliv chce něco vylepšit tak může. Stejně jako věda by se nikdy nedostala tam kde je, kdyby si všichni všechno nechávali pro sebe a kdyby se vzájemně jednotliví teoretici nekritizovali, tak totéž platí o software.
Takže u mě se dva světy propojili kdysi na počátku pokusů s Linuxem. Věda a OSS, resp. FOSS. Mezi OSS a FOSS je taky dost podstatný rozdíl.
S tím souvisí další věc, která byla na počátku velmi podstatná.
Dělat věci správně
Aniž bych chtěl do článku vpašovat další kontroverzní téma, tak na počátku byla jasná snaha dělat věci správně. Co tím myslím. V manuálových stránkách se zcela běžně vyskytovaly odhady asymptotické složitosti. Jak výpočetní, tak paměťové.
Když jsem psal první web v ANSI C (jako CGI skript pod Apache), zkoušel jsem různé knihovny pro souborové databáze (TDB, CDB, DBM, GDBM). A v man stránkách byl běžně k vidění vzorec pro výpočet velikosti souboru (s přesností na B!), který vznikne zapsáním určitého počtu záznamů různých velikostí a typů. (Zkuste si projít man nebo celou webovou dokumentaci k dnešnímu software. Ti lidi často ani neví, že něco jako asymptotická složitost existuje.)
Bohužel, tohle se mění. Dřív byla u vývoje hromada lidí, kteří věděli, jak se to dělá správně a taky to tak dělali. Dneska se tam čím dál tím víc dostávají lidé s přístupem “sice vůbec nevím, jak to funguje a ani mě to nezajímá, ale to staré je prostě celé špatně a já to udělám líp”.
Což sice na počátku vede k rychlým výsledkům a je vidět spousta práce, ale její kvalita je tristní. A pokud u toho ti lidé vydrží (což není příliš časté), tak po letech zjistí, že naráží na stejné problémy, které jiné vývojáře potkaly někdy před 40 lety a že je to už 30 let vyřešeno.
Tohle bude pravděpodobně asi důvod, proč jednou Linux opustím. Místo snahy dělat věci dobře je snaha je dělat rychle, prodat to a zmizet.
A taky je to důvod, proč jsem částečně přesel na FreeBSD. Jednak jsem narazil na man stránku bsdiff (který má krom manu též i doktorskou práci), ale taky mě přestalo bavit číst v diskusích a bugreportech nářky o tom, jak něco nejde a jak se to bude muset celé přepsat.
Jen pro ilustraci, doporučuju vaší pozornosti třeba to, jak jsou na FreeBSD vyřešené jaily. FreeBSD má rc systém napsaný v shellu, a pro funkční běh OS v jailech bylo potřeba sem tam do těch skriptů doplnit nějaké podmínky (tj že v jailu se něco nedělá – věci jako nastavení HW apod.). Toť vše. Tomu se říká dobrý návrh rc systému. Navržen na fyzickém stroji, ale změna pro běh v kontejneru je velmi jednoduchá a přímočará. A výsledkem není bastl.
Zatímco ve světě Linuxu mnozí obhajují systemd, protože předchozí rc skripty služeb měly tisíce řádků, zatímco unita má jen 5 (což už teda taky neplatí, protože „se zjistilo“, že něco nejde dělat tak jednoduše, jak si to někdo na počátku představoval). Ale proč tomu tak je už nikdo neřeší. A ne, shellem to fakt není. Shell fakt nemůže za to, že někdo napsal do rc skriptu tisíc řádků čehosi. (Bez ohledu na možnou diskusi o tom, zda je to opravdu nejvhodnější prostředek pro psaní systémových skriptů.)
Je správné používat OSS jen jako software zdarma?
Takové okrajové téma, které se ale sem tam objevuje, je otázka, zda je správné používat Linux jen proto, že je zdarma bez dalších náhledů na filozofii FOSS, ze které to všechno vzniklo apod.
Moje odpověď je ano. Sice to není ideální, ale podle mě je pořád lepší používat Linux jen proto, že je zdarma, než používat komerční software. Připadá mi to asi jako kdyby měl člověk platit za oheň. (Někdo by měl licenci za vynález ohně a každý by musel platit za jeho použití.) Zkrátka ty znalosti jsou všeobecně dostupné. Naopak mi přijde velmi hloupé za ně platit.
Můj postoj ke komerčnímu software se dá shrnout následujícím příběhem.
Je to už pár let, co jsme hledali zálohovací systém pro servery. Měli jsme na něj několik podmínek. Nakonec se našel jeden software, který cosi sliboval. A ještě než se pustím do dalšího vyprávění, tak bych si rád stanovil jakousi základní laťku, kterou vše budu posuzovat.
V systému mám dostupné k okamžitému použití:
- atomické snapshoty (lvm, btrfs, zfs)
- archivátor více souborů do jednoho (tar)
- komprimátory (gzip, bz2, xz)
- delta přenos jen změn po síti (rsync)
- volitelně i ochranu proti chybám na médiu (Reed Solomon)
- volitelně i šifrování (gpg)
Tedy, pokud mám za software platit, nemůže přinést jen toto (protože to už mám k disposici), ale musí tam být přidaná hodnota.
Zpět k příběhu. Hledali jsme zálohovací software pro servery, který umí zálohovat na pásky. Našli jsme jakýsi software, který se v demu tvářil, že vše splňuje. Takže se koupila nějaká základní licence. A nastalo nemilé překvapení. Ten software vlastně neuměl nic jiného, než zip
. Tedy uložit více souborů do jednoho a zkomprimovat to. A mít k tomu jakési GUI. Toť vše. Práce s páskou veškerá žádná.
Pečlivějším zkoumání text napsaného 5px fontem se zjistilo, že tam zcela chybí licence pro podporu pásek. Takže se zaplatila další licence (to je ukázkový případ vendor lock in) za to, aby se ze zipu stal tar.
Pro vysvětlení, tar je zkratka z Tape ARchiver. Tar umí sám zálohovat na pásku. Pokud k tomu přidáme i program mt
pro ovládáni knihovny, tak máme funkční zálohovací program.
Takže, vyhozené peníze (a ne zrovna málo) za něco, co je již součástí systému. Nic navíc, jen hromada starostí. Bohužel, poučení nepřišlo. Ale to je na jiný článek.
Musí tam být něco navíc
Já nemám nic proti komerčnímu software, ale pokud mám za něco zaplatit, musí tam být jasná přidaná hodnota. Něco, co v systému nemám (což už se těžko hledá) nebo to mít alespoň složené způsobem šetřícím práci. Proto ostatně používám Adobe LightRoom. Vše, co umí, lze udělat pomocí OSS nástrojů. Ale má workflow, které mi naprosto vyhovuje, jde mi to pod ruku a ušetřím tím spoustu času. Za tuhle přidanou hodnotu nemám problém zaplatit.
Jejda, ta příhoda se zálohováním je mi nějaká povědomá.. :-D
Podobnost je čistě záměrná :-)