Ačkoliv Nette původně vzniklo jako monolit, tedy jedna velká knihovna,
v roce 2014 se rozdělilo do 20 nezávislých knihoven. Mohlo se tak stát
díky nástupu Composeru. Z toho kroku uživatelé stále více profitují.
Řada komponent se dnes používá zcela samostatně a někteří programátoři
ani netuší, že jde o součást frameworku. Příkladem může být třeba
generátor PHP kódu Nette PhpGenerator nebo pošťák Nette Mail.
A samozřejmě sem patří zásadní knihovny jako Latte a Tracy.
Každý ve svém domečku
Dnes má každá knihovna svůj vlastní repozitář, issue tracker, pull
requesty, release notes atd. Jde o přirozený stav, jako weby sídlí na
vlastní doméně nebo pro každý projekt máte na disku vlastní adresář.
Naopak tracker, ve kterém se míchají issues týkající se kupříkladu
vývoje CSS preprocesoru s psaním dokumentace JSON parseru, a to jen proto,
že oba projekty kdysi založil stejný programátor, představuje esenci
nepoužitelnosti jak pro uživatele, tak pro vývojáře.
A také má každá knihovna svůj vlastní životní cyklus. Jsou knihovny,
které žijí velmi aktivně (v roce 2020 vyšly 4 zásadní verze Latte),
ale také knihovny hotové, které se prakticky už jen aktualizují pro nové
verze PHP (např. RobotLoader). To je opět přirozený stav věcí.
Naopak by bylo násilné životní cykly spojovat. S každou verzí
některé z knihoven Nette otagovat novou verzi u zmíněného RobotLoaderu.
Časem by vznikly „velké“ verze RobotLoaderu, které by se od sebe
nelišily ani komitem. Bylo by to nejen proti zdravému rozumu, ale také proti
smyslu verzování. Antisemantické verzování.
Spravovat různé knihovny v jednom repozitáři s jedním issues
trackerem a verzováním je jako vařit několik různých jídel
v jednom hrnci.
Společná linie
Svobodná existence jednotlivých knihoven znamená, že neexistuje jedna
společná verze. Nejnovější PhpGenerator nese číslo 3.5, zatímco nové
Nette Schema teprve 1.1. Co potom vlastně znamená, že vyšla nová verze
Nette? A jak na takovou verzi aktualizovat?
Knihovnou, která má v Nette výsadní postavení, je Nette Application.
Pokud řeknete, že používáte Nette Framework, myslíte tím primárně
používání presenterů a tedy Application. A když nyní vyšla její verze
3.1, hovoříme také o vydání Nette 3.1. Které samozřejmě zahrnuje
volitelné ostatní kompatibilní balíčky, které ale pochopitelně mají
různé verze. To, že jsou spolu kompatibilní, není dáno stejným
číslem verze, ale parametry v souborech composer.json
.
U softwarových balíků, kde chybí hegemonní knihovna, lze používat
letopočet. Dělá to tak třeba Adobe. Takže Adobe Creative Cloud
2021 zahrnuje Photoshop 22, Illustrator 25, Premiere Pro 14.7 atd. Pokud jsem
uživatelem konkrétního produktu, samozřejmě sleduji jeho vlastní vývoj a
verzování, pokud používám celý balík, jednotlivé verze přestávají
hrát roli. Stejně tak se na to dá dívat v případě Nette.
Jak instalovat aktualizace?
Verze uvedené v souboru composer.json
zaktualizujete na
nejnovější pomocí příkazu composer require
. A nemusíte
vůbec pátrat po číslech.
Pokud používáte metabalík nette/nette
, pomocí
composer require nette/nette
zaktualizujete verzi v
composer.json
na ^3.1
a nainstalují se všechny
další knihovny. Pokud máte v Composeru výčet jednotlivých balíčků,
což je asi častější případ, je potřeba je všechny uvést
v příkazovém řádku:
composer require nette/application nette/bootstrap nette/forms latte/latte tracy/tracy ...
Což je poněkud nepraktické. Než na to bude mít Composer příkaz,
použijte jednoduchý skript Composer
Frontline, který to udělá za vás:
php composer-frontline.php
Dokonce jej můžete použít k aktualizaci jiných knihoven, když jako
parametr předáte masku: composer-frontline.php doctrine/*
.
Nová verze Nette 3.1 skutečně právě vyšla, takže velmi brzy
očekávejte zajímavé články a návod k migraci.
Komentáře (RSS)
Zrovna jsem nad tím poslední dobou přemýšlel. 👍
Chcete-li odeslat komentář, přihlaste se