Date: 2022-09-03 20:00:00
From: rpt@desudoli.cz
Subject: OpenBSD IDE
To: dalnopis@desudoli.cz
Tags: technologie OpenBSD psaní
Desc: Trvalo to, ale konečně je hotovo!

OpenBSD IDE

Proč jsem stále nespokojený?

Vyjímečně nemám na mysli politickou, společenskou, ani ekonomickou situaci. Řeč je o vzhledu těchto stránek. Pokud jde o vzhled, nejsem nikdy spokojený. „Víte, to je profese,“ říká postava z filmu Světáci, ztvárněná Oldřichem Novými, poté, co přesně rozpozná charakter vstoupivší „dámy“. V mém případě to v jistém smyslu platí také. Navíc rád zkouším nové nástroje a zkoumám, jakým způsobem uskutečnit své nápady. Protože jsem po většinu času zaměstnaný něčím jiným nebo prostě líný něco v tomto ohledu podnikat, občas je potřeba nechat se něčím popostrčit.

V tomto případě byly spouštěčem dvě věci: nový font, který jsem opravdu chtěl použít, ale ve starém designu nefungoval dobře, a dlouhodobý problém s archivem starších textů. Polovičaté řešení obou problémů, šité velmi horkou jehlou, mě nakonec vyprovokovalo k aktivitě. Takhle to prostě nemohlo zůstat!

Dr. Jekyll a pan Hugo s Lukem Smithem

Kvůli jistým pracovním záležistostem jsem se zabýval generátorem statických stránek Jekyll. Narazil jsem na něj už před lety a pamatoval jsem si, že existuje mrakylión webových předloh pro tento generátor, které s v SSG argotu nazývají themes a slouží jako šablona vzhledu a funkcionality statického webu. Člověk si šablonu, která se mu líbí, stáhne ji, nainstaluje, nastaví a pokud vše správně funguje, může začít psát. Čili „vytvářet obsah“, řečeno moderním, retardovaným slangem. Existují předlohy pro blogy, dokumentaci, portfólia a všelijaké jejich kombinace. Psaní je snadné, základní formátování obstarává Markdown. Pak se pomocí jednoduchého příkazu vygeneruje celý web a je hotovo.

Náhodou jsem po dlouhé době zabloudil na web Luka Smithe a zjistil jsem, že dal dohromady docela podrobný videonávod, jak používat Hugo, což je další populární SSG (static site generator). V mnoha ohledech ho považuju za lepší než Jekyll, ale porovnání obou SSG není cílem tohoto textu.

Po několik večerů jsem do úmoru brouzdal předlohami pro Jekyll i Hugo, jež vytvořili většinou weboví designéři a programátoři, nikoliv typografové. Našel jsem mnoho vcelku pěkných šablon, ale z hlediska grafického a typografického žádnou zcela uspokojivou. Za esteticky zdařilé považuju theme Marat, které se inspiruje starými novinami vydávanými J. P. Maratem za Francouzské revoluce. Právě tady jsem narazil na tuto krásnou renesanční antikvu s názvem IM Fell, o které ještě bude řeč. Naneštěstí pro účely blogu, tedy z hlediska funcionality, je Marat úplně k ničemu.

Mezi šablonami pro Hugo jsem zase našel TeXify napodobující estetiku tiskovin sázených v Texu či Latexu. Rozhodl jsem se použít toto theme a dokonce jsem předělal i podstatnou část svých textů do formátu pro Hugo, ale nakonec jsem i od toho upustil, neboť to stále nebylo ono. Z funkčního hlediska jsem žádný problém neměl, mé výhrady byly spíše estetické.

Ideální funkcionalita

Jaká vlastně má být ideální funkcionalita tohoto blogu?

Blog je forma webových stránek, která se skládá z jednotlivých textů, každý na samostatné webové stránce, a indexové stránky obsahující časově řazený seznam odkazů na tyto texty, případně krátké upoutávky na ně, což je případ tohoto blogu. To je základní varianta.

Jak čas plyne a počet blogpostů se neustále zvyšuje, vzniká potřeba tuto jednoduchou strukturu dále rozdělit. Je-li seznam blogpostů příliš dlouhý na skrolování, je možné vytvořit samostatné archivy pro každý rok nebo alespoň vygenerovat úspornější seznam, což je varianta, kterou jsem zvolil.

