Kompatibilita 0.9 a 2.0
- David Grudl
- Nette Core | 8227
Jak asi víte, existují na Githubu dvě vývojové větve, 0.9.x a 1.0 (větev master). Za rozdělením stojí především ten důvod, že usilovat a 100% zpětnou kompatibilitu není vždy možné nebo by to stálo moc práce. Proto zpětně nekompatibilní změny patří jen do 1.0. Otázkou je, jak moc velkou „díru“ mezi oběma verzemi si mohu dovolit.
Možné scénáře:
- do 0.9.x pouze bugfixy, vše nové do 1.0
- novinky, které by nenarušily kompatibilitu, backportovat i do 0.9.x
- backportovat i některé nekompatibilní změny, aby se verze přibližovaly
Samozřejmě pro uživatele by bylo ideální, aby aplikace napsaná v 0.9 fungovala bez zásahu i v 1.0, z pohledu mého je ideální scénář a) s tím, že na kompatibilitu se nehraje ;-) Realita je pak taková, že skutečně nemá smysl očekávat, že předchod bude „bez zásahu“, ale měl by být „bezbolestný“. Naopak si myslím, že uživatel ocení, pokud bude bez zásahu přechod třeba z 0.9.5 na 0.9.6.
Tudíž se mi jeví rozumnější scénář a) + semtam trošku b) a začít na wiki vytvářet stránku o tom, v čem se verze liší a jak existující app přepsat z 0.9 na 1.0 (něco jako tohle).
Nedával bych do frameworku OldTřídy jako je třeba OldIdentity, ale tomu, kdo chce novou identitu používat už dnes, bych ji raději nabídl ke stažení s poznámkou „nakopírujte do libs/ a přejmenujte třídu např. na Identity10“. Nebo naopak, kdo chce na 1.0 se starou identitou, dostane ke stažení její kompatibilní verzi.
Podobně je třeba se postavit ke snippetům. Ve verzi 0.9 se používají
zavináče a „staré“ snippety, v 1.0dev existuje dvojtečkový přepínač
mezi „starými“ a „novými“ snippety. Jenže do budoucna chceme
preferovat „nové“ snippety a tedy musí fungovat bez dvojtečky. Než
vymýšlet složité řešení, jak rozlišovat mezi oběma snippety, zdá se mi
jednodušší prostě zavináče a „staré“ snippety v 1.0 zcela zrušit.
A programátor dostane instrukci, že si musí projít šablony a ošetřit
výskyty @{snippet ...}
. (nehledě na to, že „nové“ snippety
fungují stejně trošku jinak).
Vycházím z toho, že 0.9 je zralá verze a není důvod bezhlavě přecházet na 1.0. Naopak nadšenci budou nové projekty stejně vyvíjet na 1.0 a s občasnou nekompatibilitou v nightbuild verzích počítají. Dvě větve proto vnímám jako možnost udělat řadu zásahů, které dříve nebyly kvůli kompatibilitě možné a zároveň záruku, že každý další přechod z 0.9.x na 0.9.y bude poklidný.
- Honza Marek
- Člen | 1664
Jak na tom vůbec jsou nové snippety? Už umí to co staré nebo jejich jedinou přidanou hodnotou je bezzavináčovost?
- Honza Marek
- Člen | 1664
pekelnik napsal(a):
Honza Marek napsal(a):
Jak na tom vůbec jsou nové snippety? Už umí to co staré nebo jejich jedinou přidanou hodnotou je bezzavináčovost?
jako treba ajax?
Jako třeba:
{foreach $novinky as $novinka}
{snippet novinka$novinka->id}
{if $editovanaNovinka == $novinka->id}
{widget editovaciFormularNovinky}
{else}
<h2>{$novinka->name}</h2>
<p>{$novinka->text}</p>
<p><a href="{link editujNovinku! $novinka->id}">Upravit</a></p>
{/if}
{/snippet}
{/foreach}
- Ondřej Brejla
- Člen | 746
Já jsem taky pro a, pokud tedy bude někde hezky popsáno co a jak pozměnit|upravit pokud budu chtít přejít z 0.9.x na 1.0.x ;-)
- Jan Tvrdík
- Nette guru | 2595
A + ve vybraných situacích B.
Uvítal bych dokumentaci k novým snippetům.
- Karel Klíma
- Člen | 31
Hlasuji také pro A.
Důvody:
- Většina lidí používající Nette Framework se angažůjí (pasivně či aktivně) na tomto fóru, mají tudíž přehled o novinkách a aplikace průběžně upravují.
- Pokud má někdo hotový web/aplikaci na verzi 0.9, tak pravděpodobně nebude upgradovat framework na verzi 1.0 – proč taky, když daný stav funguje? Vzhledem k tomu, že je Nette Framework od základu dobře napsaný a bugů obsahuje minimum (pokud vůbec), není důvod bezhlavě přecházet na novou verzi.
- Zajištění zpětné kombatibility bere spoustu času, zdrojů a zvětšuje kód frameworku. A lidi to neocení.
- Patrik Votoček
- Člen | 2221
z 1.0 bych všechno co jenom náznakem připomíná zpětnou kompatabilitu výházet. Protože jinak z toho bude vězeňská koule min po dobu existence 1.x . (Což může být i pár let)
- David Grudl
- Nette Core | 8227
Díky za reakce, jsem rád, že to vidíme stejně. Stránka popisující změny 0.9 → 1.0 vznikne tady
- v6ak
- Člen | 206
Ve chvíli, kdy člověk má nějakou aplikaci na 0.9 a dále ji rozvíjí se může stát, že na 1.0 přecházet nechce, ale zároveň bude chtít nějakou novou vlastnost 1.0. Backporty mohou být někdy otravné, ale pokud to zabere minimum času (např. jen přidat třídu), pak to může být v takovýchto případech užitečné. To je IMHO argument pro občasné b).
- Ondřej Mirtes
- Člen | 1536
Já myslím, že nové snippety nejsou ještě plně funkční (např. uvnitř šablon komponent, nebo když člověk použije {extends} makro s „mezišablonou“).
- Honza Kuchař
- Člen | 1662
Ondřej Mirtes napsal(a):
Já myslím, že nové snippety nejsou ještě plně funkční (např. uvnitř šablon komponent, nebo když člověk použije {extends} makro s „mezišablonou“).
Máš recht, ještě to má mouchy. Ale taky by mě zajímalo, jak to funguje. :) (a v kódu se mi to zkoumat nechce)