Strach o budoucí vývoj Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Ondřej Mirtes
Člen | 1536
+
0
-

Současné řádění se zpětnou nekompatibilitou ve mě vyvolává strach o můj oblíbený framework. Bojím se, že to Nette zabije.

S tím, jak se objevila verze 2 a řeklo se, že můžeme zpětnou kompatibilitu hodit za hlavu, se vynořila spousta zbytečných změn. Sám jsem v posledních dnech převáděl náš firemní kód, který byl kompatibilní se srpnovou verzí, na současnou, a byla to fuška a úpravy rozprostřené všude po kódu. Samozřejmě, můžeme zůstat na staré verzi a novou použít až pro nové projekty, ale nová verze obsahuje featury a bugfixy, které rádi využijeme všude.

Vzpomínám si, jak se dříve řešily tyto změny – při přejmenování metody byla ještě dlouho k dispozici ta původní, případně pomalu a plíživě začala hlásit deprecated warning, který šel vypnout. I jednoduché změny, které si v aspoň trochu slušně napsané aplikaci vyžádaly změnu na jednom místě, byly prováděny opatrně a s rozmyslem.

Jasně, změny je potřeba dělat, ale neuškodilo by, pokud by byly po nějaký čas zpětně kompatibilní. Skutečně nevím, proč $presenter->terminate() musí vyvolávat trigger_error a buzerovat tak programátora, aby prošel celou svojí aplikaci a všechny výskyty přepsal na sendResponse(). Přitom zpětná kompatibilita by nikomu neuškodila.

Dříve jsem všechny změny stíhal a byl jsem schopen tazateli okamžitě poradit, co s danou chybou způsobenou updatem dělat. Současné tempo je tak zběsilé, že ani já, který mám v RSS repozitář Nette, jsem nebyl schopný se ve změnách orientovat. Natož někdo, kdo vývoj sleduje jen okrajově, nebo je „pouhý“ uživatel frameworku a nepřispívá (ať už radami nebo dotazy) na fóru.

Tím nechci nikoho kárat, jen jsem chtěl napsat, čeho jsem si všimnul a čemu je možná potřeba učinit přítrž. S blížící se Symfony 2, její podobností (při webexpo přednášce jsem měl pocit, že se dívám jen na trochu ukecanější Nette) a vyspělostí v některých ohledech (testování controllerů, dependency injection) je potřeba si fakt dát pozor, abychom Nette nepotopili.

P. S.: Ano, opravdu tenhle post píše ten, který navrhoval zrušení properties ;)

sodae
Nette Evangelist | 250
+
0
-

Ondřeji, z části s tebou souhlasím.

Můj postoj k problému:

Když jsem v Nette začínal, bylo malé, chytré a dobře se s ním vyšlo po updatu. Nyní pociťuji takové náznaky, že Davidovi se zalíbila myšlenka, jak se vyvíjí Symfony 2, či Doctrine 2 (velké rozdíly od předchozí verze [1]). Chápu, že Nette je živý framework, mění se. Otázka je, k lepšímu, či k horšímu. Mění se takovým tempem, že už vytváříme „druhý“ framework.

Implementujeme nové vlastnosti do Nette 2, či jej zevnitř měníme, ale neuvědomujeme si, že Nette bylo postaveno také s vlastností zpětné kompatibility.

Podstatě není už co řešit. Nette 2 má být opravdu odlišné od „nulky“, můžeme Nette 2 brát jako „druhý“ framework (ve stylu Symfony/Doctrine 1 vs 2), a musíme přijmout to, že Nette 2 není až takové Nette (0), ale je opravdu jiné. Přeci jen, když už se začalo, tak se to dokončí.

--Budu rád a určitě mnoho lidí to ocení, že až vyjde Nette 2 „final“, půjde to zase ve šlépějích Nette „nula“, pěkně pomaličku s BC.--

David Grudl
Nette Core | 8082
+
0
-

Pokud to lze, držím v maximální míře zpětnou kompatibilitu, navzdory všeobecnému nadšení, že by tomu tak být nemuselo. Držím ji třeba i tím, že $presenter->terminate() upozorní na změnu chování této funkce a přitom vyvolá funkčnost původní. Nevím, jak lépe by to šlo dělat.

Když zmiňuješ Symfony – tam došlo k totálnímu řezu bez zachování jakékoliv kompatibility. V případě Nette je naopak běžné, že migrace projektu z 0.9 pro PHP 5.2 na 2.0 pro PHP 5.3 si vyžádá minimum úprav. Nesrovnatelné.

Takže se bavme konkrétně, na jaké komplikace při převodu jsi narazil, skutečně mě to zajímá a velmi rád bych tyto zkušenosti buď promítl do frameworku, ještě lépe dostal do stránky o migraci. Nechceš si ji vzít pod palec? (narovinu: sám ji psát fakt nebudu)

David Grudl
Nette Core | 8082
+
0
-

sodae napsal(a):

…Nyní pociťuji takové náznaky, že Davidovi se zalíbila myšlenka, jak se vyvíjí Symfony 2, či Doctrine 2

No tak to ani náhodou.

Patrik Votoček
Člen | 2221
+
0
-

já takový problém nepozoruju (i když bych měl protože jedu v Nette\Debug::$strictMode = TRUE; – trigger_error == ladenka). Ono je to možná tím že si neuvědomuješ nebo možná uvědomuješ ale i tak se ti to nezdá. Ale používáme živou verzi Nette takže s tím že se sem tam někde mění API musíme počítat. (nicméně i tak nepozoruji to co ty tu popisuješ – možná proto protože Nette aktualizuju každý týden).