Dále je vhodné texty otagovat nebo uspořádat do kategorií. Mezi oběma způsoby není zásadní rozdíl, kategorie a tagy jsou v podstatě totéž. Kategorie jsou možná striktnější, pokud jde o počet a řazení. Za ideální považuju zařadit text do jedné kategorie, zatímco s tagy lze zacházet daleko liberálněji, ale to je spíše arbitrární pravidlo. Nakonec jsem zvolil méně striktní přístup: počet tagů/kategorií omezený na cca 35 obecných okruhů, přičemž další přidávám jen po zralé úvaze, ale články označuju více než jedním tagem.

U většího množství textů je lepší, aby tagy odkazovaly na samostatné stránky se seznamem článků zařazených do dané kategorie. Stejnou práci může dělat také tag cloud nebo jiná samostatná stránka obsahující pro změnu seznam tagů. Řešení tagového mraku jsem našel v odkazu níže, ale nakonec jsem se přiklonil k první variantě, tedy klikacím tagům. O indexu či archivu tagů, tedy jakémsi hubu, odkud by se odkazovalo na jednotlivé kategorie, zatím neuvažuju.

Ideální vzhled

Webová stránka má oproti knižní či časopisecké stránce jisté zvláštnosti, ale ne takové, aby webdesignér zcela opustil osvědčené typografické principy.

O vzhledu tiskoviny či webové stránky rozhoduje hlavně použité písmo. Renesanční antikva IM Fell, kterou jsem po delším úsilí našel i ve verzi s českými znaky, uspokojuje mé (nijak sofistikované) estetické požadavky a zároveň vyhovuje cílům a tónu mého blogu. Podle autora fontu jde o kopii písma použitého v historických anglických knihách. Existuje v normálním řezu, v kurzívě a v kapitálkách. Nemá tedy tučný řez, ale kapitálky ho docela zajímavým způsobem nahrazují.

Shodou okolností jednoduchost, prostor a konzervatismus patří nejen do základního programu internetové kontrarevoluce, ale také mezi osvědčené typografické zásady. V tomto ohledu jsem narazil na nečekaného spojence.

Tufte a filozofie designu

Edward Tufte je učenec, který se zabývá otázkami informačního designu a vizualizace dat a v podstatě se, dle mého soudu, příliš neodchyluje od výše uvedených zásad. Zavrhuje přehnané dekorace textu a z jeho dílny pochází výraz jako poměr dat a barvy. Preferuje ilustrace bohaté na data.

Z typografického hlediska to znamená šetřit kurzívou či tučným řezem. Používat maximálně dvě úrovně titulků, ne více. Namísto poznámek pod čarou používat marginálie, poznámky po straně textového bloku. Tento bod mi připadá obzvlášť zajímavý pro webový design.

Ze stejných důvodů, a to je mi sympatické, zavrhuje ET powerpointové prezentace. Podle něj powerpointová prezentace neinformuje, ale přesvědčuje. Zjednodušuje myšlení tím, že přeměňuje příběhy do seznamu nesouvisejících bodů, čímž vytváří falešnou fasádu objektivity a neutrality. Místo powerpointu navrhoval Tufte krátkou zprávu, se kterou se seznámí účastníci mítinku v prvních 5 až 10 minutách a následně diskutují o jejím obsahu.

Na základě těchto zásad navrhl Tufte typografický design, který pak hojně využíval ve vlastních publikacích. Tento design časem získal svůj webový protějšek ve formě Tufte CSS.

Vzhled tohoto blogu i webu Údolí děsu vychází z Tufte CSS s drobnými změnami. Nahoře přibyla nenápadná navigace blogu, dole footer a vlevo se nachází skrytá navigace s odkazy mimo blog. Nic z toho, jak doufám, nenarušuje čistý vzhled.

Volba nástrojů

Z titulku vyplývá, že své webové stránky i blog Dálnopis generuju pomocí nástrojů OpenBSD. Proč ne Hugo nebo Jekyll? Koneckonců Tufte existuje i jako šablona pro Hugo.

Hugo zcela jistě není špatná volba a Luke Smith odvedl dobrou práci při jeho prezentaci. Hugo je poměrně sofistikovaný nástroj s mnoha možnostmi, ale připadalo mi lepší pokusit se využít všech možností, které nabízí software, který už znám a používám, než se učit software nový. Dosáhnu s jeho pomocí podobných výsledků jako s Hugem?

Hugo jako nástroj sice zapadá do mého kontrarevolučního konceptu, ale jako správný kontrarevolucionář jsem si musel nasadit laťku výše a ideálně využívat pouze nástroje, které nabízí samotný systém. Jinými slovy jako Unixman chci využít OpenBSD jako IDE, tedy integrované vývojářské prostředí, neboť Unix byl v podstatě jako IDE navržen.

Staří známí

Znovu se, prosím, seznamte se dvěma nástroji z dílny programátora a potápěče jménem Kristaps Dzonsons. Jde o lowdown(1) a sblg(1). První slouží ke konverzi Markdownu do mnoha dalších formátů, včetně HTML. Druhý pak generuje blog ze zdrojových souborů XML. Na případnou námitku, že nejde o nástroje základního systému, odpovídám následujícím způsobem:

  1. skutečně nejde o nástroje základního systému, ale jsou napsané jedním z vývojářů OpenBSD, takže dokonale zapadají do jeho ekosystému,
  2. což v mých očích vyhovuje stanovené podmínce, neboť můj purismus má své hranice.

Lowdown(1) dělá otravnou práci převodu MD do XML, takže můžu pohodlně psát v tomto jednoduchém markupu. Výsledné XML je vlastně HTML snippet, ve kterém dělám ještě drobné úpravy ručně. Tufte CSS obsahuje některé prvky, které lowdown(1) neumí vygenerovat, např. sidenotes. To lze teoreticky vyřešit skriptem, ale zatím to dělám ručně. Do budoucna se uvidí.

Sblg(1) dělá hlavní „heavy lifting“ a tím je generování HTML stránek pro blogposty, index, stránky pro jednotlivé kategorie a archiv. Ač na to nevypadá, sblg(1) je poměrně sofistikovaný a skýtá mnohé možnosti.

Největší problém spočíval v tom ohnout lowdown(1) a především sblg(1), aby dělaly to, co potřebuju. K tomu slouží pomocné skripty v ksh(1) a make(1). Fungují jako lepidlo, které vše váže do jednoho hladkého procesu. Příkaz `make` následně vygeneruje kompletní web.

Nebylo by jednodušší napsat pouze shellové skripty, které udělají přesně jenom to, co potřebuju?

Je to možné. Flexibilita by patrně byla větší a výsledek lépe ušitý na míru, ale nepovažuju se za kdovíjakého skriptéra, takže pokud to jde, využívám nástrojů, které napsal někdo jiný.

Výhody, nevýhody a plány do budoucna

Ještě není vše hotové. Chybí spousta textů z minulých let. Také nefunguje atom feed a automatické generování textů pro gopher a gemini, i když tady nic měnit nehodlám, takže snad využiju existující Makefile.

Za hlavní výhodu pokládám hlubší znalosti fungování sblg(1), blogu, webu, make(1), ksh(1) a OpenBSD jako celku. Z toho plyne větší flexibilita a lepší startovní pozice pro další práci. Za málo peněz hodně muziky.

Mezi hlavní nevýhody patří nutnost upravovat XML ručně. To by se dalo vyřešit v CSS, ale hrozně nerad se hrabu v CSS. Zejména ne v těch, co dělal někdo jiný a fungujou. Kaskádové styly jsou výborný nápad, jehož realizace trpí zbytečnou komplikovaností. Existuje na to výstižné anglické slovo „over-engineered“.

Další nevýhodou je, že se celý web vždy generuje ze všech článků najednou. S rostoucím počtem textů roste i doba generování. Naštěstí nejsem takový grafoman a bude trvat mnoho let, než tato doba překročí únosnou míru.

Do budoucna chci zapracovat na propojení těch procesů, které dosud fungují samostatně. Např. generování blogu je zatím oddělené od generování domovských stránek Údolí děsu. Vylepšování stávajících skriptů je další oblast, které je nutné se věnovat. Zmíněný atom feed, gopher a gemini.

A možná se pustím do studia něčeho komplexnějšího, např. webových aplikací BCHS.

EOF